Chaque modèle de l'arena passe les mêmes 9 benchmarks sur le même DGX Spark. 5 en closed-loop pour le throughput pur, 4 en open-loop pour le ressenti sous vraie concurrency. Ci-dessous : le pourquoi, le comment, et toutes les commandes une à une. Va avec le guide faire tourner des LLM sur le DGX Spark.
02Pourquoi 9 benchmarks
Un seul benchmark n'est pas un benchmark. Un modèle qui fait 120 t/s sur une boucle vide peut s'effondrer à 14 t/s par user sous 32 requêtes simultanées. Et un modèle aux tokens/sec rapides peut avoir un TTFT de 4 secondes. Inutilisable pour le chat, parfait pour le batch.
Donc : mesure les deux. Le throughput en isolation (closed-loop) et le comportement sous pression (open-loop). Prompts courts, prompts longs, sorties courtes, sorties longues. C'est comme ça qu'on voit à quoi un modèle est vraiment adapté, pas seulement ce que prétendent les release notes.
9
benchmarks
3
runs · seed 42
±2%
run-to-run
03Deux outils, deux questions
Aclosed-loop
llama-benchy
À quelle vitesse ce modèle génère-t-il quand personne d'autre n'est sur le canal ?
Closed-loop veut dire : dès qu'une requête se termine, j'envoie directement la suivante. Pas d'attente entre les requêtes, pas de pics de burst, juste du décodage pur. Résultat : tokens/sec par stream, avec un TTFT propre comme référence.
Idéal pour : un seul utilisateur, le batch processing, la complétion de code. Pas représentatif de : une app de chat avec beaucoup de sessions simultanées.
Bopen-loop
vllm bench serve
Comment tient-il sous X users simultanés qui ne s'attendent pas les uns les autres ?
L'open-loop génère des requêtes selon un processus de Poisson, indépendamment de ce que le serveur fait déjà. À un rate de 0.3 req/s, une nouvelle arrive en moyenne toutes les ~3 secondes, que la réponse précédente soit prête ou non. C'est à ça que ressemble la production.
Résultat : TTFT p50/p95 et tokens/sec par user sous charge. Je rapporte bien les chiffres de TTFT (au-delà de 2s ton app commence à sembler lente), mais ils n'éliminent aucun modèle du classement.
04Les 9 benchmarks
Chaque carte ci-dessous décrit un benchmark : ce qu'il mesure, avec quels paramètres, et pourquoi ces chiffres sont choisis ainsi. Déplie "view command" pour la commande CLI exacte que je lance.
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 off · async scheduling par env de profil
Quant
BF16 · FP8 · NVFP4
chaque modèle dans les précisions disponibles
OS
Ubuntu 24.04
CUDA 13.0 · conteneur Docker par profil
Warmup
3 runs / chiffre
rapporté en mean ± stddev · seed 42
06Reproductibilité
Toutes les commandes ci-dessus sont copiables-collables. Pas de flags cachés, pas de tweaks de dataset, pas de seed shopping.
Pour reproduire il te faut : un Spark (ou un GPU Blackwell comparable avec assez de VRAM pour les checkpoints), vLLM 0.19+, et les deux outils de benchmark. Les datasets de prompts sont des défauts vLLM standards : ShareGPT V3 pour l'open-loop, synthetic random pour les baselines.
Tu as un résultat différent ? C'est intéressant. Fais-moi signe. Surtout si tu utilises une autre plateforme : tout l'intérêt est de voir où Spark colle ou non avec d'autres setups.
✓
Seed fixe (42) sur tous les runs
✓
Version de vLLM identique par set de modèles
✓
3 runs rapportés en mean ± stddev
✓
Chiffres à ±2% run-to-run
✓
Pas de prefix caching dans le profil par défaut
✓
Pas de latency gate : tous les modèles restent visibles, classement sur throughput + quality
Un modèle que tu aimerais voir dans la suite ?
Envoie un lien huggingface ou une config vLLM. S'il tient sur Spark je le lance et je publie les chiffres, tout simplement, dans le même tableau.