Elk model in de arena gaat door dezelfde 9 benchmarks op dezelfde DGX Spark. 5 closed-loop voor pure throughput, 4 open-loop voor hoe het voelt onder echte concurrency. Hieronder: het waarom, het hoe, en alle commando's één-op-één. Hoort bij de gids LLMs draaien op de DGX Spark.
02Waarom 9 benchmarks
Eén benchmark is geen benchmark. Een model dat 120 t/s haalt op een lege loop kan onder 32 gelijktijdige requests zomaar instorten naar 14 t/s per user. En een model met snelle tokens/sec kan een TTFT hebben van 4 seconden. Onbruikbaar voor chat, prima voor batch.
Dus: meet beide. Throughput in isolatie (closed-loop) en gedrag onder druk (open-loop). Korte prompts, lange prompts, korte outputs, lange outputs. Zo zie je waar een model écht voor geschikt is, niet alleen wat de release notes claimen.
9
benchmarks
3
runs · seed 42
±2%
run-to-run
03Twee tools, twee vragen
Aclosed-loop
llama-benchy
Hoe snel kan dit model genereren als er niemand op het kanaal zit?
Closed-loop wil zeggen: zodra een request klaar is, stuur ik direct de volgende. Geen wachttijden tussen requests, geen burst-pieken, alleen pure decode throughput. Resultaat: tokens/sec per stream, met een schone TTFT als referentie.
Ideaal voor: één gebruiker, batch-processing, code completion. Niet representatief voor: een chat-app met veel gelijktijdige sessies.
Bopen-loop
vllm bench serve
Hoe houdt het zich onder X gelijktijdige users die niet wachten op elkaar?
Open-loop genereert requests volgens een Poisson-proces, onafhankelijk van wat de server al aan het doen is. Bij rate 0.3 req/s komt er gemiddeld elke ~3 seconden een nieuwe in, of het vorige antwoord nu klaar is of niet. Dat is hoe productie eruit ziet.
Resultaat: p50/p95 TTFT en per-user tokens/sec onder belasting. TTFT-getallen rapporteer ik wel (boven de 2s gaat je app traag voelen), maar ze sluiten geen modellen uit de ranking.
04De 9 benchmarks
Elke kaart hieronder beschrijft één benchmark: wat het meet, met welke parameters, en waarom die getallen zo gekozen zijn. Klap "view command" uit voor het exacte CLI-commando dat ik draai.
01 · llama-benchy closed-loop
Chat
Korte prompt, lang antwoord. De vorm die als normale chat moet aanvoelen, TTFT bepaalt of het "snappy" is.
De maatstaf voor "voelt het snappy aan?". Korte prompt vraagt weinig prefill, lange output stresst decode. Wat een gewone chat-message er voor de gebruiker uit ziet.
Bij 25k tokens zie je waar het model zijn prefill-budget opmaakt. TTFT springt vaak van honderden ms naar seconden. Belangrijk om te weten waar de muur staat.
Random dataset · 4000 tokens in, 500 tokens uit · request-rate 0.3, burstiness 0.7. Een rustig kantoor.
dataset random rate (req/s) 0,30 burstiness 0,7 prompts 200
Een rustig kantoor: paar mensen tegelijk, gemiddelde lengte. Als dit instort heb je een ander probleem dan welk model. Baseline voor alle open-loop tests.
Synthetische distributies zijn geen vervanging voor echte data. ShareGPT V3 heeft de natuurlijke spreiding van echte gesprekken, kort, lang, code, prozaïsch.
Lange chain-of-thought outputs · 1k in / 4k uit · trage rate (0.2 req/s) want elke request kost veel decode-budget. Test of TTFT stabiel blijft.
dataset random rate (req/s) 0,20 burstiness 1,0 prompts 50
Lange thinking-traces eten decode-budget. Trage rate (0.2 req/s) klinkt niet veel maar elke request kost 4k tokens output. Test of langlopende requests TTFT van nieuwe requests blijven blokkeren.
prefix caching uit · async scheduling per profiel-env
Quant
BF16 · FP8 · NVFP4
elk model in beschikbare precisies
OS
Ubuntu 24.04
CUDA 13.0 · Docker container per profiel
Warmup
3 runs / cijfer
gerapporteerd is mean ± stddev · seed 42
06Reproduceerbaarheid
Alle commando's hierboven zijn copy-paste-baar. Geen verborgen flags, geen dataset-tweaks, geen seed-shopping.
Voor reproductie heb je nodig: een Spark (of vergelijkbare Blackwell-GPU met genoeg VRAM voor de checkpoints), vLLM 0.19+, en de twee benchmark-tools. De prompt-datasets zijn standaard vLLM-defaults: ShareGPT V3 voor open-loop, synthetic random voor de baselines.
Heb je een afwijkend resultaat? Dat is interessant. Laat het me weten. Vooral als je een ander platform gebruikt: het hele punt is om te zien waar Spark wel/niet matcht met andere setups.
✓
Vaste seed (42) over alle runs
✓
Identieke vLLM-versie per modelset
✓
3 runs gerapporteerd als mean ± stddev
✓
Cijfers bij ±2% run-to-run
✓
Geen prefix caching in default profiel
✓
Geen latency-gate: alle modellen blijven zichtbaar, ranking op throughput + quality
Een model dat je graag in de suite ziet?
Stuur een huggingface-link of vLLM-config. Als hij past op Spark draai ik 'm en publiceer ik de cijfers, gewoon, in dezelfde tabel.