Context Window
Une fenêtre de contexte est le nombre maximal de jetons auxquels un modèle peut prêter attention dans une requête, répartis entre le prompt, l’historique, les documents et la réponse.
Une fenêtre de contexte est le nombre maximal de tokens qu’un modèle peut prendre en compte dans une seule requête. Pour un grand modèle de langage (LLM), tout ce qu’il lit et écrit utilise ce budget : l’invite système, les définitions des outils, l’historique de conversation, les documents récupérés, la question de l’utilisateur et la réponse qu’il génère. Le texte situé hors de la fenêtre n’atteint pas le modèle, ce qui explique pourquoi un chatbot perd le fil du début d’une très longue conversation lorsque les tours précédents sont supprimés. La taille des fenêtres est passée de 2 048 tokens dans GPT-3 à 128K tokens dans GPT-4 Turbo fin 2023, puis à 1 million dans Gemini 1.5 Pro de Google en 2024 ; le Llama 4 Scout de Meta en annonce 10 millions.
Contenu de la fenêtre de contexte#
La tokenisation découpe le texte en sous-mots d’environ quatre caractères anglais en moyenne ; une fenêtre de 128K tokens contient donc l’équivalent d’environ 300 pages. Un modèle vision-langage (VLM) utilise aussi des tokens pour les images, généralement des centaines de tokens de patch par image ; une longue vidéo remplit donc la fenêtre bien plus vite que sa transcription. Les tokens générés sont soumis à la même limite, et les fournisseurs imposent un plafond distinct à la longueur de sortie dans cette limite. Les applications qui exécutent de longues conversations ou des agents d’IA reconstituent donc l’invite à chaque tour et déterminent ce qu’il faut conserver :
Pourquoi les fenêtres sont limitées#
Deux coûts augmentent avec la longueur. L’auto-attention compare chaque token à tous les autres ; le calcul d’attention croît donc de façon quadratique avec le nombre de tokens. Pendant la génération de texte, le cache KV conserve les clés et les valeurs de chaque token antérieur : Llama 3.1 8B, avec 32 couches et 8 têtes clé-valeur de 128 dimensions chacune, stocke 128 Kio par token en précision 16 bits, soit 16 Gio pour sa fenêtre complète de 131 072 tokens, davantage que les 16 Go occupés par ses poids.
La fenêtre dépend également de l’entraînement. Un modèle entraîné sur des séquences de 8K tokens n’a jamais vu les positions au-delà ; pour l’étendre, il faut donc redimensionner ses encodages positionnels rotatifs (RoPE) à l’aide de méthodes comme YaRN, puis effectuer brièvement un réglage fin sur du texte plus long. Le traitement de longues fenêtres repose sur des techniques économes en mémoire : l’attention flash calcule l’attention exacte sans stocker la matrice complète des scores, l’attention à requêtes groupées (GQA) réduit le cache KV, l’attention à fenêtre glissante limite chaque token aux voisins récents, et l’attention en anneau répartit une séquence entre de nombreux GPU.
Contexte annoncé et contexte effectif#
Un modèle qui accepte un million de tokens ne les exploite pas tous aussi bien. L’étude Lost in the Middle de 2023 a montré que les modèles répondent mieux lorsque le passage pertinent se trouve au début ou à la fin de l’invite, et moins bien lorsqu’il est au milieu. Les tests aiguille dans une botte de foin (NIAH) mesurent le rappel d’un fait inséré à différentes profondeurs et longueurs, et le plus difficile benchmark RULER a révélé que seule la moitié des 17 modèles annonçant 32K tokens ou plus obtenaient des résultats satisfaisants à 32K. La baisse progressive des performances à mesure que les entrées s’allongent s’appelle la détérioration du contexte ; la génération augmentée par récupération (RAG) et l’ingénierie du contexte la combattent en ne plaçant dans la fenêtre que les éléments pertinents.
Fenêtre de contexte et notions connexes#
- Champ réceptif : Région d’une image d’entrée qui influe sur une sortie d’un réseau neuronal convolutif (CNN). Sa taille est déterminée par les dimensions des noyaux et la profondeur, tandis qu’une fenêtre de contexte correspond à un budget de tokens.
- Taille de lot : Nombre de séquences indépendantes traitées ensemble. La fenêtre de contexte limite la longueur de chacune.
- Mémoire : La mémoire d’un agent, comme la mémoire épisodique stockée dans une base de données vectorielle, persiste en dehors de la fenêtre et y est recopiée lorsqu’elle est pertinente.
Fenêtres de contexte dans la détection à vocabulaire ouvert#
Les encodeurs de texte intégrés aux modèles de vision ont eux aussi des fenêtres. Ultralytics YOLOE et YOLO-World encodent chaque invite de classe avec un encodeur de texte de la famille CLIP dont la fenêtre de contexte est de 77 tokens, et l’encodeur de texte d’Ultralytics tronque par défaut les invites plus longues. Le même tokenizer CLIP montre ce qui est tronqué :
import clip
from clip.simple_tokenizer import SimpleTokenizer
prompt = (
"a warehouse worker wearing a yellow high-visibility vest, a white hard hat, blue gloves and clear safety "
"glasses, standing beside a red forklift that carries wooden pallets stacked with brown cardboard boxes, "
"under bright ceiling lights in a narrow aisle between tall metal shelves, next to a fire extinguisher "
"mounted on the wall, a green emergency exit sign, an open loading dock door and a black dog"
)
# CLIP's BPE tokenizer wraps the text in start and end tokens
tokenizer = SimpleTokenizer()
print(f"Prompt length: {len(tokenizer.encode(prompt)) + 2} tokens")
# The text encoder reads a fixed 77-token window, so truncation drops the tail
tokens = clip.tokenize(prompt, truncate=True)[0]
kept = tokenizer.decode(tokens[1:-1].tolist())
print(f"Window: {len(tokens)} tokens ending in '{' '.join(kept.split()[-4:])}'")
print(f"'black dog' kept: {'black dog' in kept}")L’invite compte 80 tokens ; la fenêtre conserve donc les 75 premiers tokens de texte ainsi que les marqueurs de début et de fin, s’arrête à « loading dock door and » et supprime « a black dog » avant même que l’encodeur ne le voie.










