Aller au contenu
Lab

Benchmarks

Laboratoire : mesures enregistrées et comparables.

L'essentiel

  • La collection benchmarks est la mémoire chiffrée du projet : chaque fiche est une mesure (une machine, un runtime, un modèle, une charge, un résultat), jamais une opinion.
  • Les fiches ont deux origines : ours (mesuré par nous, reproductible avec le protocole) et publiées (independent, community, vendor), avec sourceUrl obligatoire.
  • Les composants <Benchmarks /> et <CapacityMatrix /> lisent cette collection : une cellule vide signifie « pas de mesure », jamais « impossible ».
  • Au 16 septembre 2026, toutes les fiches sont des mesures publiées par des tiers, sur des machines Strix Halo équivalentes mais pas toujours un Framework Desktop. Aucune mesure ours n'existe encore.

Ce qu'on enregistre

Chaque fiche décrit une mesure unique avec, dans son frontmatter : la date, la machine (hardware), le système et le noyau, le runtime et sa version, le modèle (model, slug de la collection modèles) et sa quantification, la taille de contexte, le type de prompt, le nombre d'utilisateurs simultanés, les tokens générés, le TTFT, les tokens par seconde en génération et en prompt processing, la mémoire, la puissance et la température si disponibles, le résultat (ok, degraded, failed), l'origine et la série. Le corps précise les conditions exactes, les écarts par rapport au protocole et la lecture qu'on en fait. Le gabarit commenté est content/benchmarks/_template.md (ignoré par le site).

Comment lire un benchmark

ChampSignificationPiège
promptTokensPerSecond (pp)vitesse de lecture du prompt (prefill) ; pp512 = mesure sur 512 tokens 3dépend fortement du backend et de la profondeur de contexte
tokensPerSecond (tg)vitesse de génération ; par utilisateur si concurrentUsers est supérieur à 1l'agrégé (somme des slots) est donné dans le corps, pas dans ce champ
ttftMsdélai avant le premier token 2llama-bench ne le mesure pas ; il vient d'un test de charge HTTP
concurrentUsersslots ou clients actifs pendant la mesure1 par défaut ; les publications utilisent souvent 4, 8, 16
contextSizecontexte configuré, pas forcément rempliune mesure à contexte vide (d0) est plus rapide qu'à 32k remplis
p50 / p95médiane et 95e percentile d'une latence sur N requêtes 1une moyenne cache les requêtes lentes ; ne promettre que des p95
originours, independent, community, vendor, estimatene jamais comparer une estimation à une mesure

Deux mesures ne se comparent que si machine, modèle, quantification, contexte, nombre d'utilisateurs et méthode sont identiques. Le champ series regroupe les fiches conçues pour être comparées.

Origine des données

  • ours : mesuré sur notre machine avec le protocole publié ; c'est le seul niveau qui autorise un engagement envers un client.
  • independent : benchmark publié par un tiers avec conditions détaillées (Level1Techs, Soothill, visorcraft…).
  • community : retour de forum, guide GitHub, blog personnel ; conditions souvent partielles.
  • vendor : chiffre constructeur ou éditeur.
  • estimate : calcul (formule bande passante ÷ poids) ; jamais dans la matrice de capacité.

Quand la machine source n'est pas un Framework Desktop mais un autre Strix Halo 128 Go (Beelink GTR9 Pro, GMKtec EVO-X2/X3), la fiche utilise le slug framework-desktop-ryzen-ai-max-395 et le précise dans son corps : même puce, même mémoire, mais refroidissement et BIOS différents.

Comment ajouter un benchmark

  1. Copier content/benchmarks/_template.md sous le nom AAAA-MM-JJ-<modele>-<runtime>-<source>.md.
  2. Remplir tous les champs connus ; laisser vides les inconnus plutôt que d'inventer.
  3. origin: ours seulement si le protocole de la méthodologie a été suivi ; sinon sourceUrl obligatoire.
  4. Rattacher à une series existante si la mesure est comparable ; sinon en créer une et la documenter ci-dessous.
  5. npm run check:content puis relire la fiche modèle liée : mettre à jour sa section « Performances publiées » si nécessaire.

Détails de syntaxe et champs dans le CONTENT-GUIDE du dépôt.

Séries de comparaison

SérieQuestionFiches
strix-halo-gpt-oss-120bdébit de gpt-oss-120b selon runtime et backendfiltre « Série » = strix-halo-gpt-oss-120b
strix-halo-multi-usermontée en charge de 1 à 16 slots sur un MoE moyenfiltre « Série » = strix-halo-multi-user
strix-halo-dense-70bplafond d'un dense de 70 Mdfiltre « Série » = strix-halo-dense-70b
strix-halo-qwen3-30b-a3bVulkan vs ROCm sur un MoE 30B-A3Bfiltre « Série » = strix-halo-qwen3-30b-a3b
strix-halo-vllm-vs-llamacppvLLM contre llama.cpp à charge égalefiltre « Série » = strix-halo-vllm-vs-llamacpp
strix-halo-large-moetrès gros MoE fortement quantifiésfiltre « Série » = strix-halo-large-moe

