Skip to content

Benchmarks

Every number is a receipt.

The website is a build artifact of the repository. The ladder comes from the published campaign, the gate records from committed baselines across every branch, stamped with commit and date. If a number is not in the repo, it is not on this page.

At C=128
1.333×

the matched vLLM configuration, same GB10

Aggregate
478.11

tok/s at C=128, Qwen3.8-27B-NVFP4

Rungs
8/8

won against matched vLLM + MTP

Gate records
1404

856 committed, 548 from 575 branches

The ladder

Qwen3.8-27B NVFP4 concurrency ladder

Atlas vs vLLM 0.27.1, C=1..128, every workload axis matched. same box, same checkpoint, same client, back-to-back legs.

Faster than vLLM at every concurrency, C=1 to 128

unsloth/Qwen3.8-27B-NVFP4 on one GB10. mean tok/s over 3 timed reps (1 warmup discarded). The matched baseline runs vLLM's own MTP speculative decoding at K=4, same as Metrale, on the same box, checkpoint, client and prompts. Margin ranges 1.012×–1.333× against that matched configuration at each rung.

Atlas vLLM + MTP vLLM, no speculation config differs
0129258387516tok/s1248163264128concurrent requestsAtlas · C=1 · 23.59 tok/s · mean of 3 repsAtlas · C=2 · 41.02 tok/s · mean of 3 repsAtlas · C=4 · 74.21 tok/s · mean of 3 repsAtlas · C=8 · 125.95 tok/s · mean of 3 repsAtlas · C=16 · 203.36 tok/s · mean of 3 repsAtlas · C=32 · 291.01 tok/s · mean of 3 repsAtlas · C=64 · 386.63 tok/s · mean of 3 repsAtlas · C=128 · 478.11 tok/s · mean of 3 repsvLLM + MTP · C=1 · 19.72 tok/s · mean of 3 repsvLLM + MTP · C=2 · 37.11 tok/s · mean of 3 repsvLLM + MTP · C=4 · 71.61 tok/s · mean of 3 repsvLLM + MTP · C=8 · 124.48 tok/s · mean of 3 repsvLLM + MTP · C=16 · 197.03 tok/s · mean of 3 repsvLLM + MTP · C=32 · 283.48 tok/s · mean of 3 repsvLLM + MTP · C=64 · 361.39 tok/s · mean of 3 repsvLLM + MTP · C=128 · 358.57 tok/s · mean of 3 repsvLLM, no speculation · C=1 · 11.04 tok/s · mean of 3 repsvLLM, no speculation · C=2 · 21.34 tok/s · mean of 3 repsvLLM, no speculation · C=4 · 41.20 tok/s · mean of 3 repsvLLM, no speculation · C=8 · 78.18 tok/s · mean of 3 repsvLLM, no speculation · C=16 · 137.11 tok/s · mean of 3 repsvLLM, no speculation · C=32 · 219.50 tok/s · mean of 3 repsvLLM, no speculation · C=64 · 312.26 tok/s · mean of 3 repsvLLM, no speculation · C=128 · 390.42 tok/s · mean of 3 reps
Throughput in tok/s. Ratio is Metrale over the matched vLLM + MTP configuration at that rung. The unmatched no-speculation vLLM leg is shown, not scored.
CMetralevLLM + MTPvLLM, no speculationRatio
123.5919.7211.041.196×
241.0237.1121.341.105×
474.2171.6141.201.036×
8125.95124.4878.181.012×
16203.36197.03137.111.032×
32291.01283.48219.501.027×
64386.63361.39312.261.070×
128478.11358.57390.421.333×
Exact configuration and provenance
Checkpoint
unsloth/Qwen3.8-27B-NVFP4
Hardware
NVIDIA GB10 Grace Blackwell, 121.7 GB unified — dgx2 (spark-43fa)
Workload
ISL 128 / OSL 1024, 3 timed reps + 1 warmup, temperature 0, seed 42
Parity
disabled on both engines via chat_template_kwargs.enable_thinking=false; presence_penalty and frequency_penalty pinned to 0.0 on both engines

Atlas Atlas 1.0.0-beta-preview

