712 Downloads Updated 1 month ago
ollama run mannix/ornith-1.5-27b-a3b-coderx:Q3_K_M
~27B params · 184 experts (72 dropped/layer) · A3B active · top-8 routing · MTP head + vision tower
A code-targeted expert prune of Ornith-1.5-35B-A3B: the mixture is reduced from 256 experts to 184 per layer (72 dropped, ~35B→27B, still A3B active). Same router, attention, norms, MTP head and vision tower as the base — only the expert keep-set changes. No fine-tuning, no distillation — pure expert selection.
Full model card & methodology: ManniX-ITA/Ornith-1.5-27B-A3B-CoderX (weights) · GGUF repo on Hugging Face.
This is the recommended arm of the pair. Its sibling Coder is the same 184-expert budget and the same competence map without the stability floor — the two differ by exactly 6 experts per layer. CoderX measures better on almost every code and reasoning axis at the same file size.
The 256-expert teacher is profiled per-expert on a balanced corpus to build a competence map, and 72 experts per layer are evicted. Where the plain Coder arm takes the map's ranking directly, this arm adds a REAP stability floor: experts the floor protects are retained even when the map ranks them low. That single change — 6 experts per layer — recovers most of the graduate-science loss (GPQA +4.5pp over Coder) while also improving code. Routing stays native top-8 (expert_used_count = 8).
The -MTP- claim is verified from the shipped file's own metadata: block_count = 41 (40 trunk + 1 MTP), nextn_predict_layers = 1, block 40 present with its nextn.* tensors. Worth stating for this arm specifically — the REAM save path drops the mtp.* block, yielding a GGUF that declares 41 blocks and ships 40. The head was grafted back from the anchor, and those counts are the read-back proof that it stuck.
recommended — temp 0.6 / top-p 0.95 / top-k 20)| Benchmark | base 35B (256e) | Coder (184e) | This model (184e) |
|---|---|---|---|
| GPQA-Diamond (198) | 0.8283 | 0.7677 | 0.8131 |
| AIME (30) | 0.9000 | 0.9000 | 0.9667 ▲ |
| LiveCodeBench v6 (77 hard) | 0.6623 | 0.7273 | 0.7662 ▲ |
| HumanEval (164) | 0.8720 | 0.8902 | 0.8963 ▲ |
| MultiPL-E (300) | 0.8533 | 0.8300 | 0.8367 |
| Mean (11 benches) | 0.8252 | 0.8292 | 0.8386 ▲ |
▲ = beats the full 256-expert teacher. LiveCodeBench +10.4pp, AIME +6.7pp and HumanEval +2.4pp over the teacher at ~28% fewer experts, and it takes the 11-bench mean. The only remaining give-back is MultiPL-E (−1.7pp) and GPQA (−1.5pp) — both far smaller than the plain Coder arm's. This is the best arm of the family on code and the best overall by mean.
tool-eval-bench hardmode (88 scenarios, 176 pts)Benchmarked file is IQ4_XS, served on llama.cpp with MTP speculative decoding. 134.0 ±2.5 of 176, ninth of ten — and this figure is a LOWER BOUND.
One of the five seeds (s42) is graded on 174 points, not 176: scenario TC-05 was dropped by a serving-side infrastructure fault, not a model failure. The cell was quarantined and re-run, the fault reproduced, so it was kept and flagged rather than silently pooled — the tabulated value counts the dropped scenario as 0. Against its Coder sibling (136.8) the two are statistically indistinguishable: the CIs overlap and the ordering is inside the noise. Do not read CoderX as worse than Coder here. The A3B rows it is compared against are Q4_K_M, so part of any cross-row gap is quantisation, not architecture.
Perfect (100%) on Tool Selection, Restraint & Refusal, Toolset Scale and Creative Composition; Structured Reasoning 93.3%. Weakest at Autonomous Planning 56.7%, Context & State 63.0%, Code Patterns 63.3%, Hard Mode 66.3%. 14 safety-critical failures across five seeds.
Every tier is built with an importance matrix, including Q6_K, from this arm's own imatrix — an imatrix cannot be shared between two different expert cuts, so CoderX has a separate one from Coder. Append vision- to any tag for the multimodal tower (e.g. :vision-Q4_K_M). Sizes are GB (bytes ÷ 1e9).
| Tier | Size | Notes |
|---|---|---|
| Q8_0 | 27.91 GB | near-lossless reference |
| Q6_K | 21.57 GB | recommended — this is the eval tier |
| Q5_K_M | 18.73 GB | — |
| Q4_K_M ⭐ | 16.06 GB | the :latest default — fits 24 GB VRAM with context |
| IQ4_XS | 14.22 GB | best size/quality under 15 GB; the tool-calling tier |
| Q3_K_M | 12.72 GB | — |
| Q2_K_L | 10.36 GB | — |
| IQ2_XS | 8.20 GB | smallest; expect real degradation |
ollama run mannix/ornith-1.5-27b-a3b-coderx # :latest = Q4_K_M, 16.06 GB
ollama run mannix/ornith-1.5-27b-a3b-coderx:Q6_K # eval tier
ollama run mannix/ornith-1.5-27b-a3b-coderx:vision-Q4_K_M # + vision tower (multimodal)
Every tag ships these defaults baked in: temperature 1, top_p 0.95, top_k 20, min_p 0, repeat_penalty 1, presence_penalty 1.5, num_ctx 32768, draft_num_predict 3. The published evaluation above used temperature 0.6 with the same top-p/top-k; set temperature 0.6 if you want to reproduce those numbers. Greedy is not viable on this family.
ollama has no reasoning-budget flag, so
num_ctxis what bounds the thinking phase there — keep it well above your prompt+output budget. On LiveCodeBench the median generation is ~12.7k tokens but 5 of 77 problems run to a 32,768-token ceiling. If you care about worst-case latency, bound it at serve time rather than hoping for a short draw.
draft_num_predict 3 is baked in), alongside the vision- mmproj tower.builds/ornith-1.5-9b (3,079 docs · 4,958,490 tokens · all 9,686 chunks · --parse-special on), with the tokenizer hash gated against the build manifest.Links: HF · weights + full card · HF · GGUF · Coder sibling
Apache-2.0 · research checkpoint.