Retour au fil

200K de contexte sur une 4070 Ti Super : comment le même fichier Qwen 27B a décodé 4x plus vite avec le streaming KV adaptatif

Un benchmark Token Race exécute le même fichier Qwen 3.8 27B IQ4XS à 100K et 200K de contexte sur une RTX 4070 Ti Super : le streaming KV adaptatif maintient 34,5 et 33,7 tok/s contre 12,6 et 8,0 pour le llama.cpp d'origine, en gardant les 66 couches sur GPU.

Importé dans Nodesdaily : (UTC+03:00)
Voir sur YouTube — SLT0IwhynLc
Options de lecture

La lecture vocale n’est pas disponible dans ce navigateur.

Loupe à concepts

Choisissez un terme technique de cette vue pour lire sa définition générale, un exemple pédagogique et son usage dans l’article.

Aucun terme de notre glossaire n’a été trouvé dans cette vue. Le glossaire ne couvre pas encore tous les termes.

Une fenêtre de contexte plus grande punit généralement le matériel local, mais ce test affirme qu'un changement de moteur inverse ce compromis : le même fichier Qwen 3.8 27B IQ4XS a atteint un contexte configuré de 200 000 tokens sur une machine Ryzen 7 avec RTX 4070 Ti Super, tout en restant réactif. La chaîne à l'origine de ce test est Token Race, et la configuration cible les documents longs, les dépôts de code et les sessions d'agents plutôt qu'une courte conversation. L'affirmation centrale est que la conception de la gestion du contexte, et non la mémoire vidéo brute, détermine si cette fenêtre reste productive.

Le tableau des scores est sans ambiguïté pour les deux tailles. À 100 000 tokens, le streaming KV adaptatif a produit en moyenne 34,53 tokens générés par seconde contre 12,58 pour le llama.cpp d'origine, soit un avantage moyen de 2,83x sur prompts identiques. À 200 000 tokens, l'adaptatif a tenu 33,68 contre 8,04 pour l'original, soit un avantage de 4,24x. L'auteur précise que la configuration adaptative a remporté toutes les comparaisons sur prompts identiques aux deux tailles : le titre repose donc sur la matrice complète de 11 prompts et non sur une entrée favorable.

Le tout est présenté comme un résultat de moteur d'inférence plutôt qu'une revue d'intelligence, et les contrôles soutiennent ce cadrage. Chaque exécution a utilisé le même fichier de modèle IQ4XS avec des paramètres de contexte identiques, un seul slot parallèle, le flash attention, un cache de clés Q8_0 avec un cache de valeurs Q4_0, des tailles de batch et de micro-batch identiques, et aucun offload de projecteur multimodal. Chacun des 11 prompts a généré 256 tokens par complétion, ce qui maintient la comparaison sur le comportement de décodage dans des conditions de service identiques.

Le détail à 100 000 tokens montre que l'écart n'est pas un artefact des prompts courts. Les entrées courtes se regroupaient autour de 36 à 37 tokens par seconde en adaptatif contre environ 14 en version d'origine. À environ 17 000 tokens d'entrée, le duo affichait 33,55 contre 11,17, et à environ 25 000 entrées, 32,44 contre 10,28. L'entrée de 77 000 tokens a ralenti les deux moteurs comme prévu, mais l'adaptatif a quand même produit 20,09 contre 5,06, ce qui compte car la charge reportée en avant est le cas réaliste du long contexte.

Le graphique à 200 000 tokens transforme l'histoire de moteur en histoire de capacité. Six entrées de moins de 1 000 tokens ont donné en moyenne 36,77 pour l'adaptatif contre 9,06 pour l'original ; deux entrées entre 1 000 et 10 000 ont donné 36,45 contre 8,83 ; deux entrées entre 10 000 et 50 000 ont atteint 31,42 contre 6,68. La preuve, c'est le prompt de 77 418 tokens : 14,09 tokens par seconde en adaptatif contre 3,07 en original, soit un avantage de 4,59x précisément sur le type de long document ou de base de code qui casse les configurations locales naïves.

Les instantanés mémoire sont restés proches alors que le placement du calcul divergeait, et c'est le détail le plus révélateur. L'adaptatif signalait 14 606 Mo à 100 000 de contexte et 14 510 Mo à 200 000 ; l'original signalait 13 774 Mo et 14 008 Mo. La différence visible portait sur le placement du calcul : les exécutions adaptatives gardaient l'intégralité de leur pile de 66 couches sur la carte dans les deux configurations, tandis que les exécutions d'origine descendaient à 54 couches puis à 43. Ce schéma confirme la conception revendiquée du fork : déplacer la pression du grand contexte hors de la résidence GPU permanente plutôt que d'accaparer toujours plus de mémoire vidéo.

