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
| moteur | poids | |||||
|---|---|---|---|---|---|---|
| MTPLX 2.6.0 · Bare-Speed | MTPLX 4b g64 | 56 | 46,5 | 101 ms | 322 ms | 22 Go |
| MTPLX 2.6.0 · Optimized-Speed | MTPLX 4b g32 | 44,4 | 37,5 | 99 ms | 301 ms | 27 Go |
| mlx-vlm + drafter MTP | MLX 4b ¹ | 43,3 | 28,9 | 9 982 ms | 100 733 ms | 15,5 Go |
| MTPLX 2.6.0 · Optimized-Quality | MTPLX 8b g64 | 40,8 | 30,3 | 118 ms | 100 243 ms | 32,9 Go |
| Ollama 0.32.13 | GGUF non déclaré | 32,8 | 21,7 | 240 ms | 574 ms | 30,3 Go |
| llama.cpp b10434 + MTP | GGUF Q5_K_XL ² | 31,8 | 22,7 | 125 ms | 365 ms | 36,8 Go |
| rapid-mlx 0.12.11 | MLX 4b ¹ | 30,2 | 24,7 | 33 195 ms | 287 548 ms | 15 Go |
| oMLX 0.6.0-dev | oQ4e-mtp (tiers) | 29,8 | 24,6 | 1 968 ms | 1 991 ms | 16,7 Go |
| mlx-lm 0.31.3 | MLX 4b ¹ | 28,8 | 24 | 432 ms | 799 ms | 14,6 Go |
| LM Studio 0.4.21 + MTP | GGUF Q5_K_XL ² | 27,8 | 23,4 | 419 ms | 825 ms | 36,3 Go |
| LM Studio 0.4.21, défauts | GGUF Q5_K_XL ² | 23,1 | 18,7 | 359 ms | 865 ms | 35,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.
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.
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.