Le tableau complet, filtrable par série, modèle, machine et runtime, est affiché sous cette introduction. Deux séries méritent un coup d'œil graphique :

Génération (tok/s) — série strix-halo-gpt-oss-120b

Couleur = origine de la donnée (bleu foncé : mesuré par nous ; vert : indépendant ; bleu : constructeur ; gris : communauté ; ambre : estimation).

Génération (tok/s) — série strix-halo-multi-user

Couleur = origine de la donnée (bleu foncé : mesuré par nous ; vert : indépendant ; bleu : constructeur ; gris : communauté ; ambre : estimation).

Séries prévues quand nos mesures existeront : framework-ours-baseline (llama-bench sur 4 modèles × 2 backends), framework-ours-multi-user (1/2/3/5/10 clients HTTP), framework-ours-long-context (pp à profondeur 4k/32k/64k).

Ce qu'il reste à mesurer

Génération, 1 utilisateur — meilleurs résultats enregistrés (tok/s)

Couleur = origine de la donnée (bleu foncé : mesuré par nous ; vert : indépendant ; bleu : constructeur ; gris : communauté ; ambre : estimation).

17 / 17
16 sept. 2026
gpt-oss-120b MXFP4 — llama.cpp ROCm 7.2.0 (fork Lychee b8182) — 51,1 t/s (Pellegrini)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp fork Lychee-Technology b8182, ROCm 7.2.0
151,1
09 sept. 2026
DeepSeek-R1-Distill-Qwen-32B Q4_K_M — llama.cpp HIP — 11,2 t/s (praveentechworld)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp HIP, ROCm 6.3+ (build non relevé)
111,2
09 sept. 2026
Llama 3.3 70B Q4_K_M — llama.cpp HIP ROCm 6.3+ — 5,1 t/s, contexte 64k (praveentechworld)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp HIP, ROCm 6.3+ (build non relevé)
15,1
30 août 2026
Qwen3.6-35B-A3B UD-Q4_K_M — llama-server -np 1 — 59,2 t/s, TTFT 117 ms (hogeheer)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama-server b9010 (Vulkan RADV)
159,2
30 août 2026
Qwen3.6-35B-A3B UD-Q4_K_M — llama-server -np 16 — 10,4 t/s par utilisateur, 166 agrégés (hogeheer)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama-server b9010 (Vulkan RADV)
1610,4
30 août 2026
Qwen3.6-35B-A3B UD-Q4_K_M — llama-server -np 4 — 32,7 t/s par utilisateur, 130,8 agrégés (hogeheer)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama-server b9010 (Vulkan RADV)
432,7
30 août 2026
Qwen3.6-35B-A3B UD-Q4_K_M — llama-server -np 8 — 20,3 t/s par utilisateur, 162 agrégés (hogeheer)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama-server b9010 (Vulkan RADV)
820,3
10 août 2026
Qwen3.5-122B-A10B Q4_K_XL — llama.cpp b10333 ROCm 7.14 — 13,6 t/s, TTFT 1,78 s (Soothill)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp b10333, ROCm 7.14.0
113,6
10 août 2026
Qwen3.5-122B-A10B GPTQ — vLLM 0.26.0 ROCm 7.14 — 10,3 t/s, TTFT 1,06 s (Soothill)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · vLLM 0.26.0, ROCm 7.14.0
110,3
03 août 2026
Qwen3-Coder-30B-A3B Q4_K_S — llama.cpp ROCm — 73,7 t/s, pp 1 345 t/s (Soothill)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp b10085 / b10216 (ROCm)
173,7
03 août 2026
Qwen3-Coder-30B-A3B Q4_K_S — llama.cpp Vulkan — 97,7 t/s (Soothill)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp b10085 / b10216 (Vulkan)
197,7
21 juil. 2026
gpt-oss-120b — LM Studio (runtime ROCm llama.cpp) — environ 30 t/s (MindStudio)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · LM Studio runtime llama.cpp ROCm (version non relevée)
130
07 mai 2026
gpt-oss-120b MXFP4 — llama.cpp Vulkan RADV b9049 — 55,6 t/s (hogeheer)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp b9049 (Vulkan RADV)
155,6
16 févr. 2026
gpt-oss-120b Q4_K_M — llama-server ROCm — 53,4 t/s (visorcraft)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama-server ROCm (version non relevée)
153,4
16 févr. 2026
Qwen3-235B-A22B Q3_K_M — llama.cpp ROCm — 17,2 t/s, pp 101 t/s (visorcraft)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp ROCm (build non relevé)
117,2
22 juil. 2025
Llama 3.3 70B (Shisa V2) Q4_K_M — llama.cpp b5863 — 5,0 t/s (lhl, Framework Desktop)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp b5863 (TheRock 7.0 nightlies)
15
22 juil. 2025
Qwen3-30B-A3B Q4 — llama.cpp b5863 — 72,0 t/s (lhl, Framework Desktop)
Framework Desktop (Ryzen AI Max+ 395, 128 Go) · llama.cpp b5863
172

Ajouter un(e) benchmark : créer un fichier dans content/benchmarks/ (voir README).