La fenêtre de contexte 1M de GLM, expliquée

La fenêtre de contexte 1M de GLM est la caractéristique déterminante du modèle GLM phare actuel, et ce n'est pas une simple option de configuration. Faire passer un plafond utilisable de 200 000 à 1 000 000 de tokens a exigé des changements dans l'architecture d'attention, dans le décodage spéculatif et dans la pile de service — trois travaux d'ingénierie distincts qui ne produisent une fenêtre exploitable qu'une fois combinés.

Cette page explique chacun d'eux en langage clair, chiffres publiés à l'appui. En résumé : un indexeur partagé réduit le calcul par token de 2.9× à 1M de contexte, une couche de prédiction multi-tokens repensée augmente la longueur d'acceptation du décodage spéculatif d'environ 20 %, et un ensemble de changements mémoire et kernels empêche la capacité du KV-cache de devenir le mur. Tous les chiffres sont tels que publiés par les auteurs du modèle.

De 200K à 1M : ce qu'il a fallu changer

Le problème naïf du long contexte est le coût quadratique de l'attention, et l'attention sparse le résout en principe en faisant porter l'attention de chaque token sur un sous-ensemble sélectionné de tokens précédents plutôt que sur tous. Mais l'attention sparse a besoin d'un indexeur — un mécanisme léger qui décide quels tokens méritent l'attention — et exécuter cet indexeur dans chaque couche réintroduit un coût qui croît avec la longueur du contexte. À 200 000 tokens, cette surcharge est tolérable. À un million, elle ne l'est plus.

Le second problème est qu'au-delà de quelques centaines de milliers de tokens, le goulot d'étranglement cesse d'être le calcul. Il devient la capacité du KV-cache, l'efficacité des kernels long contexte et la surcharge côté CPU — un problème de mémoire et de systèmes plutôt que de mathématiques. Un modèle peut être architecturalement capable d'une fenêtre d'un million de tokens et rester inservable si le cache ne tient pas ou si l'ordonnanceur cale.

IndexShare : un indexeur pour quatre couches

IndexShare est la réponse architecturale. Au lieu que chaque couche transformer calcule ses propres indices top-k, chaque groupe de quatre couches partage un indexeur léger unique. Il se trouve sur la première des quatre, et ses indices top-k sont réutilisés par les trois autres — ce qui supprime le produit scalaire de l'indexeur et la sélection top-k dans trois couches sur quatre.

Le résultat publié est une réduction de 2.9× des FLOPs par token à 1M de contexte, sans perte de qualité rapportée à longue portée. IndexShare a été utilisé dès le mid-training, à une longueur de séquence de 128K, plutôt que greffé au moment de l'inférence — et cela compte : un schéma de partage introduit uniquement au moment du service créerait un décalage entre la façon dont le modèle a été entraîné et celle dont il s'exécute.

MTP avec IndexShare et KVShare

La prédiction multi-tokens accélère la génération en rédigeant plusieurs tokens à l'avance puis en les vérifiant, et son efficacité se mesure à la longueur d'acceptation — combien de tokens rédigés survivent en moyenne à la vérification. Dans la génération précédente, la couche MTP souffrait d'un décalage entre le KV-cache utilisé à l'entraînement et celui utilisé à l'inférence, ce qui plafonnait la longueur d'acceptation à 4.56 sur 7 étapes MTP.

La conception actuelle exécute l'indexeur une seule fois lors du premier brouillon et réutilise les indices pour les étapes suivantes, en partageant à la fois les indices et l'état KV. L'ajout d'un échantillonnage par rejet au chemin de décodage spéculatif et d'une perte de variation totale de bout en bout porte la longueur d'acceptation à 5.47 — environ 20 % de tokens acceptés en plus par passe de vérification. L'ablation publiée figure ci-dessous.

Ablation de la longueur d'acceptation MTP
Référence4.56
+ IndexShare + KVShare5.10
+ Échantillonnage par rejet5.29
+ Perte TV de bout en bout5.47 (+20%)

Tous les chiffres de cette page sont des résultats tels que publiés par les auteurs du modèle. glmmodel.com les rapporte ; il n'exécute pas ces évaluations.

Servir efficacement une fenêtre de contexte 1M

Trois changements répondent au versant systèmes. La gestion mémoire fondée sur LayerSplit offre un contrôle plus fin sur la façon dont l'état du modèle est partitionné et parallélisé, si bien que l'allocation du cache cesse d'être du tout ou rien. Le travail sur les kernels adapté aux longs contextes est coordonné avec le pipeline de transfert de cache, de sorte que calcul et mouvement mémoire se recouvrent au lieu de se sérialiser. Enfin, la gestion du cache côté CPU, l'ordonnancement des requêtes et le réglage des chemins d'exécution éliminent une surcharge invisible en contexte court mais dominante en contexte long.

L'effet rapporté est que l'avantage en débit s'accroît à mesure que le contexte s'allonge — plus le prompt est long, plus l'écart avec un chemin de service naïf se creuse. C'est cette propriété qui transforme une fenêtre de contexte 1M d'une spécification en quelque chose que vous pouvez réellement faire tourner en charge.

Avantage de débit normalisé

Avantage de débit relatif à mesure que le contexte s'allonge, tel que décrit par les auteurs du modèle.

FAQ contexte 1M de GLM

Quelle est vraiment la taille de la fenêtre de contexte 1M de GLM ?
1 000 000 de tokens, contre 200 000 dans la génération précédente, avec jusqu'à 128 000 tokens de sortie. Les auteurs du modèle la décrivent comme solide et non simplement acceptée : elle a été entraînée sur de longues trajectoires d'agents de code afin que la qualité tienne sur toute la fenêtre au lieu de se dégrader dès qu'une exécution devient confuse.
Qu'est-ce qu'IndexShare ?
IndexShare permet à chaque groupe de quatre couches d'attention sparse de partager un indexeur léger. Les indices top-k sont calculés sur la première couche de chaque groupe et réutilisés par les trois autres, ce qui supprime le travail d'indexation dans trois couches sur quatre et réduit les FLOPs par token de 2.9× à 1M de contexte.
La qualité se dégrade-t-elle au bout d'un contexte 1M ?
Les auteurs du modèle ne rapportent aucune perte de qualité à longue portée due à IndexShare, et le modèle a été entraîné sur des trajectoires d'agents de code à long contexte précisément pour que la fenêtre reste exploitable. Comme toujours, validez sur votre propre tâche à long contexte plutôt que de le supposer — le comportement de rappel dépend de la charge de travail.
Puis-je réellement servir une fenêtre de contexte 1M moi-même ?
Les poids sont sous licence MIT et fonctionnent sur transformers, vLLM, SGLang, xLLM et ktransformers, mais un KV-cache d'un million de tokens représente un engagement mémoire important. La plupart des déploiements auto-hébergés utilisent une fenêtre plus courte avec les mêmes poids et réservent le contexte complet aux cas qui l'exigent.
Pourquoi une fenêtre de contexte 1M compte-t-elle pour les agents de code ?
Parce qu'elle retire la couche de récupération du chemin critique. Au lieu d'un pipeline qui choisit les fragments que le modèle voit, le dépôt entier, ses sorties de tests et les tentatives précédentes de l'agent restent sous les yeux — ce qui est précisément ce qui rend les bugs inter-fichiers et systémiques détectables.

Testez un modèle d'IA en direct, gratuitement et sans compte

Consultez les benchmarks des modèles GLM, puis mettez un vrai modèle au travail. Le playground ci-dessus est gratuit et ne demande rien ; si vous cherchez une boîte à outils IA plus complète, l'offre gratuite de notre partenaire commence ici.