Back to Token Labs

Token Labs
Benchmark Dashboard

Reproducible inference performance across modern accelerator platforms — real data, open lab.

AMD Instinct MI300X 192 GiB HBM3 ROCm · gfx942 NVIDIA DGX Spark · GB10 Updated 2026-08-29

Published findings appear first. These counters describe the open lab notebook, including planned work and documented failures; they are not a publication score. Browse study notes.

Notebook experiments
14
Completed
2
In Progress / Pending
4
Queued
6
Documented failures
2
nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4 on two DGX Sparks — Dynamo vs llm-d P/D

Matched disaggregated runs with prefill pinned to spark-01 and decode to spark-02. NVIDIA AIPerf 0.12.0, streaming chat, seed 42, exact-length synthetic prompts, one concurrency wave per point (two requests at c=1), fp8 KV, and DSpark speculative decoding. Prefix caching was disabled on both Dynamo and llm-d workers. Both paths performed remote prefill and transferred KV with NIXL; Dynamo used its frontend and llm-d used the decode-sidecar path.

Dynamo peak · 1K/8K
729.76 tok/s
c=32
llm-d peak · 1K/8K
595.51 tok/s
c=32 · prefix cache off
Reliability
36 / 36
zero request errors
ISL / OSLcDynamo tok/sllm-d tok/sDifference
1K / 8K32729.76595.51Dynamo +22.5%
8K / 8K32629.86526.60Dynamo +19.6%
8K / 1K32270.74220.97Dynamo +22.5%
Prefix-cache-off P/D Pareto curves

Up and to the right is better: total output throughput is plotted against per-user output throughput. Select a workload to compare all six concurrency points.

Machine-readable 18-row matrices: Dynamo, llm-d, and combined comparison. This prefix-cache-off rerun supersedes the earlier cached Dynamo dataset. All 36 current comparison cells completed without request errors. Actual output lengths can differ slightly from requested lengths because of tokenizer and stop-token behavior. Request metrics are authoritative; sidecar server-counter resets produced telemetry warnings without benchmark request failures.

Qwen3.8-27B on AMD MI300X — aggregated single-replica controls

Single-replica control. Aggregated vLLM serving on separate 1× AMD Instinct MI300X instances. NVIDIA AIPerf 0.12.0, streaming chat, concurrency 4, four measured requests per point, fixed token lengths, seed 42. Dynamo path: frontend → vLLM worker. llm-d path: Envoy → EPP → vLLM. Use these results for per-replica capacity and wrapper overhead only; they do not test multi-worker routing, load balancing, horizontal scaling, or failover.

Decode-heavy · 1K/8K
Dynamo +58.8%
132.06 vs 83.17 output tok/s
Long-context · 8K/8K
Throughput parity
83.71 vs 83.27 output tok/s
Prefill-heavy · 8K/1K
llm-d +9.7%
105.28 vs 95.97 output tok/s
ISL / OSLFrameworkOutput tok/sAvg TTFTAvg ITLAvg latency
1K / 8KDynamo agg132.06546.63 ms30.22 ms248.06 s
llm-d agg83.17804.06 ms48.00 ms393.91 s
8K / 8KDynamo agg83.715,238.68 ms47.14 ms391.37 s
llm-d agg83.274,882.57 ms47.44 ms393.44 s
8K / 1KDynamo agg95.97390.90 ms41.31 ms42.65 s
llm-d agg105.28411.18 ms37.61 ms38.89 s

Versions: Dynamo 1.4.2 with vLLM 0.28.1rc1.dev43; llm-d with vLLM 0.28.0. Both used --max-model-len 32768, GPU memory utilization 0.90, exact output lengths, and the same model. Four requests per point make this a controlled snapshot rather than a statistically robust capacity study.

Raw summary: mi300x-qwen38-aiperf.json

Qwen/Qwen3.8-27B on AMD MI300X — Dynamo vs llm-d P/D (partial)

Partial run · capacity interrupted. Two MI300X workers per system, one prefill and one decode. Dynamo has 18/18 validated points; 5/18 llm-d points were recovered before the RunPod host became unavailable. Missing cells are pending and will be replaced when MI300X capacity returns.

Dynamo P/D
18 / 18
validated · zero failures
llm-d P/D recovered
5 / 18
clean-cache · zero failures
Measured 1K / 8K
Within 1.0%
through c=16
ISL / OSLcDynamo tok/sllm-d tok/sllm-d mean TTFTllm-d mean ITLStatus
1K / 8K166.0265.501,314.20 ms15.11 msMeasured
2123.57122.482,424.61 ms16.03 msMeasured
4213.55211.644,640.94 ms18.34 msMeasured
8356.17355.509,180.36 ms21.39 msMeasured
16620.59616.0717,645.34 ms23.60 msMeasured
321,007.86Pending
8K / 8K161.93Pending
2114.22Pending
4192.02Pending
8310.49Pending
16494.70Pending
32738.25Pending
8K / 1K151.65Pending
282.13Pending
4121.75Pending
8170.24Pending
16217.73Pending
32254.97Pending

