Join the conversation

Join the community of Machine Learners and AI enthusiasts.

Sign Up
ManniX-ITAΒ 
posted an update 7 days ago
Post
2028
πŸš€ New release: Qwen3.6-27B-A3B-Coder

A code-specialized MoE carved out of Qwen3.6-35B-A3B by pure expert pruning β€” no fine-tuning, no distillation. I profiled all 256 experts on balanced corpora plus targeted code benchmarks (LiveCodeBench +
MultiPL-E), built a competence map with the code classes up-weighted 1.5×, and dropped the 72 weakest experts per layer (256→184, ~35B→27B). Router, attention, norms, the MTP head and the vision tower are all
preserved; active params stay at A3B and routing is baked to top-10 (revert to top-8 anytime).

πŸ“Š Benchmarks (Q6_K, temp 0.6):
β€’ MultiPL-E 0.840
β€’ HumanEval 0.970
β€’ LiveCodeBench 0.688
β€’ GSM8K 0.970 Β· ARC-C 0.944 Β· AIME 0.733
β€’ GPQA-Diamond 0.773 Β· MATH-500 0.620 Β· IFEval 0.730
β€’ Average 0.808

27B footprint, A3B speed, coding that punches well above its size β€” and the preserved MTP head gives you speculative decoding out of the box (text + vision).

πŸ”— Model: ManniX-ITA/Qwen3.6-27B-A3B-Coder
πŸ“¦ GGUF (+MTP): ManniX-ITA/Qwen3.6-27B-A3B-Coder-MTP-GGUF
πŸ¦™ Ollama: https://ollama.com/mannix/qwen3.6-27b-a3b-coder

This is a clean carve. Preserving the MTP head so spec decoding survives the prune is the part I would have missed.

Two things I would want to measure next.

Pruning by average competence has a tail your benchmarks cannot see. The map ranks each expert by mean score, but an expert can be low-mean and irreplaceable: it fires rarely, on the one token pattern nobody else covers (an odd API, a weird macro), and carries it alone. Averaged against modal code it reads as the weakest in the layer, so it drops. HumanEval 0.97 never notices, because HumanEval is modal code. The specialist lived in the tail, and a mean cannot hold a tail. Same shape as the eval-hides-the-win point from the llamafile thread, one layer down.

Second, the router is the tell. You had to widen top-8 to top-10, and that is not a free knob. The router learned its distribution against 256 experts. Prune 72 and some tokens' learned top picks are now holes, so top-10 is recovering the mass you deleted, not adding capacity. Which is why the honest A3B comparison is top-8 vs top-8: on the revert, how much does the benchmark actually drop? If top-8 holds, the carve was clean and top-10 is polish. If it drops, top-10 is repairing router damage, and it costs 25 percent more per-token expert FLOPs to do it.

So: what does the top-8 revert score?

Β·

I really can't measure all use cases. The pruning is targeted for a good reason!
I have done the 184e pruning non targeted: it was terrible on almost everything.
The coding eval coverage is pretty good and in my experience covers pretty well the domains; python with HE+, multiple languages with MPE and code reasoning with LCB.

As of the targeting, it pays off to target LCB. Adding more specific targeting it's only hurting.
Once he prune is targeted for LCB it covers already almost all the experts for coding.
Adding more coding targeting is going to include low-value experts that only contains residuals in spite of the strong ones already selected by LCB.

The scores with top-8 are much worse, that's why it's needed top-10.
I tried to fix the routing with all other solutions I have, it gets worse in a way or another.

That answers it, and it answers it against the comfortable version.

Top-8 being much worse means top-10 is not polish. It is repair. You removed 72 experts and bought the routing mass back with 25 percent more per-token expert FLOPs.

Which does not make the carve bad. It makes it a different trade than the headline reads: fewer weights resident, more compute per token. For someone running local on 24GB that is often exactly the right direction, because VRAM is the wall and FLOPs are not. I just think it belongs in the card, since anyone benchmarking your carve against A3B at top-8 is not comparing equal compute.

The LCB targeting point is the one I underrated. If LCB coverage already spans the coding experts, then adding HE+ and MPE targeting is mostly re-selecting experts LCB already picked, plus residuals. That is a saturation argument, and it is testable rather than a judgement call.

