An independent re-run of Dory1.0-4B in an open vLLM harness: first Dory alone against its model card, then beside 18 other small open-model configurations on 10 benchmarks. Short version: the card's own numbers reproduce at every loop count, and the second loop is where the gain is. Dory's strengths are competition math, instruction following and question answering over long documents. Against the two larger models the post compares it with, Dory at 4 loops is level with Qwen3.5-9B and behind Gemma 4 26B-A4B on a seven-benchmark index, and trails both on MMLU-Pro, GPQA, SimpleQA and MRCR; the post's claim rests on an index that includes agentic tasks, which we did not run. Everything needed to check or reproduce a number is in the collapsed sections. The full write-ups: Dory against its card and the small models showdown.
GPQA Diamond, IFBench and AA-LCR at 1, 2 and 4 loops: all nine land within 1.1 points of the card, once measured with enough repeats and with NVIDIA's IFBench metric (the mean strict fraction).
The second loop is worth +2.7 ± 0.9 on GPQA (every run pooled), +4.3 ± 1.1 on IFBench and +8.7 ± 3.1 on AA-LCR (experiment 2), and +8.5 ± 1.7 on competition math and +10.2 ± 2.3 on LiveCodeBench (this run). From 2 to 4 loops nothing these sets resolve: GPQA +0.9 ± 0.6, IFBench +0.2 ± 0.8, math +1.2 ± 1.1, LiveCodeBench -1.9 ± 2.2. AA-LCR is too noisy to say: +0.7 ± 2.7 over experiment 2's draws, 66.0 → 74.0 in this run's single draws. The card says the same.
IFBench 74.9 / 78.3 / 79.1 at 1 / 2 / 4 loops in this run (74.2 / 78.6 / 78.8 over experiment 2's 6–7 repeats): first of 21 configurations at 4 loops (tied with Gemma 4 26B-A4B). At 1 loop it already leads Qwen3.5-9B by 8 points. IFNovel, 22 constraint types written for this test: 84.3 / 92.7 / 93.3 in this run, one repeat each (87.3 / 89.1 / 89.5 over experiment 2's two).
Competition math 79.1 / 87.6 / 88.8 and LiveCodeBench 60.2 / 70.3 / 68.4 at 1 / 2 / 4 loops. On math, Dory at 2 loops is ahead of every other model of 10B or fewer here (the next best: Granite 4.2 8B 83.9), and every larger mixture-of-experts model reads lower: Qwen3.6-35B-A3B 86.6, Gemma 4 26B-A4B 83.1, Nemotron 3.5 Lightning 30B-A3B 81.3, GLM-4.7-Flash 79.7, LFM2.5-24B-A2B 77.4, gpt-oss-20b (high) 73.4. On code, one model of 10B or fewer scores higher than Dory: Granite 4.2 8B (75.0), against 70.3 at 2 loops.
AA-LCR 74.0 at 4 loops, the highest of all 20 configurations in this run (one draw; 72.7 averaged over 3 draws across both experiments).
OpenAI MRCR: 25.3 / 32.4 / 39.0 at 1 / 2 / 4 loops, against 93.7 for Qwen3.5-4B and 96.3 for Qwen3.5-9B. Loops help, but the gap is large.
MMLU-Pro 77.7, GPQA 73.2 (every run pooled) and SimpleQA 3.4 at 4 loops, below Qwen3.5-4B (80.0, 78.4, 5.6) and Qwen3.5-9B (83.1, 82.2, 8.1). Loops add little here: MMLU-Pro 75.1 → 77.7.
The post: “We just released Dory - a 4B looped nGPT model, which outperforms much larger models (Qwen3.5-9B and Gemma4-26B-A4B). More intelligence per token and fewer tokens to solve problems. 4 checkpoint formats: BF16, MXVF8, NVFP4 and GGUF.” The model card adds its own guidance on loop count and caching. Each claim against what we measured:
The claim rests on the card's chart of Artificial Analysis index v4.3.2 estimates, which the card calls internal and possibly different from official scores: 18.4 at 4 loops against 12.5 and 16.4. On the card's own columns Dory at 4 loops leads both models on IFBench, AA-LCR, SWE-bench Verified, τ³-bench (Banking) and GDPval, trails both on GPQA, HLE, AA-Omniscience and Terminal-Bench, and splits on SciCode. We ran no agentic tasks. On our seven-benchmark index Dory at 4 loops reads 69.1, against 67.6 for Qwen3.5-9B (+1.5 ± 1.1, level within error) and 72.1 for Gemma 4 26B-A4B (-2.9 ± 1.1, behind). Benchmark by benchmark, it is ahead of Qwen3.5-9B on competition math, IFBench, IFNovel (written for this project) and AA-LCR and behind on MMLU-Pro, GPQA, SimpleQA and MRCR; ahead of Gemma 4 26B-A4B on competition math, IFNovel (written for this project) and AA-LCR and behind on MMLU-Pro, GPQA, SimpleQA, LiveCodeBench and MRCR (beyond two standard errors, paired by question; the rest unresolved).
Each loop adds compute to every token, and the second loop buys +2.7 ± 0.9 on GPQA and +8.5 ± 1.7 on competition math, with answers 9–16% shorter on GPQA, IFBench and AA-LCR. But in matched H200 jobs a 2-loop token took 1.6× the GPU time of a 1-loop token, so a 2-loop answer cost 1.5× as much; a 4-loop token takes 2.4–3.1× (B200, H200, H100). At 1 loop Dory decodes about as fast as Qwen3.5-4B: 6,783 against 7,328 tokens/s on one H200, on GPQA and IFBench with answers of up to 32K tokens, batch 256.
Answers are 9–16% shorter at 2 loops and 11–18% at 4 (GPQA, IFBench, AA-LCR), against the card's 20–60% on multi-turn agentic tasks, which we did not run. Most of the saving comes with the second loop.
86–94% of the Qwen models' IFBench answers start with whitespace, the blank line after their reasoning. Graded as returned, our harness lands within 0.1–2.3 points of the card's Qwen numbers, so the card's columns reproduce. With the whitespace stripped, as this harness does for every model, Qwen gains 6–7 points, and Dory's lead over Qwen3.5-9B drops from 19.2 to 12.4 points (the card shows 20): the convention accounts for about a third of the gap. Dory and Gemma 4 are unaffected.
From 2 to 4 loops GPQA moves +0.9 ± 0.6, IFBench +0.2 ± 0.8, competition math +1.2 ± 1.1 and LiveCodeBench -1.9 ± 2.2; AA-LCR's single draws are too noisy to say. The card suggests 4 loops when accuracy matters more, “particularly for agentic tasks”, which we did not test.
At 4 loops, last-loop caching changes GPQA by +0.3 ± 0.9 and IFBench by +0.8 ± 0.9, and output lengths by +0.7% and +1.4%. It also serves 1.38× the tokens per second on an H200, because the smaller cache fits twice the batch.
Each row pools independent runs with fresh seeds; ± is the sampling standard error. GPQA pools every Dory run at that loop count: experiment 2, the showdown and, at 2 loops, three control runs. IFBench (NVIDIA's metric, the mean fraction of instructions followed, strict) and AA-LCR are experiment 2's runs.
| Benchmark | Loops | Card | Measured | Repeats × questions |
|---|---|---|---|---|
| GPQA Diamond | 1 | 69.19 | 69.6 ± 0.7 | 8 × 198 |
| GPQA Diamond | 2 | 72.41 | 72.3 ± 0.4 | 20 × 198 |
| GPQA Diamond | 4 | 72.16 | 73.2 ± 0.6 | 10 × 198 |
| IFBench (NVIDIA metric) | 1 | 74.29 | 74.2 ± 0.7 | 6 × 300 |
| IFBench (NVIDIA metric) | 2 | 77.94 | 78.6 ± 0.6 | 6 × 300 |
| IFBench (NVIDIA metric) | 4 | 79.00 | 78.8 ± 0.6 | 7 × 300 |
| AA-LCR | 1 | 63.00 | 62.7 ± 1.9 | 3 × 100 |
| AA-LCR | 2 | 71.00 | 71.3 ± 1.4 | 3 × 100 |
| AA-LCR | 4 | 73.00 | 72.0 ± 2.0 | 2 × 100 |
Qwen3.5-9B. Dory ahead on: competition math 88.8 vs 79.7 (+9.1 ± 2.3), IFBench 79.1 vs 66.7 (+12.4 ± 2.4), IFNovel 93.3 vs 59.3 (+34.0 ± 2.9), AA-LCR 74.0 vs 63.0 (+11.0 ± 5.3). Behind on: MMLU-Pro 77.7 vs 83.1 (-5.4 ± 0.7), GPQA 73.4 vs 82.2 (-8.8 ± 2.1), SimpleQA 3.4 vs 8.1 (-4.7 ± 0.4), MRCR 39.0 vs 96.3 (-57.2 ± 3.0). Not resolved by these sets: LiveCodeBench 68.4 vs 63.2 (+5.2 ± 2.6), IFEval 93.3 vs 90.6 (+2.8 ± 1.4).
Gemma 4 26B-A4B. Dory ahead on: competition math 88.8 vs 83.1 (+5.7 ± 2.3), IFNovel 93.3 vs 85.0 (+8.3 ± 2.3), AA-LCR 74.0 vs 63.0 (+11.0 ± 5.3). Behind on: MMLU-Pro 77.7 vs 85.8 (-8.1 ± 0.7), GPQA 73.4 vs 79.7 (-6.3 ± 2.2), SimpleQA 3.4 vs 7.5 (-4.1 ± 0.4), LiveCodeBench 68.4 vs 74.7 (-6.3 ± 2.5), MRCR 39.0 vs 52.0 (-13.0 ± 3.7). Not resolved by these sets: IFEval 93.3 vs 94.6 (-1.3 ± 1.2), IFBench 79.1 vs 79.1 (+0.0 ± 2.1).
In brackets: the difference, paired by question, ± one standard error; a difference beyond two standard errors counts. Scores are this run's (Dory's GPQA here is one run; every run pooled reads 73.2 at 4 loops).
All at Dory's 4-loop setting; each model at its maker's recommended sampling with reasoning on.
The showdown's raw IFBench answers, graded with AllenAI's verifiers at commit 1c40f0c1 and NVIDIA's metric. ‘As returned’ keeps the whitespace that follows the reasoning; ‘stripped’ removes it, as this harness does.
| Model | Card | Graded as returned | Leading whitespace stripped | Answers starting with whitespace |
|---|---|---|---|---|
| Dory, 1 loop | 74.29 | 74.9 | 74.9 | 0% |
| Dory, 2 loops | 77.94 | 78.3 | 78.3 | 0% |
| Dory, 4 loops | 79.00 | 79.1 | 79.1 | 1% |
| Qwen3.5-4B | 53.83 | 53.9 | 60.3 | 86% |
| Qwen3.5-9B | 59.00 | 59.8 | 66.7 | 89% |
| Qwen3.6-35B-A3B | 57.44 | 59.8 | 66.2 | 94% |
| Gemma 4 26B-A4B | 77.89 | 79.1 | 79.1 | 0% |
Index = the mean of seven benchmarks (MMLU-Pro, GPQA, SimpleQA, competition math, LiveCodeBench, IFEval, IFBench), each run by this harness with the same prompts, budgets and graders. As a check on the harness itself: of the 84 numbers the makers report for their own models in settings like ours, it lands within 3 points of 57 (median gap 2.0 points). Dory's rows are this run's single draws; its GPQA pooled over every run reads 69.6 / 72.3 / 73.2. The top ten, plus every Dory row:
| # | Model | Index | MMLU-Pro | GPQA | SimpleQA | Math | LCB | IFEval | IFBench | AA-LCR | MRCR |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Qwen3.6-35B-A3B | 72.3 | 85.9 | 84.7 | 18.1 | 86.6 | 74.7 | 90.0 | 66.2 | 71.0 | 98.6 |
| 2 | Gemma 4 26B-A4B | 72.1 | 85.8 | 79.7 | 7.5 | 83.1 | 74.7 | 94.6 | 79.1 | 63.0 | 52.0 |
| 3 | Nemotron 3.5 Lightning 30B-A3B | 69.7 | 80.5 | 76.1 | 9.6 | 81.3 | 73.6 | 93.3 | 73.2 | 62.0 | 41.8 |
| 4 | Dory 4B, 4 loops | 69.1 | 77.7 | 73.4 | 3.4 | 88.8 | 68.4 | 93.3 | 79.1 | 74.0 | 39.0 |
| 5 | Dory 4B, 2 loops | 68.7 | 77.0 | 70.6 | 3.2 | 87.6 | 70.3 | 93.9 | 78.3 | 66.0 | 32.4 |
| 6 | LFM2.5-24B-A2B | 67.9 | 77.8 | 78.9 | 5.0 | 77.4 | 64.3 | 95.4 | 76.6 | 28.0 | 19.8 |
| 7 | Qwen3.5-9B | 67.6 | 83.1 | 82.2 | 8.1 | 79.7 | 63.2 | 90.6 | 66.7 | 63.0 | 96.3 |
| 8 | Granite 4.2 8B | 66.6 | 71.8 | 63.4 | 1.7 | 83.9 | 75.0 | 93.5 | 77.1 | 48.0 | 26.6 |
| 9 | Dory 4B, 1 loop | 65.1 | 75.1 | 70.1 | 2.8 | 79.1 | 60.2 | 93.5 | 74.9 | 65.0 | 25.3 |
| 10 | gpt-oss-20b (high) | 63.6 | 75.5 | 64.1 | 5.0 | 73.4 | 69.0 | 88.7 | 69.4 | 34.0 | 17.5 |
| # | Model | Index | MMLU-Pro | GPQA | SimpleQA | Math | LCB | IFEval | IFBench | AA-LCR | MRCR | IFNovel |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Qwen3.6-35B-A3B | 72.3 | 85.9 | 84.7 | 18.1 | 86.6 | 74.7 | 90.0 | 66.2 | 71.0 | 98.6 | 45.5 |
| 2 | Gemma 4 26B-A4B | 72.1 | 85.8 | 79.7 | 7.5 | 83.1 | 74.7 | 94.6 | 79.1 | 63.0 | 52.0 | 85.0 |
| 3 | Nemotron 3.5 Lightning 30B-A3B | 69.7 | 80.5 | 76.1 | 9.6 | 81.3 | 73.6 | 93.3 | 73.2 | 62.0 | 41.8 | 85.0 |
| 4 | Dory 4B, 4 loops | 69.1 | 77.7 | 73.4 | 3.4 | 88.8 | 68.4 | 93.3 | 79.1 | 74.0 | 39.0 | 93.3 |
| 5 | Dory 4B, 2 loops | 68.7 | 77.0 | 70.6 | 3.2 | 87.6 | 70.3 | 93.9 | 78.3 | 66.0 | 32.4 | 92.7 |
| 6 | LFM2.5-24B-A2B | 67.9 | 77.8 | 78.9 | 5.0 | 77.4 | 64.3 | 95.4 | 76.6 | 28.0 | 19.8 | 82.5 |
| 7 | Qwen3.5-9B | 67.6 | 83.1 | 82.2 | 8.1 | 79.7 | 63.2 | 90.6 | 66.7 | 63.0 | 96.3 | 59.3 |
| 8 | Granite 4.2 8B | 66.6 | 71.8 | 63.4 | 1.7 | 83.9 | 75.0 | 93.5 | 77.1 | 48.0 | 26.6 | 94.3 |
| 9 | Dory 4B, 1 loop | 65.1 | 75.1 | 70.1 | 2.8 | 79.1 | 60.2 | 93.5 | 74.9 | 65.0 | 25.3 | 84.3 |
| 10 | gpt-oss-20b (high) | 63.6 | 75.5 | 64.1 | 5.0 | 73.4 | 69.0 | 88.7 | 69.4 | 34.0 | 17.5 | 77.0 |
| 11 | Qwen3.5-4B | 63.2 | 80.0 | 78.4 | 5.6 | 74.2 | 53.3 | 90.6 | 60.3 | 59.0 | 93.7 | 47.8 |
| 12 | MiniCPM5-2B | 62.7 | 71.9 | 69.4 | 1.4 | 77.6 | 67.0 | 87.4 | 64.2 | 58.0 | 25.0 | 37.8 |
| 13 | GLM-4.7-Flash | 62.6 | 78.9 | 76.0 | 7.5 | 79.7 | 51.1 | 83.5 | 61.3 | 48.0 | 29.8 | 32.0 |
| 14 | Granite 4.2 3B | 60.7 | 67.0 | 54.2 | 0.7 | 72.8 | 60.7 | 92.8 | 76.8 | 21.0 | 14.7 | 84.0 |
| 15 | Ornith 1.0 9B | 60.6 | 82.6 | 79.7 | 6.7 | 73.6 | 47.8 | 83.5 | 50.1 | 52.0 | 83.4 | 21.7 |
| 16 | Nemotron 3 Nano 4B | 54.1 | 68.1 | 53.5 | 2.8 | 57.7 | 49.5 | 86.1 | 60.7 | 14.0 | 11.2 | 49.7 |
| 17 | LFM2.5-2.6B | 52.4 | 68.5 | 57.2 | 2.3 | 45.9 | 40.9 | 92.4 | 59.5 | 8.0 | 15.4 | 60.7 |
| 18 | Olmo 3 7B Think | 51.0 | 66.6 | 51.1 | 3.4 | 57.7 | 48.6 | 84.8 | 44.4 | – | 16.2 | 37.3 |
| 19 | Gemma 4 E4B | 49.4 | 71.2 | 56.7 | 2.1 | 38.4 | 53.0 | 86.0 | 38.5 | 38.0 | 31.2 | 26.8 |
| 20 | MiMo-V2.6 Distill 9B | 41.5 | 73.2 | 49.6 | 7.0 | 39.2 | 29.4 | 66.5 | 25.5 | 49.0 | 64.8 | 7.8 |
| 21 | Jamba2-3B | 32.2 | 48.6 | 29.0 | 3.9 | 5.3 | 17.0 | 83.5 | 37.9 | 12.0 | 22.5 | 6.0 |
b366b87f), only the embeddings, the LM head and its logit scale sit outside the 36 layers. Inside them, the attention layers carry an output gate (g_proj, s_gate) and the MLPs a SwiGLU gate (gate_proj, with nGPT's suv_gate and suv_up scalings), looped or not; the per-layer step sizes are nGPT's own attn_alpha and mlp_alpha. Nothing gates the update from one loop to the next. Each loop is justnorm(state + input) through the 20 shared layers, then justnorm, the same at every loop index. Yet the loop curve has the shape the paper describes.Everything needed to re-run or re-grade any number above, folded.
55076950, installed over the precompiled cu130 wheel of main 153a1716 (0.32.0rc1.dev319), torch 2.14.0.debian_slim Python 3.12 image; the showdown on nvidia/cuda:13.0.1-devel-ubuntu24.04 with Python 3.12, because nvcc is needed on B200, where vLLM JIT-compiles FlashInfer's attention. Both set VLLM_USE_FLASHINFER_SAMPLER=0; the vLLM build is the same.moe_backend="triton", because their B200 start-ups failed in this build. Gemma 4 26B-A4B ran on B200 and H200 with Triton MoE. Each configuration's GPUs are in the settings table.nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16 at b366b87f; every other model pinned to its Hugging Face main commit of Tue 20 Oct 2026 (table below).git clone https://github.com/vllm-project/vllm && cd vllm
git fetch origin pull/60149/head && git checkout 55076950b6c155f384d6766d63563c3bc20a0e3f
VLLM_USE_PRECOMPILED=1 \
VLLM_PRECOMPILED_WHEEL_COMMIT=153a17166e5d07bc38184dedeea542d2e8885e55 \
VLLM_PRECOMPILED_WHEEL_VARIANT=cu130 pip install .from vllm import LLM, SamplingParams
llm = LLM(model=DORY_PATH, max_model_len=73728, # GPQA here; 69,632 in experiment 2, up to 196,608 for AA-LCR
enable_prefix_caching=True, max_num_seqs=256, # down to 4 for AA-LCR at 4 loops
seed=zlib.crc32(run_tag.encode()) % 2**31, # a fresh seed per launch = an independent draw
hf_overrides={"n_recurrent_loops": k, # 1, 2 or 4
"recurrent_kv_cache_mode": "per_loop"})
sp = SamplingParams(temperature=1.0, top_p=0.95, max_tokens=65536) # the card's sampling
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
text = llm.generate([prompt], sp)[0].outputs[0].text
answer = text.rsplit("</think>", 1)[1].strip() if "</think>" in text else "" # unclosed = no answer = wrongOutput budget: 64K tokens for GPQA, competition math, LiveCodeBench and AA-LCR (AA-LCR up to what each model's context window leaves after the ~100K-token prompt); 32K for MMLU-Pro, SimpleQA, IFEval, IFBench, IFNovel and MRCR. A reply cut at the budget, or with its reasoning never closed, scores 0. Every model ran with reasoning on, at its maker's recommended sampling.
| Benchmark | Source (pinned) | Questions × repeats | Prompt and grading |
|---|---|---|---|
| GPQA Diamond | simple-evals CSV (openaipublic) | 198 × 4 answer orders | simple-evals template; letter from “Answer: X”, else “answer is X”, else \boxed{X}; last match |
| MMLU-Pro | TIGER-Lab/MMLU-Pro @ b189ec76 | 3,008 (every 4th of 12,032) × 1 | same template, ten options |
| Competition math | MathArena aime_2025 @ c94da77e, aime_2026 @ d61f4868, hmmt_feb_2026 @ 589a53fe, hmmt_nov_2025 @ 118dbfb4 | 123 × 4 | MathArena's instruction; last \boxed{} chosen as MathArena's parser does; integers exact, expressions by math-verify |
| LiveCodeBench | livecodebench/code_generation_lite @ 0fe84c39 | 182 (1 Jan – 30 Apr 2025) × 2 | LCB's chat prompt; last fenced block; lcb_runner @ 28fef95e, all public + private tests, 6 s each |
| IFEval | google/IFEval @ 966cd895 | 541 × 1 | google-research instruction_following_eval @ e6890f85; prompt-level strict |
| IFBench | allenai/IFBench @ 1c40f0c1 | 300 × 2 | AllenAI's verifiers; mean strict fraction (NVIDIA's metric) |
| IFNovel | written for this project | 300 × 1 | 22 constraint types not in IFEval or IFBench, with their own verifiers |
| SimpleQA | simple-evals CSV (openaipublic) | 4,326 × 1 | gpt-oss-120b (low effort, temperature 0) with simple-evals' grader template @ 652c89d0 |
| AA-LCR | ArtificialAnalysis/AA-LCR @ 9a77ef56 (v1.1 keys) | 100 × 1 | gpt-oss-120b (medium effort, temperature 0) with AA-LCR v1.1's judge prompt |
| OpenAI MRCR | openai/mrcr @ f4c69fae | 200 (2 and 8 needles, 20 per bin, 4K–128K tokens) | the dataset README's grade(): prefix check, then SequenceMatcher ratio |
The Dory card names NeMo Gym as its harness. Gym has no Dory recipe, so experiment 2 ported its Super 3.5 recipes at the commits their published numbers were made with (Gym ae8d388d for GPQA and IFBench, 5a7dd6fe for AA-LCR) and ran them beside this harness:
aai/mcq-4choices) and its lenient extractor: 66.4 / 73.2 / 72.5 at 1 / 2 / 4 loops (2 repeats each, one fixed answer order per question, so position bias is in it too), against the card's 69.19 / 72.41 / 72.16.| Configuration | Weights | Sampling | Chat settings | Ran on |
|---|---|---|---|---|
| Dory 4B, 1 loop | nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16 | temperature 1.0, top_p 0.95 | 1 loop; | H200, B200 |
| Dory 4B, 2 loops | nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16 | temperature 1.0, top_p 0.95 | 2 loops; | B200, H200 |
| Dory 4B, 4 loops | nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16 | temperature 1.0, top_p 0.95 | 4 loops; | H200, B200 |
| Qwen3.5-4B | Qwen/Qwen3.5-4B | temperature 1.0, top_p 0.95, top_k 20, min_p 0, presence_penalty 1.5 | – | B200, H200 |
| Nemotron 3 Nano 4B | nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 | temperature 1.0, top_p 0.95 | – | H200, B200 |
| Gemma 4 E4B | google/gemma-4-E4B-it @ ee0ef602 | temperature 1.0, top_p 0.95, top_k 64 | enable_thinking=True | H200, B200 |
| Granite 4.2 3B | ibm-granite/granite-4.2-3b @ e459acce | temperature 1.0, top_p 0.95 | enable_thinking=True | B200, H200 |
| Granite 4.2 8B | ibm-granite/granite-4.2-8b @ f8de16cd | temperature 1.0, top_p 0.95 | enable_thinking=True | H200, B200 |
| MiniCPM5-2B | openbmb/MiniCPM5-2B @ f9740005 | temperature 1.0, top_p 0.95, min_p 0.0 | enable_thinking=True | B200, H200 |
| LFM2.5-2.6B | LiquidAI/LFM2.5-2.6B @ 654f9463 | temperature 0.1, top_k 50, repetition_penalty 1.1 | – | H200, B200, H100 |
| Jamba2-3B | ai21labs/AI21-Jamba2-3B @ 525c6c8e | temperature 0.6, top_p 0.95 | – | B200, H200 |
| Olmo 3 7B Think | allenai/Olmo-3-7B-Think @ d97e442d | temperature 0.6, top_p 0.95 | – | B200, H200, H100 |
| Qwen3.5-9B | Qwen/Qwen3.5-9B @ c2022362 | temperature 1.0, top_p 0.95, top_k 20, min_p 0.0, presence_penalty 1.5 | – | H200, B200 |
| MiMo-V2.6 Distill 9B | XiaomiMiMo/MiMo-V2.6-Distill-Qwen-9B @ 2367e865 | temperature 0.6, top_p 0.95, top_k 20 | enable_thinking=True | B200, H200 |
| Ornith 1.0 9B | ornith-ai/Ornith-1.0-9B @ 83dc1f5e | temperature 0.6, top_p 0.95, top_k 20 | – | B200, H200 |
| gpt-oss-20b (high) | openai/gpt-oss-20b | temperature 1.0, top_p 1.0 | reasoning_effort=high | H200 |
| Qwen3.6-35B-A3B | Qwen/Qwen3.6-35B-A3B @ 995ad96e | temperature 1.0, top_p 0.95, top_k 20, min_p 0.0, presence_penalty 1.5 | – | H200 |
| Gemma 4 26B-A4B | google/gemma-4-26B-A4B-it @ 4d7ae498 | temperature 1.0, top_p 0.95, top_k 64 | enable_thinking=True | H200, B200 |
| Nemotron 3.5 Lightning 30B-A3B | nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16 @ a9904d24 | temperature 1.0, top_p 0.95 | – | H200 |
| LFM2.5-24B-A2B | LiquidAI/LFM2.5-24B-A2B @ 1769516a | temperature 0.1, top_k 50, repetition_penalty 1.05 | – | H200 |
| GLM-4.7-Flash | zai-org/GLM-4.7-Flash @ 7dd20894 | temperature 1.0, top_p 0.95 | – | H200 |
| gpt-oss-20b (medium) | openai/gpt-oss-20b | temperature 1.0, top_p 1.0 | reasoning_effort=medium | H200 |
| gpt-oss-20b (low) | openai/gpt-oss-20b | temperature 1.0, top_p 1.0 | reasoning_effort=low | H200 |
| LFM2.5-2.6B at temperature 1.0 | LiquidAI/LFM2.5-2.6B @ 654f9463 | temperature 1.0, top_p 0.95, top_k -1, repetition_penalty 1.0 | – | B200 |
A score is the mean over questions of each question's mean over its repeats. Two error bars appear. Against the card, which measured the same questions, the yardstick is the sampling standard error: the run-to-run noise of repeats on those questions. Between loop counts or models, differences are paired by question: the spread of the per-question differences divided by √questions. Each launch is seeded from its run name, so repeats are independent draws; byte-identical texts are checked for before pooling. Long-context columns (AA-LCR, MRCR) and IFNovel are reported beside the index, not in it.
The same Dory job (198 GPQA prompts × 4,096 tokens, 1 loop, batch 256) on eight Modal GPU types. Decode-bound evaluation favours memory bandwidth, so the cheapest card per hour is the most expensive per token.
| GPU | $ / hour | Output tokens / s | Million tokens per $ |
|---|---|---|---|
| B200 | 6.25 | 16,782 | 9.67 |
| H200 | 4.54 | 11,053 | 8.76 |
| H100 | 3.95 | 9,498 | 8.66 |
| A100-80GB | 2.50 | 2,470 | 3.56 |
| A100-40GB | 2.10 | 1,932 | 3.31 |
| L40S | 1.95 | 1,250 | 2.31 |
| A10G | 1.10 | 658 | 2.15 |
| L4 | 0.80 | 393 | 1.77 |
Seven review passes checked each benchmark's prompt, extraction and grading against the reference code and real outputs, and a sceptic tried to refute each finding; 17 of 37 held, grouped into the six fixes above.