Views
No views yet

mx.quantize affine, prestacked switch_mlp.mx.quantize, group_size=128):
down_proj: 4-bit (output enters residual stream — more sensitive)gate_proj: 2-bit + AWQ pre-scaling (gated activation)up_proj: 2-bit + AWQ pre-scaling (gated activation)q/k/v/o_proj: 8-bit affineblock_sparse_moe.switch_mlp.{gate,up,down}_proj of shape
(n_experts, out, in_packed) — instant cold load, no runtime sidecar.down_proj's output enters the residual stream and accumulates across
62 layers — quantization noise compounds. gate_proj and up_proj
enter through SwiGLU's multiplicative gate (silu(gate) × up) which
dampens noise. Spending 4 bits on down and 2 bits on gate/up gives
quality close to full-4-bit at considerably smaller size.gate_proj, up_proj):(hidden,) scale: s = clip((max(|x|) + eps)^0.5, min=1.0)
(16 calibration prompts × ≤256 tokens; floor=1.0 prevents
inverse-fold from amplifying dead channels)W' = W * s[None, None, :]post_attention_layernorm.weight /= sdown_proj does not need AWQ — it stays at 4-bit.mlx-lm (no JANG runtime required):1from mlx_lm import load, generate
2model, tok = load("JANGQ-AI/MiniMax-M2.7-JANG_K")
3
4messages = [{"role": "user", "content": "What is the capital of France?"}]
5prompt = tok.apply_chat_template(messages, add_generation_prompt=True,
6 tokenize=False)
7print(generate(model, tok, prompt=prompt, max_tokens=128))<think>\n after assistant prefix)qwen3 (extracts <think>...</think> blocks)minimax1prompt = tok.apply_chat_template(messages, add_generation_prompt=True,
2 tokenize=False, enable_thinking=False)| Variant | Routed bits | Bundle size | Loader |
|---|---|---|---|
MiniMax-M2.7-JANGTQ | 2-bit codebook | 47 GB | jang_tools.load_jangtq |
MiniMax-M2.7-JANGTQ_K | mixed 2/4 codebook | 74 GB | jang_tools.load_jangtq |
MiniMax-M2.7-JANG_K (this) | mixed 2/4 affine + AWQ | 86 GB | stock mlx_lm |