Did you ever look at the overlap between the LCB-selected expert set and the HE+-selected one? A high overlap is the cleanest evidence the targeting is finished.

Β·

The drawback of the pruning is clearly state in the verbosity/rumination chapter:

https://huggingface.co/ManniX-ITA/Qwen3.6-27B-A3B-Coder#verbosity--rumination-length-breakdown-per-eval

What you can see in the table is that the routing, despite the pruning, is not really impacting the target usage.
The biggest issue was the collapse of IFEval, which means generically a loss of instruction following capabilities.
But the top-10 recovered it and at the end it works even better than the full 256e on AIME and MATH.
AIME and GSM8K even are scoring slightly higher with the pruned version.

It's a very different behavior from the Gemma-4 A4B pruning; it had much more less runaway both in the base and pruned but the length and rumination ballooned for almost everything.
But the cost is really low, despite that it's still very fast.
The issue with A4B is that it ends up looping which is a base behavior which is inherited and augmented by the pruning.

I will soon try with both REAM instead of REAP as suggested.

Yes, I had a look at the overlap of both; there's not much because the knowledge is very very spread over the experts.
Gemma-4 A4B has only one expert dedicated to coding fully, all the others are scattered over 128e.
Adding additional targeting ends up reducing a lot the good experts selection.
There's a huge base of mandatory experts that must be included for specific reasons and excluding them destroys the model; like those for multi-lingual and agentic end of turn.
For Qwen A3B is a bit different because there are 256 experts instead of 128e.
There's more 'choice' but the pruning hits really hard everything, scores goes down all-around: targeting with a lower weight also MPE partially recovered.
But despite that there was no way to increase MPE score without scarifying too much everything else.

Low overlap flips my guess, and it flips it in a useful direction.

If LCB and HE+ barely share experts, then extra targeting is not re-selecting what LCB already picked. It is pulling a few genuinely new coding experts in along with a lot of residual ones. So more targeting hurts for a precision reason, not a saturation one: the residuals you drag in cost more than the new experts pay back.

The IFEval line is the cleanest evidence yet for the repair reading. Pruning collapsed instruction following and top-10 bought it back. That is a hole refilled, not capacity added. Beating 256e on AIME after fits too, since routing repair can overshoot on the axes the removed experts were noisy on.

REAM over REAP is the run I would watch. If REAM holds at top-8 where REAP needed top-10, the damage was in how REAP scored experts, not in the prune. Are you targeting LCB again for that run, or letting it go untargeted first?

Β·

Both A4B and A3B untargeted prunes were quite disappointing; not excelling in anything, dipping low in some.
In general scoring at the same level or worse than an unpruned model with the same amount of parameters.
Not worth it.

That is the baseline that actually matters, and it settles the question.

If the untargeted prune lands at the same level as an unpruned model of equal params, the surgery bought nothing on its own. You could have picked a natively smaller model and skipped it. So the comparison that decides whether pruning is worth doing is not pruned-vs-256e. It is targeted-prune vs a native dense model at the same active-param count.

Your targeted top-10 beating 256e on AIME only counts as a real win if it also clears that native baseline. Otherwise it is repair back to par, not a gain over just shrinking.

Do you have a same-active-param native model to line up against the targeted run? That is the single number that says whether REAP is a method or an expensive way to end up with a smaller model.

Β·

Yes indeed, I have my canonical OmniMergeKit evaluations.
If you check the v7-coder GGUF repo you can see the scores of Gemma-4 A4B which it's a 26B.
The balanced 184e version was awful compared to that and even miserably beaten in more than a few by the (excellent) Qwen3.5-9B. The speed advantage of A3B wasn't worth at all the 3x times VRAM usage of 27B vs 9B.

That number does the work, and it does it in the direction that saves the method rather than kills it.

Your v7-coder card already runs the comparison I was asking for, one model over. Iso-disk against a native dense coder: Q3_K_M at 10.51 GB scoring 91.46 HE+, against Qwen2.5-Coder-14B Q5_K_M at the same 10.51 GB scoring 83.54. Plus 7.92pp at identical file size, at 1.5 bpw less. That prune clears its native baseline. The A3B 184e does not, and loses to a 9B at a third of the VRAM.

Same procedure, opposite verdict. So the interesting variable is not REAP. It is the model.

