How it was measured

The test bed

One harness (bench.py) talks to each model through its server's OpenAI-compatible API, sends the same prompts, grades the answers automatically, and saves every prompt, reasoning trace, answer, verdict, token count and latency. Everything here is reproducible from the repository; the scripts that ran are in runs/.

Models and how they were served

ModelWeightsServerSpeculative decodingReasoning setting
Muse-Glimmer-30Bunsloth Q4 GGUF (4-bit dynamic); also NVIDIA NVFP4 for the quantization checkllama.cpp (vLLM for NVFP4)DFlash drafter (Meta's), llama.cpp onlysystem prompt "Reasoning strength: high", top_k 64
Qwen3.6-27Bunsloth Q4 GGUFllama.cppnone (the GGUF has no MTP head)default thinking mode, top_k 20
Qwen3.8-27Bunsloth NVFP4, the exact checkpoint the Spark servesvLLM 0.29 (the Spark: 0.26.1)MTP head, 3 tokens (the Spark's recipe); also run withoutdefault thinking mode, top_k 20

Sampling for everyone: temperature 1.0, top_p 0.95, both vendors' recommendation; seed 1234. Reasoning is returned separately by the servers and is never graded, only counted. Hardware: two RTX A6000 (48 GB), one model per GPU; plus the team's DGX Spark over the network for one run.

Tasks

TaskWhat it testsItemsGrading
GSM8Kgrade-school math word problems200 (fixed sample of the 1,319-item test set)last "Final answer: N" equals the reference
MMLU-Pro10-option multiple choice, 14 subjects200 (fixed sample of ~12k)last "Answer: X" equals the reference letter
HumanEval164 Python functionsall 164the problem's unit tests are executed; all must pass
GPQA Diamondgraduate-level physics, chemistry, biology, 4 optionsall 198last "Answer: X" or \boxed{X}
LiveCodeBench v6competitive programming, contests Jan–Apr 2025 (after the models' training data)all 175the program is run on every public and private test (~40 per problem); all must pass

Zero-shot, one chat turn per item, our own prompt wording. Dataset revisions are pinned in bench.py (Hugging Face commit SHAs), so a re-run sees the same items.

Datasets, papers, code

Why these: GSM8K and HumanEval have known expected scores and validate the harness; MMLU-Pro, GPQA Diamond and LiveCodeBench have headroom for models of this class and cover knowledge, science and code. AIME was considered and dropped: vendors report 94–95% for these models. None is an agentic workflow. All three grading methods are automatic and objective (exact match, executed tests); no human or model judge.

The token budget

These are reasoning models: they generate thinking tokens before the answer, as many as they want. Every evaluation caps that, and so do the vendors (Qwen reports LiveCodeBench with up to 80k tokens). We used 12,288 tokens per answer for the first round and 32,768 for the second. An answer that hits the cap without a final answer counts as wrong, and is reported separately as "not finished". The cap turned out to be the variable that decides the ranking, so both budgets are shown wherever they exist.

Speed

Draft-vocabulary coverage (Spark, run 10)

The Spark's Flash-Next image runs MTP speculative decoding with a drafter restricted to 65,536 token ids. To estimate what that restriction costs, tools/draft-vocab-coverage.py loads the id list (tools/draft_vocab_65536.npy), tokenizes every saved reasoning trace and final answer of every run with the Flash-Next tokenizer, and reports the share of tokens inside the set, per run and task, plus the most frequently missed ids. Because the target model verifies every drafted token against its full output head, a token outside the set can only lower acceptance, never change the answer, so coverage bounds the possible loss. The Spark run itself was taken with tools/spark-idle-run.sh, which refuses to start unless the server is idle, samples its request count every 15 s, and snapshots /metrics before and after so the acceptance figures belong to that run alone (tools/metrics-delta.py).

Corrections made along the way

What is and is not reproducible