Roughly 14 hours of measurements on a single consumer card. Every answer was computed by a reference implementation before the model was asked. Every wrong turn is kept in section 13 rather than quietly edited out.
| Component | Version / spec |
|---|---|
| OS | Debian GNU/Linux 13 (trixie), kernel 6.12.101+deb13-amd64 |
| Desktop | KDE Plasma on Wayland (kwin_wayland) |
| CPU | AMD Ryzen 9 5950X — 16C/32T, Zen 3 |
| RAM | 31 GiB |
| GPU | NVIDIA GeForce RTX 3090, 24576 MiB (GA102, sm_86) |
| Driver | 610.57.04 · CUDA UMD 13.3 |
| PCIe | gen 4 x16 under load (gen 2 at idle is power saving, not a fault) |
| Power limit | 380 W (VBIOS default 370, max 380), pinned via systemd |
| Storage | Samsung SSD 970 PRO 1TB NVMe |
| Inference | llama.cpp b10217-ddd4ec142 (llama.app installer) |
| Model A | unsloth/Qwen3.8-27B-GGUF · UD-Q4_K_XL · 17,923,394,624 B · rev f1bfb127 |
| Model B | AtomicChat/Qwen3.8-27B-GGUF · AD-Q4_K_M · 17,120,781,792 B |
| Vision proj. | mmproj-F16.gguf · 927,607,488 B |
| Harnesses | opencode 1.18.18 · Hermes v0.20.2 (2026.8.16) · atomic-agent v0.2.1 * |
* atomic-agent does not self-report a version. v0.2.1 is inferred from the latest
GitHub release of AtomicBot-ai/atomic-agent (2026-08-14) at install time (2026-08-16).
The GGUF reports general.architecture = qwen35, and it is a hybrid SSM + attention
model, not a plain transformer. Only one layer in four keeps a KV cache. That single fact is why a 27B model
gets a 131K window on a 24 GB card.
block_count 65 full_attention_interval 4 ← hybrid attention.head_count 24 attention.head_count_kv 4 attention.key_length 256 attention.value_length 256 embedding_length 5120 context_length 262144 nextn_predict_layers 1 ← MTP heads ship with the model general.sampling temp 1.0 · top_k 20 · top_p 0.95
Most "which model / which setting" advice in circulation is eyeballed — side-by-side screenshots judged by taste — or copied from someone running different hardware. This benchmark only asks questions with a verifiable answer:
What is deliberately not measured: anything judged by taste. Web-design quality, prose style, "which output looks nicer". Those matter, but a benchmark that scores them is reporting the author's preferences with extra steps.
The first problem sets were too easy — everything scored 100%, which measures the test, not the model. Difficulty was raised three times. The progression is itself a result:
| Set | Character | Score |
|---|---|---|
| Easy — 8 short problems | arithmetic, counting | 8/8 |
| Hard — 5 multi-step | simulation, search, DP | 5/5 with reasoning |
| Brutal — 5 heavy | 200-term recurrence, 8×8 grid DP | 4/5 |
| Frontier — 7 categories × 3 reps | traps, bug-hunting, knapsack, probability | 20/21 |
Telemetry depth is not uniform. A single long-lived nvidia-smi process
sampled temperature, power, clocks and utilisation every 2 s with native timestamps, at 0.0% measured
CPU overhead — no per-sample process spawning, and nothing called inside the timed path. Later probes
record start/end timestamps per row and are joined against that log offline. Earlier probes carry wall-clock
and token counts only.
Any request containing an image killed the server instantly. Text-only requests ran indefinitely.
ggml-cuda.cu:106: CUDA error
CUDA error: the requested functionality is not supported
current device: 0, in function ggml_cuda_mul_mat_cublas_impl at ...:1548
cublasGemmEx(..., cu_data_type_a, ..., cu_data_type_b, ..., cu_compute_type,
CUBLAS_GEMM_DEFAULT_TENSOR_OP)
-c 16384 and -c 131072, ~2 GB free at
abort. The status is NOT_SUPPORTED, not OOM.--image-min-tokens, with
--image-max-tokens 512, at 640×480 and 1920×1080.export GGML_CUDA_CUBLAS_COMPUTE_TYPE=fp32
| Value | 1920×1080 screenshot | Latency |
|---|---|---|
| fp32 | works — reads the error text verbatim, with its line number | 3.4 s |
| fp16 | abort | — |
| unset | abort | — |
fp16 does not help; only fp32 does. Measured cost: none.
66.11 tok/s with it against 65.28 without, same seed, thermally equalised. Prefill over a 128,290-token
prompt was unchanged at 705 tok/s.
The CPU fallback (--no-mmproj-offload) also avoids the abort and is unusable: 28.6 s at 640px
— and the model hallucinated the contents, because the text is illegible at that scale — rising to
over 300 s at 1080p, against 3.4 s on GPU.
This is a workaround, not a fix. It forces fp32 for every cuBLAS matmul, not just the one that breaks. Upstream: ggml-org/llama.cpp#24999.
With q4_0 K+V the measured cost is 28,672 bytes per token:
VRAM_llama = weights + 28,672 B × context + 185 MiB
(+ 1,125 MiB when the vision projector sits on the GPU)
That reproduces six independent boot measurements to within 25 MiB.
full_attention_interval gives 18,432 — llama.cpp allocates KV for roughly 25 of the 65 layers,
not 16. If you compute a context budget from GGUF metadata, verify it by booting.Ceilings were verified by filling them: a 128,290-token prompt with a needle hidden at the start, recovered verbatim. 262,144 OOMs. 163,840 boots and runs with ~1 GiB free.
A widely-shared claim says lowering -c buys speed. Tested directly with a short prompt at every
setting, which isolates allocation from fill:
Only VRAM grows with -c. Throughput moves 1.2% between 8K and 131K.
Keep the window. The reported speedups from shrinking -c come from processing
less context, not from allocating less. Filling it is what costs: the same prompt at 53,054 tokens of context
made the model think 63% more and take nearly twice as long — while staying 4/4 correct.
Accuracy holds at a full context; latency does not.
The model ships MTP heads, so --spec-type draft-mtp works with no extra download. It is
off by default, and the wrong spelling fails loudly — --spec-type mtp refuses to
start with unknown speculative type, so nobody is silently running without it because of a typo.
They are running without it because they never set the flag.
Longer drafts raise mean accepted length but acceptance falls faster, and every rejected token is wasted verification compute.
n=2 wins on this GPU. A widely-cited figure puts the sweet spot at n=3 — that measurement was taken on an RTX 6000. The optimum depends on spare verification compute, which is a property of the card. MTP itself is the big win: +77%. Its VRAM cost is 834 MiB, not the 2–3 GB sometimes quoted.
Acceptance counts parsed from raw accepted/generated totals. One shared scale — acceptance is plotted ×100 so both series share an axis honestly.
| temp | tok/s | accepted | generated | acceptance | without MTP |
|---|---|---|---|---|---|
| 0.0 | 68.73 | 502 | 590 | 0.851 | 38.91 |
| 0.6 | 69.47 | 506 | 582 | 0.869 | 39.25 |
| 0.7 | 68.67 | 506 | 582 | 0.869 | 39.33 |
| 1.0 | 63.00 | 476 | 642 | 0.741 | 39.31 |
| 1.3 | 67.03 | 496 | 602 | 0.824 | 38.45 |
The last column is the control: without MTP, temperature does nothing (38.9 → 39.3 → 38.5, flat within noise). That localises the entire effect in the speculative path. At temp 1.0 acceptance drops to 0.741 and throughput follows, ~9% down from 0.6.
The model card recommends temp 1.0. On this hardware 0.6–0.7 gives ~10% more throughput, and accuracy was identical (8/10 at both) on verifiable problems, and on code generation (99% at both 0.6 and 1.0). Scope: single-answer arithmetic and code. Temperature very plausibly matters for open-ended work, which this benchmark does not measure.
--spec-draft-p-min did not reproduce. A discussion reports 15%
faster. Sweeping 0.00 → 0.50 at two temperatures moved throughput by at most 2.4–3.3%, inside or barely
outside noise, with acceptance unchanged.
Two Q4 GGUFs of the same model from two publishers who each claim their dynamic quantisation is better.
Perplexity on identical corpora, 60 chunks, -c 4096, f16 KV.
| Unsloth UD-Q4_K_XL | AtomicChat AD-Q4_K_M | |
|---|---|---|
| Perplexity — wikitext-2 | 5.8031 ±0.0385 | 5.8009 ±0.0384 |
| Perplexity — real code (138 files) | 2.1266 ±0.0105 | 2.1258 ±0.0105 |
| File size | 17,093 MiB | 16,328 MiB |
| Sustained decode @ 79 °C | 65.28 tok/s | 64.10 tok/s |
On general text the gap is 17× smaller than the error bar; on code, 13× smaller. In quality terms these are the same model.
Both keep roughly 1.4 GiB free with a real desktop session open. The only variable is the weight file.
What is real is the 765 MiB difference, worth about 28,000 tokens of context on a 24 GB card — the whole reason the usable window goes from 98K to 131K. AtomicChat wins on size, not on speed: thermally equalised it is 1.8% slower.
Conventional wisdom says LLM decode is memory-bandwidth bound. Not here: memory clock stayed pinned at 9501 MHz across every power level, so the only variable was compute — and throughput tracked it.
Five minutes of continuous load per level. Temperature is the steady-state average over the last two minutes, not a burst reading.
Fitting throughput against SM clock gives an exponent of 0.75 — 1.0 would be purely compute-bound, 0.0 purely memory-bound. The hybrid SSM architecture and MTP verifying three tokens per step both push it that way.
79 °C sustained is well inside spec: this card throttles at 95 °C, its maximum operating temperature is 93 °C, and the thermal-violation counter stayed at zero. Dropping to 300 W buys 74 °C for a 9.1% throughput loss — not worth it unless noise matters.
The real Linux undervolt is a positive clock offset, which shifts the V/F curve so the card runs faster at
the same voltage. It needs nvidia-settings with Coolbits and a running
X server. Under Wayland, nvidia-settings reads values but refuses writes, and as root it
cannot reach the display at all. Nothing available without X substitutes: -lgc only
caps clocks, --set-vf-derate applies a negative offset, and forcing memory to
its maximum with -lmc 9751,9751 reports success and does nothing — the real
clock stays at 9501 and throughput does not move.
PowerMizer: leave it on Normal. Under load the GPU already sits at its highest performance level; "Prefer Maximum Performance" only pins high clocks at idle. The card does run at Performance Level 3 (memory 19002 MT/s) when Level 4 (19502) exists, but at 75% compute-bound that 2.6% of bandwidth is worth about 0.6% of throughput.
Three separate mechanisms get conflated in most discussions. They compose, and two of them are invisible unless you read the chat template.
The template accepts exactly three values and injects a different system instruction for each:
| Value | What the template injects | Score |
|---|---|---|
| xhigh (default) | "think carefully, validate key assumptions, consider plausible alternatives, prioritise correctness" | 5/5 |
| low | "keep your thinking brief and focused, moving directly to the conclusion" | 4/5 |
| medium | nothing — the if/elif covers only xhigh and low, so medium falls through with no instruction at all | 2/5 |
medium is the worst option, and the template explains why: it is a valid value
that passes validation and then sets no guidance. Not "medium effort" — no guidance, which scores
below either explicit instruction.
"reasoning_effort": "low" at the top level of the request is silently dropped by
llama.cpp — a deliberately invalid value produced no error at all. It must go inside
chat_template_kwargs, where an invalid value correctly raises a Jinja exception. Anyone using the
standard field believes they set low and is actually running xhigh.Advice in circulation puts the optimum at 6K–12K. Testing budgets against a fixed problem set cannot validate that: once a budget is large enough to let the model finish, every larger budget produces byte-identical output. The informative experiment is the opposite — hold the budget fixed and scale the problem until the model needs more than the cap allows.
Same algorithm run for N steps. Blue is what the model spends unconstrained; orange is the same problems under a 2048-token cap. ✕ marks a wrong answer.
The break is at 60 steps — exactly where natural thinking (2,954) first crosses the cap. Below it, capped and uncapped runs are identical. Above it the capped model gives up and returns nonsense: 18, 18 and 35 against true answers of 295, 2,666 and 1,932,916. Totals: no cap 4/5, reasoning off 2/5, cap 2048 2/5. An insufficient budget is as bad as no reasoning at all.
Left completely unbounded (--reasoning-budget -1, max_tokens 100000) it thought
25,772 tokens, produced a complete 4,454-character answer, and closed with
finish_reason: stop after 552 s. It does not loop.
Thinking and the answer share one context window — there is no separate buffer. The KV
cache holds prompt + thinking + answer as one sequence, and the answer is conditioned on the thinking by
attending to it. max_tokens covers both. Only across turns can thinking be dropped, which
is what preserve_thinking controls.
| Observed natural thinking | tokens |
|---|---|
| c1 expression evaluator, xhigh — pathological, produced no code | 43,593 |
| unbounded, coding prompt — healthy maximum | 25,772 |
| c5 logic, xhigh | 22,793 |
| 250-step ladder, no cap | 21,330 |
| c4 Lawler, xhigh | 14,779 |
The model self-limits around 26,000 tokens. A 100K budget would be harmless — never reached — but pointless, and the arithmetic is worth stating plainly: 100,000 thinking tokens at 60 tok/s is 28 minutes for one answer, and would consume 100K of a 131K window, leaving 31K for prompt plus answer. The useful range is 26K–32K: high enough never to truncate, below the point where the model starts to wander.
Context envelope at -c 131072: a 2K prompt leaves 129K for thinking plus answer; a 50K prompt
leaves 81K; a 90K prompt leaves 41K. Below about 90K of prompt, thinking never competes seriously with the
answer.
Context shift is disabled by default. When the window fills, generation stops — it does not slide. Several "no answer" results in this benchmark are that ceiling biting, not the model giving up.
Twelve-turn agentic session where every turn required real reasoning:
Context measured at turn 12; generated tokens summed across all 12 turns.
Preserving is 40% faster and generates 41% fewer tokens, for 69% more context. The mechanism is visible turn by turn: with preservation, thinking collapses to 25–47 tokens in the middle turns because the model can see its own earlier reasoning; without it, thinking stays at 150–470 as it re-derives each time. At turn 12 the cost is 2,227 tokens, projecting to ~7,400 at 40 turns — 5.6% of a 131K window. Worth it.
Five tasks of escalating difficulty, generated directly by the model with no harness in the loop, scored by
hidden test suites. Each suite was validated against a reference implementation first; c2 and
c4 additionally check random instances against exhaustive brute force.
| Task | Why it is hard | Tests |
|---|---|---|
| c1 | Expression evaluator: truncation toward zero, repeated unary minus, malformed-input errors | 26 |
| c2 | Job scheduling with cooldown — greedy fails | 19 |
| c3 | Keys and doors — needs BFS over augmented state, naive BFS fails | 17 |
| c4 | Lawler's algorithm — EDF, the obvious approach, fails with precedences; the correct order is built backwards from the latest deadline | 21 |
| c5 | 11 bounded logical claims, decided by code that is actually executed. Includes Euler's polynomial (prime until n=40) and Mersenne (breaks at 2¹¹−1) | 11 |
c1–c3 are solved perfectly without reasoning. c4 and c5 are the two where the model does not already have a free win.
| Task group | reasoning off | effort xhigh | Verdict |
|---|---|---|---|
| c1–c3 (medium) | 124/124 · 9–11 s | 98/99 · up to 932 s | reasoning hurts |
| c4 (Lawler) | 62/63 · 15–24 s | 63/63 · 153–304 s | reasoning helps |
| c5 (logic) | 32/33 · 31–36 s | 33/33 · 454–518 s | reasoning helps |
Reasoning helps exactly at the edge of capability, and nowhere else. Below that edge it is pure cost. Above it — no case found. The price for the last 2–3% is 10–15× the wall time.
A detail worth noting: on c4, xhigh produced 48–54 lines where reasoning-off
produced 86–127. Thinking led it to the compact correct algorithm rather than a longer construction.
xhigh on c1 is actively destructive. Across nine attempts at three
temperatures, six produced no usable code — the model thought 29,000–43,000 tokens for up to
16 minutes and never emitted a code block. The same task with reasoning off scores 26/26 in
11 seconds. Temperature was not the variable: 0.3, 0.6 and 1.0 all showed it. This is the
single strongest argument for keeping reasoning off in a day-to-day coding profile.
An easy sweep (unambiguous requests, 5/12/19/30 tools available) scored perfect at every level, including 30 tools — zero wrong picks, zero malformed arguments. So a hard set was built around real failure modes:
| Case | What it probes | Result |
|---|---|---|
| A1–A3 | Near-identical twins: fetch_url vs read_file vs read_file_lines | 3/3 |
| B1, B2 | Pure knowledge question — must call nothing | 2/2 |
| C1 | Missing information — must decline rather than invent | 1/1 |
| D1, D2 | Arguments buried in messy prose; append vs overwrite | 2/2 |
| F1, F2 | Blocking vs background, disambiguated by "it takes six hours" | 2/2 |
12/12. This refutes a claim made earlier in this same investigation — that pruning a harness's toolsets would reduce tool-selection errors. It does not. Pruning is still worth doing, but only to reclaim context.
| Harness | Easy task | Hard task | Fixed context | Algorithm chosen |
|---|---|---|---|---|
| opencode 1.18.18 | 10/10 · 27 s | 14/14 · 213 s | 7,447 | heapq + in-degree, O(n log n) |
| Atomic Agent v0.2.1 | 10/10 · 46 s | 14/14 · 157 s | 5,399 | dict of pending nodes |
| Hermes v0.20.2 | 10/10 · 60 s | 14/14 · 152 s | 14,032 | naive rescan, O(n²) |
All three passed everything, including the hard task's reversal semantics. Neither task discriminated on correctness — the outputs are genuinely independent (10–24% textual similarity, i.e. shared boilerplate). Fixed context cost is what separates them: 4.1%, 5.7% and 10.7% of a 131K window burned before any work begins, and the Hermes figure is already after pruning six toolsets, which recovered 7,973 tokens per session.
Two things had to be fixed before opencode could be measured at all. It shipped
with no configuration pointing at a local model — its auth.json listed only a cloud provider —
and its database did not migrate across the 1.2.18 → 1.18.18 upgrade, failing every run with
no such column: name.
Across every set, the failures cluster into two kinds.
| Failure | correct | given | Diagnosis |
|---|---|---|---|
| 200-term modular recurrence, budget 32,768 | 98,286 | 60,092 | exact arithmetic depth — 16,819 thinking tokens, finish_reason: stop, still wrong |
| Knapsack, 1 of 3 attempts | 30 | 35 | constraint violated — picked 5+4+3 = weight 12 against a capacity of 10 |
| 250-step simulation, effort low | 1,932,916 | 1,039,216 | insufficient thinking for the depth |
The pattern: it fails when it must hold a constraint while optimising, and when exact arithmetic runs very deep. More thinking budget does not fix either — the recurrence failed with 16,819 thinking tokens and a clean self-termination.
When it fails, it fails loudly. Of ten wrong answers collected across the session, nine were off by 25% or more — typically 39% to 99%. Only one was a near miss. That is a practically useful property: a plausible-looking number is probably right, and a wrong one usually looks absurd. Scope: numeric problems. Failure modes in prose or code may differ entirely.
A script generated five fresh problems with a clock seed, writing the questions to one file and the answers to another that was not read. Opus 5 max answered them by reasoning alone, with no code execution, and committed its answers to a hashed file before any verification existed. The local model then received the same five with an explicit instruction to solve them mentally.
| P | correct | Opus 5 max | Qwen3.8-27B local |
|---|---|---|---|
| 1 | 9955 | 9955 ✓ | 9955 ✓ |
| 2 | 343 | 343 ✓ | 343 ✓ |
| 3 | 22 | 22 ✓ | 22 ✓ |
| 4 | 26 | 26 ✓ | 26 ✓ |
| 5 | 1065 | 1065 ✓ | 1065 ✓ |
Read this correctly. Five for five on both sides means neither model failed on this set — a statement about the set's difficulty, not about model equivalence. Three asymmetries remain even with the commit-then-verify protocol: the problem types were chosen by Opus 5 max, the sample is five, and the hardware is not comparable. A tie proves nothing except that these five problems do not separate them.
And a broader benchmark does separate them. Artificial Analysis's Intelligence Index v4.1.1, which aggregates nine evaluations, places Qwen3.8-27B at 52 against Claude Opus 5 (max) at 63 — level with GPT-5.6 Luna, eleven points below the top. That is a third-party figure this benchmark did not verify, but it is the right corrective: a five-problem tie measures the problems, not the models. What the local model demonstrably is, on this hardware, is strong enough that finding its ceiling took three escalations of difficulty. What it is not is frontier-equivalent.
A 27B model with a 131,072-token window and vision at 64 tok/s sustained on a consumer card is not what a 27B usually buys. The reason is architectural: only about one layer in four keeps a KV cache, so context costs 28,672 B/token instead of the ~90 KB a dense 27B would need. Long context here is a property of the architecture, not of tuning.
Capability was rarely the limit. It solved every coding task, every tool-calling trap, and matched a frontier model on a five-problem set. It broke only on very deep exact arithmetic and on holding a constraint while optimising.
Every meaningful decision was a VRAM trade, not a throughput trade. q8_0 KV would cut the window from 131K to ~52K. The vision projector costs 1,125 MiB. The 765 MiB between two quantisations of the same model is worth 28,000 tokens. Meanwhile the desktop itself moves 500 MiB between an idle session and a working one. Speed was never the problem: a complete working module in 27 seconds is not a bottleneck.
GGML_CUDA_CUBLAS_COMPUTE_TYPE=fp32 — without it, vision is unusable.--spec-type draft-mtp --spec-draft-n-max 2 — +77% for 834 MiB.-np 1 — q8_0 halves the window; more slots disable MTP entirely.xhigh
destroyed 6 of 9 attempts at one task.-c high — allocation is nearly free; only filling costs.| Claim | What measuring showed |
|---|---|
| "n=3 is the MTP sweet spot" | True on an RTX 6000. On a 3090, n=2 — the optimum tracks spare verification compute |
| "Use q8_0 KV" | Doubles KV cost; drops the window from ~131K to ~52K |
| "6K–12K is the optimal reasoning budget" | No fixed optimum exists. The requirement scales 312 → 21,330 tokens with problem size |
"Lower -c to gain speed" | Allocation costs 1.2% between 8K and 131K. The gains come from filling less |
| "MTP costs 2–3 GB of VRAM" | 834 MiB measured |
"--spec-draft-p-min gives 15%" | 2.4–3.3%, inside or barely outside noise |
| "Temperature is the quality knob" | It is a speed knob: it moves draft acceptance, not answer correctness |
| "Fewer tools means fewer tool-calling errors" | 12/12 on adversarial cases with 12 tools; perfect with 30 easy ones |
| "Prefer Maximum Performance in PowerMizer" | Under load the GPU is already at its top level; it only raises idle heat |
The 1M-token windows advertised for this class of model are not a configuration away. At the measured
28,672 B/token, one million tokens needs 26.7 GiB of KV alone — more than the whole card,
before weights. Even the native 262,144 does not fit (7.0 GiB of KV against 6.1 GiB available). Pushing KV to
system RAM with -nkvo does not rescue it: 26.7 GiB against 31 GiB of RAM would not fit alongside
the OS, and if it did, reading that KV per generated token over PCIe 4.0 x16 lands at
0.75–0.94 tok/s. Those windows run on 80 GB cards. On a 3090 it is arithmetic, not tuning.
Also out of reach: the FP8 and NVFP4 builds of this exact model, which are published and require Ada or Blackwell; and undervolting, which needs an X server.
Single machine, and most configurations measured once rather than repeated — the thermally-equalised comparisons and the multi-attempt coding runs are the exceptions. Perplexity is a proxy for quantisation damage, not a functional quality benchmark. The harness comparison rests on context cost and one observation about algorithm choice, because neither coding task discriminated on correctness. Reasoning and temperature findings cover verifiable single-answer problems and code generation only — for open-ended work such as prose or visual design, where many outputs are valid, this benchmark says nothing, and temperature very plausibly behaves differently there.
Kept deliberately. Eight of these produced a stated conclusion that later measurement overturned.
max_tokens. It terminates at ~25,772 thinking tokens.export GGML_CUDA_CUBLAS_COMPUTE_TYPE=fp32 # or every image request aborts llama serve -m Qwen3.8-27B-AD-Q4_K_M.gguf \ --mmproj mmproj-F16.gguf \ -ngl 999 -fa on --jinja -np 1 \ -c 131072 -ub 512 -b 4096 \ --cache-type-k q4_0 --cache-type-v q4_0 \ --spec-type draft-mtp --spec-draft-n-max 2 \ --reasoning off \ --temp 0.7 --top-p 0.95 --top-k 20 --min-p 0.0 \ --host 0.0.0.0 --port 8080
-np 1 — more slots disable MTP.q4_0 KV — q8_0 costs 57,344 B/token and drops the window to about 52K.-ub 512 — 1024 gives the same prefill and costs 404 MiB.--reasoning off — for coding. Switch on with an unbounded budget only for hard logic.chat_template_kwargs, not the standard field.The full suite — problems, reference implementations, hidden test suites, probe scripts and raw logs — is designed to be run against any other model and to be broken. A benchmark nobody can falsify is worth nothing.
llama perplexity on identical corpora and settings. Coding tasks scored by hidden suites validated
against reference implementations, two of them additionally against exhaustive brute force. Reasoning answers
verified by executable ground truth. GPU telemetry sampled by a single long-lived process at 0.0% measured CPU
overhead. Where a run lacks per-item telemetry, section 02 says so.