Round 11 throughout, except C=2. C=2 is the 2026-08-18 hardening run (c2_atlas_dgx2_20260818.json), not round 8: the certified table originally carried round 8's 38.95 there, which won by 1.004x -- a margin inside either engine's run-to-run spread. Both legs were re-measured back to back on dgx2 on 2026-08-18 (Atlas 15:05, vLLM+MTP 15:20) and that PAIR replaced the earlier pair, which is why the Atlas number rose to 41.02 while the paired vLLM number fell to 37.11 and the margin moved to 1.105x with non-overlapping distributions. A round-11 C=2 exists at 40.42 (l38_r11_c2.json) but has no same-day vLLM leg, so it is not publishable as a pair. See RESULTS.md, C=2 HARDENED.

Buildbce152b18

Certified at 4012c9b7e1, which differs only in doc comments and gate machinery -- no executable change. Merged to main as 60370b9532.

SpeculationMTP, K=4 (--num-drafts 3); self-disables above 32 concurrent sequences
EnvATLAS_PREFILL_CODISPATCH=1 ATLAS_FP8_ROWWISE=1 ATLAS_MTP_DCUT_RATIO=1.0 ATLAS_MTP_K_LADDER=1:3,2:1,4:2,8:2,16:1
Commandspark serve unsloth/Qwen3.8-27B-NVFP4 --host 0.0.0.0 --port 8888 --model-name unsloth/Qwen3.8-27B-NVFP4 --max-seq-len 2048 --max-batch-size 128 --gpu-memory-utilization 0.85 --kv-cache-dtype fp8 --enable-prefix-caching true --ssm-cache-slots 8 --ssm-checkpoint-interval 32 --speculative --num-drafts 3 --mtp-quantization bf16 --scheduling-policy fifo --tool-call-parser qwen3_coder --disable-tool-grammar true --disable-thinking --request-timeout 0 --ssm-h-dtype f16-pool --gdn-fused-norm --ssm-batched-recurrent --ssm-tail-midchunk false --mtp-gate force --prefill-varlen-batch --no-tui

vLLM + MTP vLLM 0.27.1

The apples-to-apples reference: ctx 2048, batch cap 128, util 0.85, fp8 KV, prefix caching, thinking off and MTP K=4 -- every axis matched to Atlas. vLLM at its best, not a handicapped baseline.

Buildvllm/vllm-openai:latest @ sha256:0a51ea5b4ae2dc5d81890e5173f54203d2a3ae0cfffe51b8fd2afd4391bfd967
SpeculationvLLM's own Qwen3_5MTP, K=4 (num_speculative_tokens=3)
EnvHF_HUB_OFFLINE=1
Commandvllm serve --model unsloth/Qwen3.8-27B-NVFP4 --served-model-name unsloth/Qwen3.8-27B-NVFP4 --host 0.0.0.0 --port 8001 --max-model-len 2048 --max-num-seqs 128 --gpu-memory-utilization 0.85 --enable-prefix-caching --dtype bfloat16 --kv-cache-dtype fp8 --speculative-config '{"method":"mtp","num_speculative_tokens":3}'

vLLM, no speculation vLLM 0.27.1

Not matched to Metrale: bf16 KV cache (Atlas and the MTP leg use fp8); ctx 4096 (the matched legs use 2048); no speculative decoding. Shown for completeness. It is not the published denominator.

Unmatched fingerprint: bf16 KV, ctx 4096, no speculation. It beats vLLM+MTP at C=128 (390.42 vs 358.57) because MTP verification costs vLLM more than it gains 128-wide. Plotted for completeness. The published ratio uses the matched MTP leg, not this one.

Buildvllm/vllm-openai:latest @ sha256:0a51ea5b4ae2dc5d81890e5173f54203d2a3ae0cfffe51b8fd2afd4391bfd967
Speculationnone
EnvHF_HUB_OFFLINE=1
Commandvllm serve --model unsloth/Qwen3.8-27B-NVFP4 --served-model-name unsloth/Qwen3.8-27B-NVFP4 --host 0.0.0.0 --port 8001 --max-model-len 4096 --max-num-seqs 128 --gpu-memory-utilization 0.85 --enable-prefix-caching --dtype bfloat16 --kv-cache-dtype bfloat16

Per-rung detail

