Aller au contenu
nahlovsky.fr
Format
dossier
Sujet
agents
Longueur
1 219 mots · 6 min
Machine
M5 Max 128 Go
Échantillon
n = 3 par cellule · le bruit entre deux exécutions identiques atteint 7,5 % : tout écart sous 8 % est muet
Publié
16 août 2026

Qwen 3.8 27B : le LLM idéal pour un agent autonome souverain ?

La question du modèle est réglée : il tourne sur un portable et flirte avec le niveau frontière pour un petit modèle. La vraie question est le moteur qui le sert : facteur deux sur la même machine selon la configuration. Et à fichier de poids identique au bit près, l'écart tient d'abord à un drapeau de décodage que la plupart des moteurs livrent éteint.

La configuration retenue, sur les onze mesurées

MTPLX 2.6.0 · Optimized-Speed

  • 99mspremier jeton, le meilleur des onze
  • 44,4tok/sdébit à chaud
  • 37,5tok/sdébit à 56 000 jetons
  • 27Gomémoire occupée
  • 0,623tok/s/Wefficacité énergétique

Qwen 3.8 27B sur M5 Max, raisonnement coupé, processeur bridé à 50 % : des planchers, pas des maximums. Et ce n'est pas la ligne la plus rapide du tableau — c'est un choix de fidélité, que le texte explique.

Qwen 3.8 27B est sorti le 14 août, et la question du modèle s’est réglée d’elle-même : 61,7 sur SWE-bench Pro et 84,3 sur OSWorld-Verified d’après sa carte officielle, dans un gabarit qui tourne sur un portable. C’est le nouveau leader incontesté de l’inférence locale, sur les home labs. La question que personne ne traite le jour d’une sortie, c’est celle d’après : quel moteur d’inférence le fait tourner. Nous avons mesuré onze configurations sur huit moteurs distincts, sur une même machine. Entre la meilleure configuration et la plus populaire, il y a un facteur deux. Et à fichier de poids identique au bit près, l’essentiel de l’écart tient à un seul drapeau de décodage, livré éteint presque partout.

Ce qu’un agent exige d’un moteur

Un agent n’est pas un chat. Il ne produit pas un long texte d’une traite : il enchaîne des dizaines de tours courts, et chaque tour relit tout ce qui précède. Le temps au premier jeton (TTFT, Time To First Token) compte donc plus que le débit de croisière, parce qu’il se paie à chaque tour. Le cache de préfixe compte encore plus, parce qu’un moteur qui ne sait pas réutiliser ce qu’il a déjà calculé repaie le prompt entier, tour après tour. Et la discipline vaut la vitesse : un appel d’outil bien formé, le bon outil choisi, et savoir ne rien faire quand rien ne convient.

Onze configurations, une machine

moteurpoids
MTPLX 2.6.0 · Bare-SpeedMTPLX 4b g645646,5101 ms322 ms22 Go
MTPLX 2.6.0 · Optimized-SpeedMTPLX 4b g3244,437,599 ms301 ms27 Go
mlx-vlm + drafter MTPMLX 4b ¹43,328,99 982 ms100 733 ms15,5 Go
MTPLX 2.6.0 · Optimized-QualityMTPLX 8b g6440,830,3118 ms100 243 ms32,9 Go
Ollama 0.32.13GGUF non déclaré32,821,7240 ms574 ms30,3 Go
llama.cpp b10434 + MTPGGUF Q5_K_XL ²31,822,7125 ms365 ms36,8 Go
rapid-mlx 0.12.11MLX 4b ¹30,224,733 195 ms287 548 ms15 Go
oMLX 0.6.0-devoQ4e-mtp (tiers)29,824,61 968 ms1 991 ms16,7 Go
mlx-lm 0.31.3MLX 4b ¹28,824432 ms799 ms14,6 Go
LM Studio 0.4.21 + MTPGGUF Q5_K_XL ²27,823,4419 ms825 ms36,3 Go
LM Studio 0.4.21, défautsGGUF Q5_K_XL ²23,118,7359 ms865 ms35,2 Go

