De suite definieert voor elk model dezelfde 11 benchmarks op dezelfde DGX Spark: 6 closed-loop voor gecontroleerde throughput en 5 open-loop voor gedrag onder belasting. Per run wordt vastgelegd welke tests compleet, afgebroken of zonder data zijn. Hoort bij de gids LLMs draaien op de DGX Spark.
02Waarom 11 benchmarks
Eén snelheidsmeting laat niet zien hoe een model bij andere belasting reageert. Een model met hoge tokens/sec bij één stream kan onder twintig gelijktijdige requests sterk terugvallen. Een ander model houdt zijn throughput vast, maar laat nieuwe requests lang op hun eerste token wachten. Prima voor batch, vervelend voor chat.
Daarom meet ik de doorvoer bij vaste gelijktijdigheid (closed-loop) en bij onafhankelijk binnenkomende verzoeken (open-loop). Ik varieer ook de lengte van prompts en antwoorden. Dat laat zien hoe de snelheid en wachttijd veranderen per scenario.
11
benchmarks
3
repeats · closed-loop
42
seed · open-loop
03Twee tools, twee vragen
Aclosed-loop
llama-benchy
Hoe schaalt de throughput bij een vast aantal gelijktijdige streams?
Closed-loop houdt per stream steeds een request actief: zodra er één klaar is, volgt de volgende. De suite test vaste concurrency-waarden van 1 tot 20. Elke cel draait drie keer en wordt gerapporteerd als mean ± stddev.
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 plant arrivals onafhankelijk van wat de server al doet. Request rate en burstiness bepalen het patroon; bij 0,3 req/s zit er gemiddeld ongeveer 3,3 seconden tussen arrivals. De generator gebruikt seed 42, zodat dezelfde ingestelde belasting herhaalbaar is.
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. Een open-looptest telt alleen mee als minimaal 99% van de requests slaagt.
04De 11 benchmarks
Elke kaart komt rechtstreeks uit het versievaste benchmarkcontract. Klap "view command" uit voor het reproduceerbare commandotemplate en vervang ORG/MODEL en SERVED_MODEL_NAME. Op een modelpagina zijn die waarden al ingevuld vanuit de runmetadata.
01 · llama-benchyclosed-loop
Chat
Korte prompt met een lang antwoord. Toont de uitvoersnelheid en de wachttijd voor het eerste token.
pp (prompt)
1024
tg (gen)
1024
depth
0
concurrency
1 · 5 · 10
repeats
3
tokens/sec · ttft p50
3 repeats · mean ± stddevview command →hide command ↑
De commando's worden deterministisch opgebouwd uit het versievaste contract en de metadata van elke run.
Start eerst een OpenAI-compatibele vLLM-server met de model- en serverconfig uit de runmetadata. Gebruik daarna het commando op de modelpagina. Voor test 08 moet ShareGPT V3 op /tmp/ShareGPT_V3.json staan; de andere open-looptests genereren synthetische random prompts.
Bij historische runs is het oorspronkelijke argv niet letterlijk opgeslagen. De gepubliceerde commando's zijn daarom gemarkeerde reconstructies uit contract en runmetadata. De bronlink bevat beide Git-revisies, zodat je precies ziet waarop de reconstructie rust.
✓Contract- en runbron vastgezet op een Git-revisie
✓Model-id, served name en toolversies uit runmetadata
✓Closed-loop: 3 repeats als mean ± stddev
✓Open-loop: seed 42, percentielen p50/p90/p95/p99 en minimaal 99% request success
✓Ruwe open-loopresultaten opgeslagen als JSON in /tmp
✓Geen prefix caching in de gepubliceerde runs
Een model dat je
graag in de suite ziet?
Stuur een Hugging Face-link of vLLM-configuratie. Als het model op de Spark past, kan ik het met dezelfde tests vergelijken.