Validation: producer/consumer roles, matching NIXL compatibility hash, a successful 195.812 MiB remote KV transfer, and 0.0% local prefix-cache hits. Four additional jobs completed but their numeric artifacts were not recovered, so they remain pending.

Machine-readable data: mi300x-qwen38-disagg-partial.json

Nemotron 3.5 on NVIDIA DGX Spark — aggregated single-replica controls

Single-replica control. Same model, same weights, same KV dtype, same speculative decoder — only the serving framework differs. Measured with NVIDIA AIPerf from the controller node, hitting each backend directly (no gateway in the path). Model: nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4 · modelopt_fp4 weights · fp8 KV · dspark spec-decode (3 tokens) · TP=1 · DGX Spark GB10 · ISL 1024 / OSL 256 · concurrency 1–32 · one model replica per arm. This curve measures per-replica capacity and wrapper overhead, not multi-worker routing or horizontal scaling.

Up and to the right is better: y is what the box produces in total, x is what a single user feels. Raising concurrency walks each curve up and to the left — you buy aggregate throughput with per-user speed.

Experiment Registry

All planned and completed experiments. Click any row to expand hypothesis and notes.

Experiment Framework Status Throughput
(tok/s, c=32)
TTFT p50
(ms)
ITL p50
(ms)
Optimization Journey — Ablation Study

Lab notebook · not a published finding. Estimated deltas remain visible as hypotheses until the matched runs complete.

Progressive optimization stack on Qwen/Qwen2.5-7B-Instruct · vLLM standalone → llm-d · DGX Spark GB10 · spark-01 · ~150 tok input / 256 tok output · all concurrency levels (c=1, c=8, c=32)

Throughput vs TTFT p50 — Optimization Frontier

Each point = one experiment. Path shows cumulative optimization journey. Select concurrency level above to switch view. Bottom-right = optimal (high throughput, low TTFT).

Output Throughput (tok/s) — all concurrency levels
TTFT p50 (ms) — all concurrency levels — lower is better
Technique Impact — Incremental Gain per Step

Marginal throughput and TTFT improvement each optimization adds vs the previous step. Model: Qwen/Qwen2.5-7B-Instruct · spark-01 GB10 · c=32 · ~150 tok input / 256 tok output

Showing estimated deltas — actual results pending
ISL/OSL Performance Sweep

Throughput vs latency curves across concurrency levels (c=1,4,8,16,32) and input/output length combinations. Model: Qwen/Qwen2.5-7B-Instruct · Full-stack config (exp9) · DGX Spark GB10 · spark-02

ISL / OSL
Y-Axis Metric
X-Axis
Nemotron-120B NVFP4 — ISL/OSL Performance Sweep

Throughput vs latency across concurrency levels (c=1,2,4,8) and input/output length combinations. Model: nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4 · NVFP4 (Marlin backend, fp8 KV cache) · vllm-cu130-nightly · DGX Spark GB10 · spark-01 · single B200 · 2026-04-15

ISL / OSL
Y-Axis Metric
X-Axis
Peak Numbers at Max Concurrency (c=8)
ISL/OSL Peak Throughput TTFT p50 (c=1) TTFT p99 (c=8)
ISL128/OSL128 79.7 tok/s 341 ms 1,127 ms
ISL512/OSL256 64.1 tok/s 538 ms 3,373 ms
ISL1024/OSL512 57.6 tok/s 813 ms 6,083 ms
ISL2048/OSL512 49.0 tok/s 1,663 ms 11,990 ms
Qwen3.5-27B GPTQ-Int4 — ISL/OSL Performance Sweep

Throughput vs latency across concurrency levels (c=1,8,32) and input/output length combinations. Model: Qwen/Qwen3.5-27B-GPTQ-Int4 · GPTQ-Int4 (Marlin backend, enforce-eager) · vllm-cu130-nightly · DGX Spark GB10 · spark-01 · single B200 · 2026-04-17

ISL / OSL
Y-Axis Metric
X-Axis
Peak Numbers at Max Concurrency (c=32)
ISL/OSL Peak Throughput TTFT p50 (c=1) ITL p50 (c=32)
ISL1024/OSL1024 104.1 tok/s 1,197 ms 179 ms
ISL4096/OSL1024 83.1 tok/s 3,278 ms 207 ms
ISL1024/OSL4096 59.6 tok/s 459 ms 134 ms
Serving Framework Comparison

SGLang vs TensorRT-LLM (PyTorch backend) vs llm-d (disaggregated vLLM) on identical workloads. Model: Qwen/Qwen2.5-7B-Instruct · TP=1 · DGX Spark GB10 · 5 ISL/OSL combos × 5 concurrency levels

vLLM Optimization Waterfall

Lab notebook · data pending. No deployment recommendation is made from this section.

Throughput delta relative to baseline for each optimization. Green = improvement, red = regression. Model: Qwen/Qwen2.5-7B-Instruct · DGX Spark GB10 · enforce_eager → CUDA graphs

Data pending — optimization experiments running