SeriesCtok/smedianspreadTTFT p50TPOT p50source file
Atlas123.5923.552.78%682.54 ms41.84 msl38_r11_c1.json
Atlas241.0241.374.15%795.2 ms47.53 msc2_atlas_dgx2_20260818.json
Atlas474.2174.292.79%1296.3 ms51.76 msl38_r11_c4.json
Atlas8125.95125.832.92%2331.47 ms59.01 msl38_r11_c8.json
Atlas16203.36203.451.23%4252.58 ms72.67 msl38_r11_c16.json
Atlas32291.01292.502.43%8281.81 ms98.91 msl38_r11_c32.json
Atlas64386.63387.481.68%16052.93 ms148.81 msl38_r11_c64.json
Atlas128478.11480.052.05%31760.85 ms234.6 msl38_r11_c128.json
vLLM + MTP119.7219.721.89%286.71 ms50.37 msvllm_fp8_mtp_reference.json
vLLM + MTP237.1137.182.94%390.84 ms53.22 msc2_vllm_mtp_dgx2_20260818.json
vLLM + MTP471.6172.052.82%604.84 ms54.51 msvllm_fp8_mtp_reference.json
vLLM + MTP8124.48124.311.25%936.14 ms60.8 msvllm_fp8_mtp_reference.json
vLLM + MTP16197.03197.853.51%1620.35 ms76.25 msvllm_fp8_mtp_reference.json
vLLM + MTP32283.48284.201.27%3066.96 ms107.45 msvllm_fp8_mtp_reference.json
vLLM + MTP64361.39361.180.21%5278.74 ms167.48 msvllm_fp8_mtp_reference.json
vLLM + MTP128358.57358.610.44%8500.7 ms269.54 msvllm_fp8_mtp_reference.json
vLLM, no speculation111.0411.050.32%155.95 ms90.4 msvllm_latest_reference.json
vLLM, no speculation221.3421.340.04%235.35 ms93.52 msvllm_latest_reference.json
vLLM, no speculation441.2041.200.03%419.59 ms96.77 msvllm_latest_reference.json
vLLM, no speculation878.1878.180.02%729.44 ms101.71 msvllm_latest_reference.json
vLLM, no speculation16137.11137.110.04%1176.06 ms115.56 msvllm_latest_reference.json
vLLM, no speculation32219.50219.450.09%2240.16 ms143.58 msvllm_latest_reference.json
vLLM, no speculation64312.26312.310.12%4009.21 ms200.87 msvllm_latest_reference.json
vLLM, no speculation128390.42390.150.31%6710.78 ms320.84 msvllm_latest_reference.json

Harness bench/ladder38/harness_w55_conc_ladder.py. Two harness revisions appear above: 6412b12d4d — vLLM legs. Does not send the penalty keys.; 1c77e1d8e9 — Atlas legs (rounds 7-11). Adds explicit presence_penalty/frequency_penalty = 0.0. The only difference is those two keys. vLLM already defaults both to 0.0, so its sampling is byte-identical either way; the keys exist to stop Atlas's non_thinking preset injecting presence_penalty=1.5. Both engines therefore ran identical sampling.

Full campaign log, including every rung we lost on the way and the three claims we retracted: bench/ladder38/RESULTS.md. Generated 2026-09-16T23:47:53Z from the committed measurements.

The gates

Every gate record, across every branch.

An Atlas image ships only after the serve matrix passes: every model boots, stays coherent (greedy determinism, no token leakage, tool reliability), and holds throughput within 10% of its committed baseline. Union of gate records at build time, so the newest run shows even before its pull request merges. Provenance on every point.

Agentic Webserver Test

