library_name: mlx base_model: huihui-ai/Huihui-Qwen3.6-35B-A3B-abliterated tags:
- mlx
- mlx-vlm
- moe
- multimodal
- vision
- abliterated
- uncensored
- basequant-xl
- mtp pipeline_tag: image-text-to-text
leonsarmiento/Huihui-Qwen3.6-35B-A3B-abliterated-6bit-XL-MTP-mlx
⚡ oMLX REQUIRED: These quants are designed to be used with oMLX and they will not work on LM studio. The bundled MTP (Lightning MTP) speculative-decoding heads only execute on oMLX — LM Studio loads the base model but ignores the MTP heads, so the acceleration is lost. For MTP speed, serve this model with oMLX.
This model was converted to MLX format from huihui-ai/Huihui-Qwen3.6-35B-A3B-abliterated using BaseQuant_XL 6/8-bit mixed quantization, with the MTP (Multi-Token Prediction) heads grafted in from the same source repo — huihui-ai preserved Qwen3.6's MTP head through abliteration, so no donor model and no cross-model transplant were needed. The base weights are byte-identical to leonsarmiento/Huihui-Qwen3.6-35B-A3B-abliterated-6bit-XL-mlx, plus 36 grafted language_model.mtp.* tensors (+0.69 GB).
Measured Speed on oMLX (M4 Pro 48GB, Oct 2026)
| Workload (short reasoning/code probes, 3 runs each) | Draft acceptance | tok/cycle | Throughput | vs vanilla |
|---|---|---|---|---|
This build, mtp_enabled: true | 89.1% | 3.05 | 78.6 tok/s (steady) / 75.0 (wall) | +28–34% |
Same build, mtp_enabled: false (vanilla speed) | — | 1.0 | ~58.5 tok/s | baseline |
Acceptance lands 3 points under the vanilla Qwen3.6 graft (92.2%) — exactly what you'd expect from huihui-ai's directional-ablation backbone drift: the MTP head itself is untouched (see below), but the hidden states it drafts from shifted slightly. Still far above the ~64% failure threshold where MoE bundled-MTP stops paying.
Acceptance is content-dependent (measured thoroughly on the Qwen3.6 sibling): templated reasoning drafts at 90%+, long-form prose settles in the low 80s, and the oMLX benchmark's synthetic continuation drafts at only ~67% (bench reports parity). Rule of thumb: prefill/TTFT-bound workloads → use the vanilla build. Decode-heavy workloads (long agentic runs, big generations) → this build.
Why the Heads Work: Preserved, Not Transplanted
huihui-ai's abliteration pipeline modified the backbone but carried the 19 source mtp.* tensors through verbatim — verified byte-identical to Qwen/Qwen3.6-35B-A3B's MTP head (fc.weight, router gate, q_proj: rel-L1 = 0.0000). This build grafts Huihui's own copies (shards 25–26), requantized to match the XL recipe:
Source tensor (mtp.*) | Treatment | Precision |
|---|---|---|
7× norms (input_layernorm, post_attention_layernorm, q_norm, k_norm, norm, pre_fc_norm_embedding, pre_fc_norm_hidden) | +1.0 shift (MLX RMSNorm convention — mtp keys bypass the loader's norm-convention detection) | bf16 |
fc (hidden-state × embedding fusion) | passthrough | bf16 |
layers.0.mlp.gate (router), shared_expert_gate, shared_expert.{up,down}_proj | passthrough (mirrors XL main-layer treatment) | bf16 |
layers.0.self_attn.{q,k,v,o}_proj, shared_expert.gate_proj | affine | 8-bit g64 |
layers.0.mlp.experts.{gate_up,down}_proj (fused, 256 experts) | split rows → switch_mlp.{gate,up,down}_proj | 6-bit g64 |
Split-order verified numerically: reassembling cat([gate, up], axis=rows) reproduces the source fused tensor at rel-L1 0.0240, while the swapped order gives 1.4177 — unambiguous.
Offline verification (9 checks, all PASS): 36/36 expected keys, format: mlx metadata, norms exactly round_bf16(src + 1.0), bf16 passthroughs bit-identical to source, dequant rel-L1 vs source: attention 0.0072–0.0082 (8-bit), experts 0.0244 (6-bit, full-tensor comparison of all 256 experts), config/index parity, base weights untouched.
Coherence with MTP engaged: 15×37 = 555 ✓ (clean decompose-and-verify thinking), palindrome function with tests ✓.
About XL Quantization
BaseQuant_XL is a fully data-agnostic, static quantization. No calibration dataset, no sensitivity analysis, no importance matrix. Precision is allocated purely by architectural role — routing-critical layers get higher precision, bulk expert parameters get lower precision. The result is a transparent, faithful capture of the source model.
Data-dependent calibration quantizations (iMatrix, AWQ, GPTQ, oQ, oQ4e, etc.) use a calibration set to guide bit allocation. This can produce a skewed representation of the model: domains well-represented in the calibration data (English, popular topics, public or leaked benchmarks) are preserved better, while underrepresented domains (non-English languages, niche use cases, your own data) are preserved worse. XL avoids this trade-off entirely — it generalizes honestly because it is never fit to any particular data distribution.
oMLX Setup
mtp_enabled: true— fresh oMLX model entries default tofalseand will silently run at vanilla speed. Set via Admin → model settings, then reload.turboquant_kv_enabled: false— TurboQuant KV cache eliminates the MTP advantage. Keep it off for MTP speed.- Verify engagement in the server log:
MTP path activated (model has mtp_forward)per request, and anMTP[..] finish=line with acceptance stats. mtp_enabledis a live toggle:false+ reload returns this model to exact vanilla speed (verified ~58.5 tok/s, no MTP log line).
Thinking-mode guidance
MTP boosts throughput, but reasoning models control their own output length — faster tokens can mean longer thinking, not faster answers, and the 4-bit family showed a −7pp MATHQA accuracy cost with MTP engaged. For deep thinking sessions, set mtp_enabled: false. For instruct/agentic/coding workloads, leave it on and enjoy the +30% class speedup.
Intelligence Benchmarks
The base weights are bit-identical to Huihui-Qwen3.6-35B-A3B-abliterated-6bit-XL-mlx, so its measured results carry over: 78.8% average instruct (n=50: MMLU 74, MMLU_PRO 66, ARC_CHALLENGE 92, HUMANEVAL 84, MBPP 78) — tied for the best data-agnostic (non-calibrated) Qwen-family result. Full comparison table on the vanilla model card.
This variant adds the draft layer only; it changes nothing about the backbone's intelligence — it changes how fast tokens arrive.
BaseQuant_XL Quantization Strategy
| Bit Depth | Layers | Rationale |
|---|---|---|
| bf16 (unquantized) | mlp.gate (router), shared_expert_gate, lm_head, shared_expert, mtp fc/norms/router/shared paths | Routing decisions and shared computation path |
| 8-bit | embed_tokens, self_attn (full attention), linear_attn (DeltaNet), mtp attention | Every-token layers with moderate sensitivity |
| 6-bit | vision_tower, switch_mlp (routed experts, main + mtp) | Bulk of parameters, 8 of 256 active per token |
- Quantization type: BaseQuant_XL mixed (multimodal, vision preserved) + native MTP graft
- Bits per weight: 6.808 (base) + 0.69 GB MTP
- Total size: 30.60 GB (6 shards)
- Group size: 64
- Method: Custom
quant_predicateviamlx_vlm+ additive graft (base untouched)
Recommended Inference Parameters - Add to Jinja template on LM studio or Chat Template Kwargs on oMLX
Thinking Preserve ({%- set preserve_thinking = true %}):
- General tasks:
temperature=1.0, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=1.5, repetition_penalty=1.0 - Coding tasks:
temperature=0.6, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0
Instruct Mode ({%- set enable_thinking = false -%}):
- General tasks:
temperature=0.7, top_p=0.8, top_k=20, min_p=0.0, presence_penalty=1.5, repetition_penalty=1.0 - Reasoning tasks:
temperature=1.0, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=1.5, repetition_penalty=1.0
Use with mlx
pip install -U mlx-vlm
python -m mlx_vlm.generate --model leonsarmiento/Huihui-Qwen3.6-35B-A3B-abliterated-6bit-XL-MTP-mlx --max-tokens 256 --temperature 0.6 --top-p 0.95 --prompt "Hello"
⚠️ mlx_vlm runs the backbone only — MTP acceleration requires serving with oMLX.
Family
- Huihui-Qwen3.6-35B-A3B-abliterated-6bit-XL-mlx — vanilla (LM Studio compatible)
- Qwen3.6-35B-A3B-6bit-XL-MTP-mlx — the vanilla Qwen3.6 MTP build (full three-regime acceptance analysis)
- Qwen3.6-35B-A3B collection