Une lecture s’impose sur la colonne du 56k à froid (premier passage sur un prompt de 55 839 jetons, cache vide) : elle mesure l’état du cache autant que le moteur. Optimized-Quality répond en 118 ms à chaud et en 100 secondes sur ce premier passage — même moteur, même version — puis revient à 498 ms dès que le tour se répète. Le dimensionnement du cache est un réglage d’opérateur, pas une propriété du moteur.

Les exposants marquent les lignes qui servent un fichier de poids bit à bit identique : entre elles, l’écart tient au moteur et à ses réglages, jamais au fichier. Deux moteurs à décodage multi-token natif, vmlx et vllm-mlx, n’ont pas pu être mesurés à temps : les déclarer absents vaut mieux que les omettre.

Deux faits portent ce tableau. Le premier : à fichier de poids identique et à réglages nus, changer de serveur ne fait rien. Deux des trois lignes marquées ¹ tournent sans drafter, et rendent 30,2 contre 28,8 jetons par seconde : 4,9 % d’écart, sous le bruit de la campagne. Ce qui fait réellement bouger les chiffres, c’est le décodage spéculatif (mlx-vlm, même fichier mais un drafter en plus : 43,3) et le cache de préfixe : faute de cache, la configuration la plus rapide en débit paie son premier jeton 23 fois plus cher que mlx-lm. Pour un agent, le vainqueur du débit est éliminé.

Débit à chaud · tok/s

Jetons rendus par seconde sur un contexte court, cache chargé : la vitesse de croisière d'une réponse ordinaire. Plus haut est mieux.

  • MTPLX 2.6.0 · Bare-Speed56,0
  • MTPLX 2.6.0 · Optimized-Speed44,4
  • mlx-vlm + drafter MTP43,3
  • MTPLX 2.6.0 · Optimized-Quality40,8
  • Ollama 0.32.1332,8
  • llama.cpp b10434 + MTP31,8
  • rapid-mlx 0.12.1130,2
  • oMLX 0.6.0-dev29,8
  • mlx-lm 0.31.328,8
  • LM Studio 0.4.21 + MTP27,8
  • LM Studio 0.4.21, défauts23,1

Débit à 56 000 jetons · tok/s

Le même débit quand la fenêtre porte 56 000 jetons : ce qui reste de la vitesse en contexte profond. Plus haut est mieux.

  • MTPLX 2.6.0 · Bare-Speed46,5
  • MTPLX 2.6.0 · Optimized-Speed37,5
  • MTPLX 2.6.0 · Optimized-Quality30,3
  • mlx-vlm + drafter MTP28,9
  • rapid-mlx 0.12.1124,7
  • oMLX 0.6.0-dev24,6
  • mlx-lm 0.31.324,0
  • LM Studio 0.4.21 + MTP23,4
  • llama.cpp b10434 + MTP22,7
  • Ollama 0.32.1321,7
  • LM Studio 0.4.21, défauts18,7

Temps au premier jeton · ms

L'attente avant le premier jeton quand le préfixe du prompt a déjà été vu — le tour ordinaire d'un agent, là où le cache de préfixe paie. Plus bas est mieux.

  • MTPLX 2.6.0 · Optimized-Speed99
  • MTPLX 2.6.0 · Bare-Speed101
  • MTPLX 2.6.0 · Optimized-Quality118
  • llama.cpp b10434 + MTP125
  • Ollama 0.32.13240
  • LM Studio 0.4.21, défauts359
  • LM Studio 0.4.21 + MTP419
  • mlx-lm 0.31.3432
  • oMLX 0.6.0-dev1 968hors échelle
  • mlx-vlm + drafter MTP9 982hors échelle
  • rapid-mlx 0.12.1133 195hors échelle

Premier jeton à 56 000 jetons, à froid · ms

La même attente sur un prompt de 55 839 jetons, cache vide : le prix du premier tour — et de chaque tour, pour un moteur sans cache. Plus bas est mieux.

  • MTPLX 2.6.0 · Optimized-Speed301
  • MTPLX 2.6.0 · Bare-Speed322
  • llama.cpp b10434 + MTP365
  • Ollama 0.32.13574
  • mlx-lm 0.31.3799
  • LM Studio 0.4.21 + MTP825
  • LM Studio 0.4.21, défauts865
  • oMLX 0.6.0-dev1 991
  • MTPLX 2.6.0 · Optimized-Quality100 243hors échelle
  • mlx-vlm + drafter MTP100 733hors échelle
  • rapid-mlx 0.12.11287 548hors échelle