Qwen3.6-35B-A3B-FP8
10/10 webserver_ok
679 s Σ wall
✓ PASS latest · 2026-09-23 · n=10
Σ wall time s fail median of N
3341,1221,9092026-08-062026-08-212026-09-23budget 1300sbudget 1000sbudget 1800sbudget 700sΣ wall (s) 605.2 s · 2026-08-06 · PASS · click for the recordΣ wall (s) 489.19 s · 2026-08-06 · PASS · click for the recordΣ wall (s) 443.01 s · 2026-08-06 · has a failure · click for the recordΣ wall (s) 734.41 s · 2026-08-07 · has a failure · click for the recordΣ wall (s) 986.12 s · 2026-08-07 · PASS · click for the recordΣ wall (s) 786.91 s · 2026-08-07 · has a failure · click for the recordmedian of 4 runs 740.07 s · 2026-08-07 – 2026-08-08 · PASS · click for the 4 recordsmedian of 4 runs 782.73 s · 2026-08-08 – 2026-08-09 · PASS · click for the 4 recordsΣ wall (s) 733.85 s · 2026-08-09 · has a failure · click for the recordΣ wall (s) 773.61 s · 2026-08-09 · PASS · click for the recordΣ wall (s) 712.86 s · 2026-08-10 · has a failure · click for the recordΣ wall (s) 938.37 s · 2026-08-10 · PASS · click for the recordΣ wall (s) 745.66 s · 2026-08-10 · has a failure · click for the recordmedian of 4 runs 730.81 s · 2026-08-10 – 2026-08-10 · PASS · click for the 4 recordsmedian of 4 runs 847.57 s · 2026-08-11 – 2026-08-12 · PASS · click for the 4 recordsmedian of 4 runs 720.8 s · 2026-08-12 – 2026-08-15 · PASS · click for the 4 recordsmedian of 4 runs 692.1 s · 2026-08-15 – 2026-08-17 · PASS · click for the 4 recordsmedian of 4 runs 812.96 s · 2026-08-17 – 2026-08-18 · PASS · click for the 4 recordsmedian of 4 runs 818.32 s · 2026-08-18 – 2026-08-18 · PASS · click for the 4 recordsmedian of 4 runs 721.18 s · 2026-08-19 – 2026-08-19 · PASS · click for the 4 recordsmedian of 4 runs 650.27 s · 2026-08-20 – 2026-08-21 · PASS · click for the 4 recordsmedian of 4 runs 663.23 s · 2026-08-21 – 2026-08-22 · PASS · click for the 4 recordsmedian of 4 runs 747.08 s · 2026-08-22 – 2026-08-22 · PASS · click for the 4 recordsmedian of 4 runs 594.63 s · 2026-08-22 – 2026-08-23 · PASS · click for the 4 recordsmedian of 4 runs 964.26 s · 2026-08-23 – 2026-08-23 · PASS · click for the 4 recordsmedian of 4 runs 914.04 s · 2026-08-23 – 2026-08-24 · PASS · click for the 4 recordsmedian of 4 runs 896.37 s · 2026-08-24 – 2026-08-27 · PASS · click for the 4 recordsmedian of 4 runs 647.33 s · 2026-08-28 – 2026-09-01 · PASS · click for the 4 recordsmedian of 4 runs 705.38 s · 2026-09-02 – 2026-09-06 · PASS · click for the 4 recordsmedian of 4 runs 794.54 s · 2026-09-06 – 2026-09-07 · PASS · click for the 4 recordsmedian of 4 runs 753.92 s · 2026-09-08 – 2026-09-11 · PASS · click for the 4 recordsmedian of 4 runs 522.27 s · 2026-09-11 – 2026-09-13 · PASS · click for the 4 recordsmedian of 4 runs 606.51 s · 2026-09-13 – 2026-09-15 · PASS · click for the 4 recordsmedian of 4 runs 576.75 s · 2026-09-15 – 2026-09-17 · PASS · click for the 4 recordsmedian of 4 runs 565.89 s · 2026-09-17 – 2026-09-18 · PASS · click for the 4 recordsmedian of 4 runs 565.6 s · 2026-09-18 – 2026-09-19 · PASS · click for the 4 recordsmedian of 4 runs 566.07 s · 2026-09-19 – 2026-09-20 · PASS · click for the 4 recordsmedian of 4 runs 566.86 s · 2026-09-20 – 2026-09-21 · PASS · click for the 4 recordsmedian of 3 runs 567.35 s · 2026-09-21 – 2026-09-21 · PASS · click for the 3 recordsmedian of 3 runs 569.07 s · 2026-09-22 – 2026-09-23 · PASS · click for the 3 recordsΣ wall (s) 678.91 s · 2026-09-23 · PASS · click for the record678.91
webserver_ok per run / 10 iterations fail median of N
05102026-08-062026-08-202026-09-23webserver_ok 10 · 2026-08-06 · PASS · click for the recordwebserver_ok 10 · 2026-08-06 · PASS · click for the recordwebserver_ok 7 · 2026-08-06 · has a failure · click for the recordwebserver_ok 8 · 2026-08-07 · has a failure · click for the recordwebserver_ok 10 · 2026-08-07 · PASS · click for the recordwebserver_ok 10 · 2026-08-07 · has a failure · click for the recordmedian of 4 runs 10 · 2026-08-07 – 2026-08-08 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-08 – 2026-08-09 · PASS · click for the 4 recordswebserver_ok 10 · 2026-08-09 · has a failure · click for the recordwebserver_ok 10 · 2026-08-09 · PASS · click for the recordwebserver_ok 9 · 2026-08-10 · has a failure · click for the recordwebserver_ok 10 · 2026-08-10 · PASS · click for the recordwebserver_ok 10 · 2026-08-10 · has a failure · click for the recordmedian of 4 runs 10 · 2026-08-10 – 2026-08-10 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-11 – 2026-08-12 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-12 – 2026-08-15 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-15 – 2026-08-17 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-17 – 2026-08-18 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-18 – 2026-08-18 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-19 – 2026-08-19 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-20 – 2026-08-21 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-21 – 2026-08-22 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-22 – 2026-08-22 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-22 – 2026-08-23 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-23 – 2026-08-23 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-23 – 2026-08-24 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-24 – 2026-08-27 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-08-28 – 2026-09-01 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-02 – 2026-09-06 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-06 – 2026-09-07 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-08 – 2026-09-11 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-11 – 2026-09-13 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-13 – 2026-09-15 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-15 – 2026-09-17 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-17 – 2026-09-18 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-18 – 2026-09-19 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-19 – 2026-09-20 · PASS · click for the 4 recordsmedian of 4 runs 10 · 2026-09-20 – 2026-09-21 · PASS · click for the 4 recordsmedian of 3 runs 10 · 2026-09-21 – 2026-09-21 · PASS · click for the 3 recordsmedian of 3 runs 10 · 2026-09-22 – 2026-09-23 · PASS · click for the 3 recordswebserver_ok 10 · 2026-09-23 · PASS · click for the record10