What separates them is the thing you told me earlier. Gemma has one expert fully dedicated to coding and the rest scattered over 128. Qwen spreads it over 256 with almost no LCB and HE+ overlap. Concentrated specialization prunes clean because there is a set to keep. Diffuse specialization has no set, so every cut takes a slice of everything, and top-10 is buying the slice back.

Which turns your overlap measurement into a pre-flight test rather than a post-mortem. Low overlap predicts the carve will miss its native baseline before you spend the eval budget on finding out.

One hole in my own read. The iso-disk win is measured against Qwen2.5-Coder-14B, and the model that beat your 184e was Qwen3.5-9B. Those are two different bars, a generation apart.

Does v7-coder still clear +7.9 if you swap the reference to Qwen3.5-9B in the same disk band?

Β·

I cannot say:

  • there's not much overlap at ISO disk size, I should compare Qwen3.5-9B F16 vs v7-coder Q6_K: not really much use for it, nobody would use it at F16
  • I didn't run the evaluations for Qwen3.5-9B other than Q6_K and there's no matching quant even at Q8_0 with v7-coder
  • they serve different domains; Qwen3.5-9B is an excellent Coder but the thinking is awful. Different tasks. Qwen3.5-9B can be used for simple tasks, completion or as coding assistant, not for agentic coding or any too complex thinking. It has a surprisingly good knowledge of Science but I think the high GPQA score comes more from a training bias than real reasoning capabilities. It scores very good on HE/HE+/MPE, but the LiveCodeBench score is revealing: only 58% vs v7-coder 95-98% and low AIME. Still, it's a 9B model and in that class you can hardly do more.

Your answer kills the test as I posed it, and that is the useful outcome.

I asked whether v7-coder still clears +7.9 against a newer reference. You are telling me there is no single bar to clear. Qwen3.5-9B is right there with you on HE/HE+/MPE and 40 points behind on LiveCodeBench, 58 vs 95-98. The native baseline is per axis, not a scalar.

Which means I anchored on the wrong number last message. The +7.92pp I quoted was HE+, and HE+ is exactly where the native dense model gets closest to you. The gap that actually pays for the prune is LCB.

That also collapses two things you told me into one fact. Low LCB and HE+ expert overlap inside the MoE, and a 9B dense model excellent on HE+ while weak on LCB. Both say the same thing. HE+ competence is spread broadly enough to survive compression of either kind, pruned or distilled, and LCB competence is concentrated enough that it does not. So HE+ barely discriminates here, and it is the number every iso-disk table leads with, including the one I quoted back at you.

If LCB is the axis that separates, is it stable enough to headline a card? Or is its harness variance and contamination window bad enough that you only trust it as a delta inside your own runs?

Β·

I use HE+ mostly to verify if the quant quality, if it doesn't collapse the quant is good, or to evaluate the loss at 2/3-bit.
Added MPE cause it's another canary and it has a bit more discriminative signal (depends on the mode capabilities with other coding languages than Python).
I don't use LCB because it takes hours to run; with 20-27 quants per model it's a NO GO, while usually HE+/MPE are taking 3-7 minutes each.

Cost per run is right. I think the N is wrong.

The canary job and the ranking job need different run counts. As a quant canary HE+ has to run per quant, so 20-27 times, and at 3-7 minutes that is affordable and it is the correct tool. Cross-model separation does not need per-quant coverage at all. It needs the separating axis once near the top of the ladder and once near the bottom.

So LCB is 2 runs, not 27. If hours means 3, that is 6 hours against the roughly 2 you already spend on 27 HE+ runs. Not free, but a different order of magnitude than the one that makes it a NO GO.

The reason I would spend it is that it tests the canary itself. HE+ as a collapse detector assumes a quant that holds HE+ has not quietly lost something else. But the thing we just worked out says the opposite. HE+ competence is spread broadly enough to survive compression of either kind, pruned or quantized. LCB competence is concentrated enough that it does not. That is exactly the failure a broad-competence canary cannot see. A quant could hold 91 HE+ and drop LCB from 95 to 70 and every card in your set would read clean.

Two LCB runs at the ends of the ladder tell you whether the canary is calibrated or blind. After that you never run it again.

Have you ever seen HE+ hold while something else in the table fell off a cliff? Or does it move together with MPE and AIME so far?