New model: Tess-4-27B — llama.cpp dual, external MTP, 262K (agentic-leaning alternative to the fast Qwen dual) #662
Replies: 9 comments 15 replies
-
|
Guys, Migel here. Fine-tuning the MTP head as I'm typing this. If all goes to plan, should have an update later today or tomorrow. |
Beta Was this translation helpful? Give feedback.
-
I wonder if I can get away with using my RTX3080 as the 2nd card for draft-context, with a smaller context / draft head? |
Beta Was this translation helpful? Give feedback.
-
|
Hey! Here you go: https://huggingface.co/migtissera/Tess-4-27B-EAGLE3
More info on the README: https://huggingface.co/migtissera/Tess-4-27B |
Beta Was this translation helpful? Give feedback.
-
|
Also, let me know where you see the biggest gap in the model. I can do a surgical training run and see whether it improves the gaps. Obviously won't be able to match frontier models, but let me know where you'd like to see improvements for the local setups. |
Beta Was this translation helpful? Give feedback.
-
|
This model is quite the best I've tried from all the Qwen 27B finetunes. |
Beta Was this translation helpful? Give feedback.
-
|
Cross-rig result: single RTX 4090 matches/beats the dual-3090 reference — from @seanyourhighness in #665 (the single-card datapoint the "What'd help" section asked for): Full 8-pack breakdown — dual-3090 reference (external MTP n=2, 262K) vs 1× 4090 (DFlash n=4, 96K, llama.cpp b9932 host build, Unsloth-corrected template):
Serving: decode 78 / 118 narr/code tok/s (vs the dual ref's 52 / 68) at 96K ctx, 22.1 GB on the single card. Same per-pack shape on both rigs: thinking lifts the analysis packs (reasonmath, bugfind, instructfollow) and trims tool-calling — his run independently reproduced our "thinking-OFF for tool/agent work" guidance (toolcall 15→14 with reasoning on). Notes worth carrying: the quality edge comes from his Unsloth-corrected chat template + a 16K thinking budget ( |
Beta Was this translation helpful? Give feedback.
-
|
@trinity-cloud Thanks for the drop (EAGLE3 + NVFP4) — we ran the full forensics on the reference 2× RTX 3090 overnight. Three things worth your time: 1. Your EAGLE3 head: the data, and why your 1.76× and our numbers are both true. At ~40% acceptance, whether EAGLE3 pays is pure overhead economics: against our fast NVFP4 serve (62.4 tok/s) it's −27%; against a slower FP8 serve (41 tok/s) it's +8%; on an H100 with proportionally cheap drafting, your 1.76× is entirely consistent. So on consumer Ampere it currently doesn't pay. The control group that shows the ceiling: NVIDIA's NVFP4 exports keep the 2. Biggest quality gap, per our verifier-backed suite: autonomous CLI-agent work. cli-40 is Tess's weakest pack (55–62% vs 87–100% on everything else) — multi-step terminal-agent loops (the Claude Code / opencode workload). A surgical run on agentic tool-loop traces (act → observe → recover) would move the needle most. Second: hallucination control under audit-style prompts (confident false claims — @lolren's ask), where a "verify before asserting" bias would help. 3. Small fix, big downstream effect: the NVFP4 repo's Good news to close: via the v0.24 Marlin fallback, Tess-NVFP4 serves on 2× 3090 at 62.4 tok/s — the fastest Tess we've measured on this hardware, no drafter needed. With a working head on top, it'd be the definitive config. Full methodology in this thread + #665. |
Beta Was this translation helpful? Give feedback.
-
|
@trinity-cloud Follow-up with new intel that makes the MTP-retrain path cheaper than it looks. @huginnfork published Tess-4-27B-NVFP4A16 and verified something useful along the way: Tess's 15 That also explains the 0%-in-vLLM / 62%-in-llama.cpp split from our earlier report: vLLM's The practical consequence: you don't need to train a head from scratch. Initialize from the base head (known-good at 92.7%) and fine-tune only against Tess trunk hidden states — a good init like that typically converges far faster and with less data than from-scratch. And huginnfork's NVFP4A16 already ships the tensor slots regrafted in bf16, so a retrained head would be drop-in for quantized-checkpoint users too (his W4A16 recipe also sidesteps this family's activation-quant sensitivity — worth a look for your own NVFP4 export). Stakes, to justify the effort: the NVFP4 trunk serves at 62.4 tok/s spec-off on 2× 3090; a head at llama.cpp-level acceptance (~60%+) would put vLLM-Tess in the ~85–95 tok/s range (estimate) — the single biggest speed lever left on this model, and it stacks on top of every quantized export. |
Beta Was this translation helpful? Give feedback.
-
|
Update: llama.cpp engine bump → think-ON quality improved. If you're running any of our llama.cpp composes, re-pull. Chasing the 118-vs-125 gap from @seanyourhighness's 4090 run (#665) ended somewhere unexpected: the engine build itself. Our pin was
Two things worth knowing beyond the headline:
Shipped: the pin is bumped fleet-wide across all llama.cpp composes (#680, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
llamacpp/tess-dual-mtp· migtissera's Tess-4-27B (Qwen3.5-based dense 27B, Q4_K_M GGUF) · llama.cpp (mainlineserver-cuda-b9246) · dual 3090 layer-split (-ts 1,1) · external MTP spec-decode · 262K ctx. Weights + MTP draft by migtissera; first external-MTP compose in the catalog.Headline
Tess trades ~½ the throughput of the Qwen3.6-27B dual-max reference for a behavioral-quality tie-to-edge — and it leads the agentic packs (hermes 15/20 vs 9, cli-40 25/40 vs 20) on a smaller VRAM footprint, with a vision-capable base in reserve.
🎴 Results Card — 2× RTX 3090, llama.cpp, temp 0.6
① Serving
llamacpp/tess-dual-mtp· Q4_K_Mdraft-mtp)vllm/qwen-27b-dual-max· FP8verify-full 8/9² · verify-stress 8/8 (NIAH ladder clean to 240,634 tok = 91% of 262K, ~5.9 GB free at deepest fill) · soak-continuous PASS (0 err, 0/100 silent-empty, p50 decode 66.4, 96.3% retention). Engine-internal decode; 3 warm + 5 measured; temp 0.6 / top-p 0.95 / top-k 20; image
ghcr.io/ggml-org/llama.cpp:server-cuda-b9246; reasoning-OFF (shipped default).¹ layer-split
-ts 1,1— the external-draft context lands on card 1, so the split is uneven (both cards keep ample headroom). ² the one miss is streaming tool-calls + thinking-ON →finish=length(see Takeaways).② Quality — 8-pack
/150(benchlocal-cli --full, n=1) — thinking OFF / ON vs the dual-max referencePack noise is ±5–7, so OFF (115 vs 109) is a tie and ON (118 vs 109) a slight edge — but the per-pack shape is the story: Tess leads the two agentic packs decisively (hermes +6, cli +5).
③ Takeaways
finish=length(Tess is a heavy reasoner and exhausts the token budget before emitting the call). Non-streaming tool-calls are fine. Use thinking-OFF (the shipped default) or a larger budget for streamed tool-calling.Why it's in the catalog
The Qwen dual-max is the throughput king on this rig. Tess fills a different slot: same 262K context, but a quality/agentic edge and a vision-capable base, at a smaller VRAM cost — for users who value tool-loop accuracy over raw tok/s. It's also the catalog's first external-MTP compose (migtissera ships the nextn draft head as a separate GGUF, engaged via
--spec-draft-model … --spec-type draft-mtp, vs Deckard's embedded head), which we live-validated on mainline llama.cpp b9246.Getting it
(
setup.sh/launch.shauto-fetch both from the profile.)Run it
Run the evals yourself (or add your rig to the matrix)
Got Tess running (above)? Reproduce these numbers — or contribute your rig's — with two independent, non-overlapping passes: behavioral quality (the 8-pack) and operational health (verify / stress / soak / bench / agentic).
One-time: install
benchlocal-cli+ build the sandboxesThe quality suite wraps
benchlocal-cli. Three of the eight packs (bugfind, cli-40, hermesagent) run inside Docker sandboxes that build once:pip install git+https://github.com/noonghunna/benchlocal-cli.git git clone https://github.com/noonghunna/benchlocal-cli bash benchlocal-cli/tools/build-sandboxes.sh # ~30 GB free; `docker system prune` if tight(Without the images the 5 deterministic packs still run; the 3 sandboxed ones skip with a warning.)
1. Behavioral quality — the 8-pack, both reasoning modes
2. Operational health — verify / stress / soak / bench / agentic
bash scripts/report.sh --full # ~43 min; redacted, paste-ready bundleThe two passes don't overlap —
quality-test.shis behavioral-only,report.sh --fullis operational-only — so together they cover everything with nothing run twice.Share your numbers: paste the
report.shbundle + your 8-pack totals into a comment here, or via thenumbers-from-your-rigissue template.What'd help
Cross-rig numbers, especially: (a) single-card behavior (the 16 GB Q4_K_M fits one 24 GB card — architecturally valid, not yet benched), and (b) a validated vision variant (mmproj is on disk; we ship text-only until it's gate-passed). Drop numbers via the
numbers-from-your-rigissue template.Credits
Model + GGUF + external MTP head: migtissera. Arch confirmed qwen35-dense (dense = non-MoE; hybrid attention — 48 linear + 16 full-attention layers — carried internally by the GGUF
qwen35arch; corrected 2026-07-11, was "standard GQA"). Validated on the reference rig (2× RTX 3090, PCIe, no NVLink), 2026-07-09.Beta Was this translation helpful? Give feedback.
All reactions