Repro: python3 tests/run_all_models.py && python3 tests/gate_results.py --update-baselines · generated at c55767fc, 2026-09-19

Architectures

Verified, in bring up, and next.

MLPerf Inference v6.1 submitted, closed edge division, on both GB10 and gfx1151 from the same CUDA source. Results are under embargo until MLCommons publishes them, and they render here the moment that happens.

GB10 · Blackwell SM121

Verified

NVIDIA DGX Spark

One multi model binary serves a full matrix of hand tuned targets on a single GB10. NVFP4 and FP8, MTP speculative decoding, EP=2 across two Sparks. Every target passes the serve matrix before an image is cut.

gfx1151 · RDNA 3.5

MLPerf submitted

AMD Strix Halo

One codebase, both vendors. The CUDA kernels compile straight for gfx1151 through SCALE by Spectral Compute. AMD provided the Strix Halo desktop the MLPerf Inference v6.1 numbers were submitted on.

Hopper · SM90

Bring up

NVIDIA H100 and H200

Hopper owned decode and prefill kernels with published receipts in the changelog, bit identical to the reference on the production shapes. Not yet a verified target, and this page will say so until it is.

Blackwell · SM100

Campaign

NVIDIA B200 and GB200

Datacenter Blackwell is the next objective after Hopper, built around the same principle the hardware demonstrates, inference economics improve when the software is designed for the accelerator.

gfx1201 · RDNA 4

In review

AMD Radeon AI PRO R9700

A SCALE target serving Qwen3.8-27B in an open pull request. The compatibility list grows in the open.

Battlemage

In talks

Intel Arc Pro B70

Active conversations with Intel. Nothing is signed and this card will say so until it is.

The MLPerf name and logo are trademarks of MLCommons Association. See the footer.

Questions

The questions we actually get asked.

Short answers. Each one is backed by something on this site or in the repository.

What does verified mean on this site?

An image ships only after the serve matrix passes. Every model boots, stays coherent under greedy determinism with no token leakage and reliable tool calls, and holds throughput within ten percent of its committed baseline. A release that ships slower than its baseline fails the gate. Every number on the benchmarks page is generated from a record in the repository.

Why does concurrency matter more than single stream speed?

Because agentic systems do not send one request at a time. A fleet of tool calling agents sharing a context bus arrives as many concurrent streams, so an engine is judged where the requests pile up. On the published ladder Metrale keeps gaining throughput from C=64 to C=128 while the matched vLLM configuration does not, and an engine that flattens under load caps how many agents a box can run.

Ask the rest in a working session, or read the deployment guide ↗.

Next step

Run the ladder on your workload.

A side by side against your current engine on your hardware inside 48 hours, with the campaign log to match.