Straight to the point
Tiel is the fast coder of the arsenal. At 4-bit quantization and 22 GB it fixes real codebase issues at the rate (and speed, with the right GPU) of Opus 4.6 medium, while holding the best multi-turn conversation of any local model we have measured. It is also cheerfully bad at trivia.
Pick it for work. Pick something else for exams.
This is Ornith-1.5-35B-A3B re-quantized dynamically with our own imatrix and carrying the Sharp chat template inside the GGUF. Find the non-MTP GGUFs here, and the non-MTP MLX version here.
The numbers
Multi-turn conversation
Reasoning and knowledge
Where it stands. On 25 SWE-bench-Live problems Tiel fixes 12 β the same as Opus 4.6 (medium), four more than Ornith-1.5 itself, three more than Nail, and four more than Sonnet 5 (medium). Among models of its own class it is first; the ones ahead are dense 27Bs and Opus 5. Its time per attempt is also steadier than Nail's: an 8.6 minute median against 7.2, but a 12.3 minute mean against 15.7, because it lacks Nail's tail of expensive attempts.
How it talks. On Claw-Eval's multi-turn tasks Tiel scores 67.2 against Nail's 60.5 and its own base's 65.3, over 114 scored conversations each. It earns that by answering better rather than by asking more: against the base it is 3.8 points up on answer quality and 5.1 down on clarifying questions. The score weights answers four to one, so the trade pays β but if you want a model that interrogates a vague request before acting, the base does that better.
What it costs. 73.7 on MMLU-Pro against Nail's 84.0, both at 4-bit. Most of that is inherited rather than built: Ornith-1.5 scores 78.0 where stock Qwen3.6-35B-A3B scores 85.3. Our quantization is not the cause β the same quant carrying Ornith's own template scores exactly what Ornith scores. The remaining 4.3 points are the Sharp template buying shorter answers, which is the trade this build exists to make.
Which one. Agentic coding, or long conversations that have to stay useful β Tiel. Exam-style knowledge and hard reasoning β Nail, which is 10.3 points better on MMLU-Pro and 6.7 worse in conversation. The most fixes per problem regardless of weight β Dirk, the dense 27B that solves 15 of the same 25 β one behind stock Qwen3.8-27B, at 2.5x its speed.
Run it
| file | size | fits | notes |
|---|---|---|---|
Tiel-Coder-35B-A3B-MTP-UD-Q4_K_XL.gguf |
23.3 GB | 32 GB | start here β the benchmarked tier plus the head |
Tiel-Coder-35B-A3B-MTP-UD-Q5_K_XL.gguf |
27.5 GB | 32 GB | more precision headroom |
Each is its stripped counterpart in Tiel-Coder-35B-A3B-GGUF plus 0.9 GB of MTP head β the same block at the same precision in both tiers, because the recipe pins it rather than letting it ride the tier's own bit-width.
hf download peculiar-ragdoll/Tiel-Coder-35B-A3B-GGUF-MTP \
Tiel-Coder-35B-A3B-MTP-UD-Q4_K_XL.gguf mmproj-BF16.gguf --local-dir Tiel-MTP
llama-server -m Tiel-MTP/Tiel-Coder-35B-A3B-MTP-UD-Q4_K_XL.gguf -ngl 99 --jinja \
--spec-type draft-mtp
--spec-type draft-mtp turns the head on at llama.cpp's defaults. Two knobs tune it, and what they
should be set to depends on your hardware β see below.
The head does nothing unless you ask for it. Without --spec-type draft-mtp llama.cpp ignores
those tensors entirely and you are running the base model carrying 0.9 GB of dead weight β in which
case take the stripped ladder instead, which is the same model in
less space.
Sampling: temperature 1.0, top_p 0.95, top_k 20. For agentic coding we ran temperature 0.6.
It can see. Vision works exactly as on the base repo β mmproj-BF16.gguf, Ornith's own projector
passed through unmodified, shared by both tiers.
The multi-token-prediction head
Ornith-1.5 ships an MTP (nextn) block that drafts a token ahead of the main model, and this repo
exists to keep it.
It was broken, and now it is not. When our first ladder was baked, that block was untrained:
every matrix sat at a standard deviation of 0.020 with kurtosis 3.00 and a largest value of 5
standard deviations, which is a fresh random initialization. Drafts from random weights are accepted
at chance, so we stripped it. Ornith replaced it on 2026-08-23, re-uploading a single shard with
a trained head. We measured the replacement rather than take the announcement on faith: kurtosis
25.1 with a 98-sigma outlier, and 825 on the nextn projection. That is a trained network.
What it did on our hardware. Sweeping llama.cpp's two knobs on UD-Q4_K_XL, against the same
model with speculation switched off:
--spec-draft-n-max |
--spec-draft-p-min |
tok/s | vs off | accepted |
|---|---|---|---|---|
| β (off) | β | 77.4 | 1.00x | β |
| 1 | 0.0 | 94.4 | 1.22x | 83.3% |
| 3 | 0.0 | 89.9 | 1.16x | 59.9% |
| 8 | 0.0 | 46.5 | 0.60x | 30.2% |
| 1 | 0.8 | 85.3 | 1.10x | 96.0% |
| 3 | 0.8 | 86.0 | 1.11x | 92.7% |
| 8 | 0.8 | 82.3 | 1.06x | 90.1% |
Those are our numbers on our box, not a specification. The gain comes from verifying several tokens in one forward pass instead of decoding them one at a time, so it turns on how your hardware prices a batched pass against a single-token one β which moves with the GPU, the tier you run, the context length, and whatever else is resident. Short drafts happened to win here and long ones lost badly; that balance is precisely the part that differs between machines.
So sweep it. It takes a few minutes and the two knobs pull against each other:
--spec-draft-n-maxβ how many tokens to draft per step. Drafting further ahead wins more when the guess lands and wastes more when it does not, and acceptance falls the further ahead you go.--spec-draft-p-minβ discard a draft whose probability is below this. Raising it lifts the acceptance rate and wastes less verification, at the cost of drafting less often.
Judge by tok/s, not by acceptance rate. They come apart: our highest-acceptance setting
(96.0%) was slower than our fastest one (83.3%), because it bought that acceptance
by drafting less. Time it end to end against --spec-type none on prompts that look like your work.
How the imatrix was made
Every tier is quantized against an importance matrix we generated ourselves, rather than a
borrowed one. The calibration corpus is 49 M characters drawn from
eaddario/imatrix-calibration (MIT):
about three quarters code_medium and one quarter combined_all_large, interleaved so the two
alternate throughout rather than sitting in separate halves. That mix is deliberate β Tiel is meant
for coding, so the corpus leans that way, while the combined slice keeps maths, tool-calling and
non-English text represented so those paths are not the ones that get quantized carelessly.
The matrix was measured on a Q8_0 of the original BF16 weights, over 3,000 chunks of 512 tokens (~1.5 M tokens), which is enough for every expert to be exercised many times over β this is a 256-expert mixture that routes 8 per token, so a short corpus would leave some experts barely seen. The shipped tiers are then quantized from the BF16 source using that matrix. These MTP tiers reuse that exact matrix, unchanged: the fix upstream touched only the MTP tensors, which an importance matrix never covers anyway, so re-measuring would have produced the same file.
The matrix itself ships here, as Tiel-Coder-35B-A3B.imatrix.gguf (183 MiB, 510 tensors) β so a
tier we don't ship is one command away, without spending an hour and a half measuring your own:
hf download peculiar-ragdoll/Tiel-Coder-35B-A3B-GGUF Tiel-Coder-35B-A3B.imatrix.gguf --local-dir .
llama-quantize --imatrix Tiel-Coder-35B-A3B.imatrix.gguf Ornith-1.5-35B-BF16.gguf out.gguf IQ4_XS
Be clear about what that does not give you: the tiers in the table above are cut with per-tensor
Dynamic recipes layered on top of this matrix, and they carry the Sharp template. A plain
llama-quantize from the upstream BF16 reproduces neither.
eaddario's code slice is itself built from Open-Critic-GPT, opc-sft-stage2, Magicoder-Evol-Instruct-110K and McEval-Instruct.
Limitations
- Exam scores are its weak axis. If you are picking on MMLU-Pro, Nail is 10.3 points better.
- It asks fewer clarifying questions than its base, by 5.1 points. Terser is not always better; a vague request gets answered rather than questioned.
- Benchmarks are one run per problem on SWE-bench-Live and three seeds on MMLU-Pro. Treat small differences as noise.
- Chinese and English only, inherited from the base.
Credits
- ornith-ai β the Ornith-1.5-35B-A3B weights (MIT).
- Unsloth β the Dynamic GGUF quantization method this reproduces.
- froggeric β the template lineage Sharp builds on.
- eaddario β the calibration corpora the imatrix was measured on (MIT).
- llama.cpp β
llama-quantize/llama-imatrix/llama-server.
MIT, inheriting Ornith-1.5's license.
- Downloads last month
- -
2-bit
3-bit
4-bit
5-bit
6-bit
8-bit
Model tree for npario/Tiel-Coder-35B-A3B-GGUF-MTP
Base model
ornith-ai/Ornith-1.5-35B-A3B