Le mécanisme comporte trois parties : les tenseurs de clés et de valeurs faisant autorité résident dans la RAM système épinglée, le GPU conserve un pool borné de pages résidentes plus un anneau de transfert, et le moteur repartitionne ce pool à mesure que le contexte grandit. Pendant le décodage, il précharge les couches suivantes pendant que la couche courante calcule encore, si bien que la couche suivante trouve sa page prête. En termes simples, le GPU reste sur le calcul du modèle pendant que la RAM système porte le contexte croissant et que l'ensemble de travail transite par la mémoire vidéo.

Les commandes correspondent à cette conception adossée à la mémoire : le poids d'embedding des tokens se trouve sur le CPU, avec une scène de streaming de 1024 Mo à 100 000 de contexte et de 512 Mo à 200 000. Les exécutions d'origine laissaient le placement au remplissage automatique et abandonnaient des couches GPU à mesure que le contexte configuré grandissait. La documentation du fork décrit la même approche autrement : streaming CUDA page par page des clés et valeurs en cache, avec le partage résident-plus-transfert rééquilibré à la volée et des lots de transfert ajustés à chaque machine. La mise en garde honnête boucle la boucle : le grand contexte n'est pas gratuit, les transferts font toujours un vrai travail, et les valeurs de 1024 et 512 Mo sont des points de départ à revalider par machine.

Visualization: nodesdaily AI

Commentaire de l’IA

""J'y vois une histoire de moteur plutôt qu'une histoire de modèle, et c'est cette distinction qui rend le sujet, à mes yeux, digne d'être couvert.""

Évaluation de l’IA

La contre-lecture la plus solide est que le llama.cpp d'origine a tout de même terminé la même charge de travail : il s'agit donc d'un écart de vitesse et d'ergonomie plutôt que de capacité. Tom's Hardware a tiré la même leçon dans l'autre sens avec le Qwen 3.8 27B : peser le quant 17 Go par rapport au pool de VRAM ne dit pas grand-chose tant que le moteur et le système hôte ne prouvent pas le time-to-first-token et un débit soutenu. L'histoire de la réécriture amont de 2026 va dans le même sens, avec sa disposition KV contiguë en tête qui élimine les lectures non fusionnées au-delà de 8K d'entrées. Je considère cette vidéo comme un point de données supplémentaire dans cette direction : solide sur le taux de décodage, mais toujours une seule machine avec un seul slot.

Ma principale réserve méthodologique porte sur le périmètre : 11 prompts et 256 tokens générés par complétion mesurent le comportement de décodage, pas le prefill, pas le time-to-first-token, et pas la qualité des sorties. La configuration fixe la précision du cache à Q8_0 pour les clés et Q4_0 pour les valeurs, et les guides communautaires notent que le Q8_0 réduit environ de moitié la mémoire KV par rapport à la demi-précision avec de faibles effets de perplexité rapportés sur les grands modèles ; ce compromis reste toutefois un contexte emprunté plutôt que quelque chose que cette exécution a remesuré. La mise en garde de MicroCenter est la bonne ici : pousser les couches de cache vers la RAM système maintient une longue session en vie, mais c'est généralement un dernier recours pour un usage interactif ; un gain de taux de décodage doit donc encore passer une vérification de latence et de ressenti.

Sur la vérifiabilité, je sépare les chiffres mesurés du récit du mécanisme. Les quatre moyennes plus la paire à 77 418 tokens d'entrée sont concrètes et reproductibles en principe, mais les nombres de couches, les instantanés de 14,6 et 14,0 Go, et surtout les tailles de scène de 1024 Mo et 512 Mo sont spécifiques au système. L'auteur le dit lui-même : la scène doit être ajustée et validée par modèle, longueur de contexte, GPU et utilisateurs concurrents de la mémoire. Je voudrais une répétition indépendante sur une carte 16 Go similaire avant de citer le facteur 4x comme une propriété générale du fork.

Ma lecture pratique est étroite et favorable : cette voie convient à un propriétaire de carte 16 Go qui exécute déjà le fichier IQ4_XS et a besoin que les longs documents, dépôts ou sessions d'agents restent productifs. Elle ne convient pas au service multi-slot, aux charges sensibles au débit, ni à quiconque vise la fenêtre complète de 262K avec de la marge, où les tests de Tom's Hardware pointent vers deux 5090 ou une carte de 48 Go et plus. Je parterais des tailles de scène de l'auteur, je validerais sur ma propre machine, et je garderais la version d'origine comme référence plutôt que de la supprimer dès le premier jour.

Sources

6 liens ; aucun autre article publié ne les cite. Stories sharing a link do not confirm each other; a source's origin is not inferred from how often it is cited.

qwen 3.8 27b · llama.cpp · cache kv · rtx 4070 ti super · long contexte · ia locale

Suivre le sujet

Avant cet article

Un court ordre de lecture des articles antérieurs reliés à cet événement par un éditeur.

Preuves et sources

Consultez les passages autorisés, leurs versions et leur origine.

KAYNAKLARLA OKU

Bu haberi açalım.

Hesap kontrol ediliyor…

200K de contexte sur une 4070 Ti Super | Nodesdaily