Retired no longer in llama-swap.yaml — entry and/or weights removed after this verdict.
| Run | Score | tok/step | Log |
|---|---|---|---|
| 20260727-134034 | 22/23 | 241.3 | results-tess-4-27b-20260727-134034.log |
| 20260725-234517 | 22/23 | 237.6 | results-tess-4-27b-20260725-234517.log |
Removed from the box 2026-07-27 ([[2026-07-27-model-cleanup]]): entry
deleted from llama-swap.yaml, 27GB Q6_K + MTP head wiped from the HF cache.
Rationale: a genuine grill-round-5 miss on top of already being one below
fable-fusion on the base 23-task grill. Everything below is history.
Added 2026-07-26. Agentic/reasoning fine tune of Qwen/Qwen3.6-27B by Migel
Tissera, Apache-2.0 — post-trained on 64K-token agentic traces with a reasoning
style approximated from Fable-5 by an Opus-4.8 / GPT-5.5 / GLM-5.2 teacher
ensemble. Same qwen35 hybrid SSM/attention arch as [[fable-711-27b]] and
vision-coder: 64 layers but full_attention_interval 4, so only 16 carry KV
(n_kv_head 4, head_dim 256) → ~18 KiB/tok at q4_0, which is why 256k is
affordable on 32GB.
GRILL 22/23 (bench/results-tess-4-27b-20260725-234517.log, temp 0.2):
r1 7/8, r2 5/5, r3 5/5, r4 5/5. **Ties vision-coder; one below
[[fable-711-27b]]'s 23/23, which keeps the best-all-rounder crown.**
expr_eval — the unary-minus-vs-power precedence case. Burned 10954 tok / 762s and still emitted ValueError: Invalid number: *.
fable passes it in 8337 tok; [[gpt-oss-20b]] clears it ~1/3 of the time.
This one task is the discriminator at the top of this box's leaderboard —
it is what separates 23/23 from 22/23.
text_justify (the column-width off-by-one vision-coder fails).lru_ttl PASSED but hit the 16000-token cap (1123s) — a fragile pass;re-check it first if that task ever regresses.
258-859 tok / 0-3 steps agentic), so over-deliberation is confined to hard
round-1 algorithmics, NOT a general trait.
MTP RESOLVED 2026-07-26 — the suspicion was right, and it is now ON.
Controlled A/B (same -c 131072, --tensor-split 55,45, same sampler; only the
two spec flags differ; 3 × 900-token generations each):
| | tok/s | draft acceptance |
|---|---|---|
| MTP off | 14.31 / 14.31 / 14.33 | — |
| MTP on | 31.06 / 31.44 / 31.93 | 0.82-0.86, mean len ~2.7 |
2.2×, landing exactly on fable-fusion's 32-35. Quality is unaffected —
draft-mtp verifies every drafted token against the main model, so this is not a
speed-for-quality trade; rounds 3+4 re-run 10/10 with it on.
-md <head> --spec-type draft-mtp, NOT --mtp — --mtp does not exist in b9870. Head passed by absolute snapshot path (-hff already pins
the main GGUF); re-point on a re-pull. Q8_0 head (3.16GB) is the one in use —
the Q4_K_M head was never needed.
CUDA0 at 62,38 — that attempt *segfaulted* after graph_reserve failed).
196608 loads at 55,45 and runs 30.8 t/s but leaves <700MB free per card,
and only after llama.cpp retries without pipeline parallelism — too thin to
serve. 131072 at 55,45 is the setting: ~29.5GB used, real headroom.
tess-4-27b-256k → tess-4-27b-128k. To restore a 256k tess, drop the two spec flags and put back -c 262144 --tensor-split 48,52 —
that is the exact config the 22/23 grill ran on.
[[fable-711-27b]] already covers the 256k + ~32 t/sslot at 23/23; a 14 t/s tess had no niche, a 31 t/s one is a usable second
opinion. Original no-MTP full run was ~90 min / 77.6k output tokens.
Quant choice — Q6_K, and the reasoning generalizes to any 27B on this box:
compute buffers, under the 128k floor. REJECTED.
fable already occupies at this exact size/arch.
migtissera/Tess-4-27B-GGUF over bartowski's mirror: wins downloads(26k vs 12.5k) and likes (31 vs 10), and its Q6_K is 1.3GiB SMALLER
(20.57 vs 21.85) — that 1.3GiB is worth more as KV here than bartowski's
imatrix edge is at Q6. Official is also the only one shipping matching mtp-
heads.
--tensor-split 48,52 is MEASURED. At 50,50 it loads at 262144 but leaves
CUDA0 (4060 Ti) only 691MiB free vs CUDA1's 1364MiB — thinner than fable's
verified 1.1/1.4GB and risky for a large-image ViT encode. 48,52 evens it to
993MiB / 1060MiB. Total free is conserved (~2.05GB); the split only slides
which card is tightest. See [[gpu-device-ordering]].
Two things that went RIGHT here, unlike its siblings:
LLAMA_ARG_OFFLINE=1 —exactly ONE projector in the repo, so no absolute snapshot path to rot on a
re-pull (fable and bonsai both need pinned paths).
-hff is still passed explicitly: the repo also holds mtp-Tess-4-27B-Q4_K_M.gguf, so -hf repo:Q4_K_M *would* be ambiguous. Q6_K
happens not to collide, but naming the file keeps that from being load-bearing.
Template: same guard landmine. Embedded template is byte-identical to base
Qwen3.6-27B and raise_exceptions on any non-first system message → 400
"Unable to generate parser" the moment a client sends tools. Patched copy at
chat-templates/tess-4-27b-256k.jinja; it diffs against the proven
chat-templates/fable-711-256k.jinja on exactly the guard line. See
[[jinja-system-guard-tool-parser]].
Grill-without-sudo trick used here: llama-swap has no reload endpoint and a
restart needs sudo, so the model was hand-started on 9114 with the yaml's exact
cmd: and grilled via run_grill.sh tess-4-27b http://127.0.0.1:9114/v1/chat/completions
(the URL is positional). Also note .claude/sync-models.sh VISION_IDS is
hand-maintained — tess-4-27b had to be added by hand or models.json would call
it text-only ([[sync-models-hook]]).