Mémoire occupée · Go

Ce que le moteur occupe une fois le modèle chargé, sur une machine qui sert aussi à travailler. Plus bas est mieux.

  • mlx-lm 0.31.314,6
  • rapid-mlx 0.12.1115,0
  • mlx-vlm + drafter MTP15,5
  • oMLX 0.6.0-dev16,7
  • MTPLX 2.6.0 · Bare-Speed22,0
  • MTPLX 2.6.0 · Optimized-Speed27,0
  • Ollama 0.32.1330,3
  • MTPLX 2.6.0 · Optimized-Quality32,9
  • LM Studio 0.4.21, défauts35,2
  • LM Studio 0.4.21 + MTP36,3
  • llama.cpp b10434 + MTP36,8

Efficacité énergétique · tok/s/W

Jetons par seconde et par watt de SoC entier, pendant la génération seule : ce que la batterie paie quand le modèle écrit. Plus haut est mieux. Un moteur lent au premier jeton consomme aussi avant d'écrire, et cette colonne ne le voit pas.

  • mlx-vlm + drafter MTP0,744
  • MTPLX 2.6.0 · Bare-Speed0,694
  • MTPLX 2.6.0 · Optimized-Speed0,623
  • MTPLX 2.6.0 · Optimized-Quality0,575
  • rapid-mlx 0.12.110,544
  • oMLX 0.6.0-dev0,512
  • mlx-lm 0.31.30,472
  • Ollama 0.32.130,451
  • LM Studio 0.4.21 + MTP0,422
  • llama.cpp b10434 + MTP0,395
  • LM Studio 0.4.21, défauts0,351

En couleur, la tête de la mesure choisie : le meilleur et ce qui en reste à moins de 8 % — sous ce seuil, la campagne ne départage pas. Barres hachurées : hors échelle, au-delà de douze fois la meilleure valeur. Non mesuré : la cellule manque à la campagne, l'absence est déclarée plutôt qu'omise.

Les onze configurations sous chacune des cinq mesures ; le sélecteur change la mesure, et chaque panneau se classe du meilleur au pire de la sienne. Mesures à raisonnement coupé, processeur bridé.

Le second fait est un interrupteur. Qwen 3.8 embarque une tête de prédiction multi-token dans ses poids : le modèle propose plusieurs jetons d’avance, le moteur les vérifie en une passe et garde ceux qui tiennent, sans changer la distribution de sortie. Du gain net. Presque tous les moteurs la laissent éteinte par défaut, deux sur huit l’activent d’origine, et aucune interface graphique ne montre le réglage. Mesuré sur LM Studio : 20 % de débit en plus en activant un seul drapeau, même fichier, même contexte. Des milliers de gens font tourner ce modèle sous sa vitesse sans avoir un moyen simple de le savoir.

Un seul drapeau d'écart : plus 20 pour cent de débit sur le même fichierDeux barres, LM Studio sur le même fichier et le même contexte. Réglages d'origine : 23,1 tokens par seconde. Avec le décodage multi-token activé : 27,8, soit 20 pour cent de mieux. Aucune interface graphique ne montre ce réglage.LM Studio · même fichier, même contexte de 65 536 · un seul réglage changeréglages d'originemulti-token activé23,127,8+20 %0102030tok/s
LM Studio, même fichier, même contexte de 65 536 jetons : 23,1 tok/s aux réglages d'origine, 27,8 avec le décodage multi-token activé. Le réglage n'apparaît dans aucune interface graphique.

La recommandation, et pourquoi ce n’est pas le plus rapide

Pour un agent autonome sur Mac : MTPLX avec le quant Optimized-Speed, décodage multi-token en profondeur 3, fenêtre de 262 144 jetons. 99 ms au premier jeton, mesuré sur MTPLX 2.6.0 avec le raisonnement coupé ; cache de préfixe au jeton près ; 27 Go de mémoire.

Ce n’est pas la ligne la plus rapide du tableau, et c’est un choix de fidélité. L’auteur des quantifications publie, pour chaque fichier, sa divergence au modèle d’origine : 0,00105 pour Optimized-Quality, 0,0220 pour Optimized-Speed, 0,0376 pour Bare-Speed. C’est sa mesure, que nous n’avons pas reproduite, mais c’est la seule mesure de fidélité qui existe sur ces fichiers, et Bare-Speed s’écarte d’un ordre de grandeur de plus que Quality. Pour un agent qui écrit des fichiers et envoie des messages, la fidélité au modèle d’origine vaut plus que douze jetons par seconde de mieux.

Ce que ces chiffres ne disent pas

Quatre limites, qui sont les conditions de validité du tableau. Les débits sont des débits de flux, mesurés sur des générations à longueur fixe de 400 jetons : aucune tâche n’y est menée au bout, et un agent qui « fait le travail » mobilise bien plus que ce que ces colonnes mesurent. Les mesures sont prises raisonnement désactivé : c’est nécessaire pour comparer les moteurs entre eux, ce n’est pas un réglage de déploiement — Qwen ne propose que trois niveaux d’effort (low, medium, xhigh), xhigh est le défaut, et sa documentation recommande de l’y laisser pour le travail agentique, un effort plus faible pouvant « conduire à une analyse insuffisante, à davantage d’échecs et à des reprises répétées ». Le régime recommandé n’est d’ailleurs pas mesurable sous ce protocole : un budget de sortie de 400 jetons ne tient pas un raisonnement plus une réponse. Ces chiffres disent l’écart entre moteurs, jamais la vitesse qu’un déploiement réel obtiendra. La machine était bridée à 50 % de processeur après deux minutes de charge : les chiffres sont des planchers, et l’auteur de MTPLX publie 58,7 jetons par seconde avec les ventilateurs forcés — il ne nous contredit pas, il mesure autre chose. Les quantisations diffèrent d’une ligne à l’autre, sauf entre les lignes marquées : seules celles-là comparent l’empaquetage à poids identiques. Et n = 3, avec un bruit mesuré jusqu’à 7,5 % entre deux exécutions identiques : tout écart sous 8 % ne veut rien dire.

Enfin, la qualité de jugement du modèle en situation d’agent, sur la durée, ne se lit pas ici : elle se mesurera en service, requêtes réelles et registres à l’appui. C’est seulement là que le titre de ce dossier cessera d’être une question.

Ce que ça change pour un déploiement souverain

Tout ceci tourne sur la machine, sans réseau : pas d’API, pas de fournisseur, pas de données qui sortent. Un portable fait tourner un modèle de 27 milliards de paramètres avec une fenêtre de 262 144 jetons, de quoi tenir un agent qui lit des documents longs et appelle des outils. La conséquence mérite d’être dite : la capacité d’un déploiement souverain ne dépend plus du modèle, qui est public et gratuit. Elle dépend de la compétence à le configurer. Un facteur deux entre deux moteurs qui lisent le même fichier de poids, c’est de l’ingénierie, pas de la licence.

Les chiffres sortent de la campagne asiai des 14-16 août : onze configurations, huit moteurs distincts, une machine, cartes de mesure certifiées. asiai est mon projet : ces mesures sont les miennes. Et MTPLX dispose de son propre format de poids, qui ne peut pas être rejoué sur un autre moteur. La version anglaise et les données brutes vivent sur asiai.dev.

Conditions de mesure : M5 Max 128 Go · n = 3 par cellule · le bruit entre deux exécutions identiques atteint 7,5 % : tout écart sous 8 % est muet · onze configurations sur huit moteurs distincts, même machine · générations à longueur fixe de 400 jetons : des débits de flux, aucune tâche menée au bout · raisonnement du modèle désactivé : les chiffres comparent les moteurs entre eux, pas la vitesse d'un déploiement réel · processeur bridé à 50 % après deux minutes de charge : des planchers, pas des maximums · MTPLX 2.6.0 servait alors Qwen 3.8 sous les réglages par défaut de Qwen 3.6, sans effet sur le débit mesuré · efficacité énergétique : jetons par seconde et par watt de SoC entier, tour à chaud, pendant la génération seule · campagne 2026-08-14/16, relevée le 16 août 2026. Données brutes.

Tous les écrits