# Fenêtre de contexte

Dans le domaine de l'intelligence artificielle générative, la fenêtre de contexte ou fenêtre contextuelle d'un modèle de langage, qu'il soit un grand modèle de langage (LLM ou large language model) ou un petit modèle de langage (SLM ou small language model), est la quantité de texte que ce modèle peut traiter en une fois pour réaliser des tâches de traitement automatique du langage naturel (NLP) ou de génération de langage naturel (NLG). Cette quantité est souvent mesurée en jetons ou tokens, c'est-à-dire des mots, des morceaux de mots ou des caractères. La taille de la fenêtre de contexte influe sur les performances et les capacités des modèles de langage, qui sont des réseaux neuronaux profonds basés sur l'architecture des transformeurs.

## Définition et fonctionnement

Un modèle de langage est un modèle qui apprend à prédire le texte suivant à partir du texte précédent, en utilisant un mécanisme d'attention qui lui permet de se focaliser sur les parties les plus pertinentes du texte. Le modèle de langage est entraîné sur de grandes quantités de données textuelles, provenant de sources diverses comme le web, les livres, les articles, etc. Le modèle de langage peut ensuite être adapté à des tâches spécifiques, comme la traduction, la génération de texte, la compréhension de texte, etc., en utilisant une technique appelée réglage fin (ou fine tuning).
La fenêtre de contexte d'un modèle de langage est la longueur maximale du texte que le modèle peut prendre en entrée pour faire ses prédictions. Cette longueur est limitée par la capacité de mémoire et de calcul du modèle, qui augmente de façon quadratique avec le nombre de tokens. Par exemple, le modèle GPT-3 a une fenêtre de contexte de 2 048 tokens, ce qui correspond à environ 1 000 mots. En revanche, le LLM Claude 2.1 a une fenêtre de contexte de 200 000 tokens, soit environ 150 000 mots ou plus de 500 pages de texte. La fenêtre de contexte détermine la capacité du modèle à capturer les relations à longue distance entre les mots, les phrases ou les paragraphes, ce qui est important pour la cohérence et la pertinence du texte généré ou analysé.

## Enjeux et perspectives

La fenêtre de contexte des modèles de langage pose plusieurs enjeux, tant sur le plan technique que sur le plan éthique. Sur le plan technique, il existe des méthodes pour augmenter la fenêtre de contexte sans augmenter le coût de calcul, comme l'utilisation de la mémoire virtuelle, qui permet au modèle d'accéder à des informations stockées sur un disque, ou l'utilisation de la récursivité, qui permet au modèle de traiter le texte par morceaux successifs. Ces méthodes visent à améliorer la capacité des modèles de langage à gérer des textes longs et complexes, comme des articles, des livres, des dialogues, etc.
Sur le plan éthique, la fenêtre de contexte des modèles de langage pose la question de la fiabilité et de la responsabilité des modèles. En effet, les LLM peuvent produire ou reproduire des informations fausses, biaisées ou toxiques, en fonction des données sur lesquelles ils sont entraînés. Il est donc nécessaire de vérifier la qualité et la provenance des sources utilisées par les modèles, ainsi que de contrôler la pertinence et la cohérence des résultats produits par les modèles. Il est également nécessaire de sensibiliser les utilisateurs des modèles de langage aux limites et aux risques de ces technologies, et de leur fournir des moyens de les utiliser de manière éthique et responsable.

## Taille des fenêtres de contexte de différents modèles de langage

Le tableau ci-dessous indique pour différents modèles de langage le nombre de paramètres et la taille de la fenêtre de contextes en tokens.
Firmes détentrices, nombres de paramètres et tailles de fenêtres de contexte de différents modèles de langage :
| Modèles de langage | Firmes détentrices | Nombres de paramètres | Tailles de fenêtres de contexte en tokens |
| Turing NLG | Microsoft | 17 milliards | 512 |
| Orca 2-7b | Microsoft | 7 milliards | 1024 |
| Orca 2-17b | Microsoft | 17 milliards | 2048 |
| Gopher | DeepMind | 1,3 milliard | 2 048 |
| GPT-3 | OpenAI | 175 milliards | 2 048 |
| GPT-3.5 | OpenAI | 175 milliards | 2 048 |
| GPT-3.5 turbo | OpenAI | 175 milliards | 16 385 |
| GPT-4 | OpenAI | 1,76 trillion (*) | 32 768 |
| GPT-4 turbo | OpenAI | 1,76 trillion (*) | 131 072 |
| Llama | Meta | 70 milliards | 2 048 |
| Llama 2 | Meta | 70 milliards | 4 096 |
| Mistral 7B | Mistral AI | 7 milliards | 32 768 |
| Mixtral 8x7B | Mistral AI | 45 milliards | 32 768 |
| BERT (Base) | Google | 110 millions | 512 |
| BERT (Large) | Google | 335 millions | 512 |
| LaMDA | Google | 540 milliards | 2 048 |
| PaLM | Google | 540 milliards | 100 000 |
| PaLM 2 | Google | 300 milliards | 100 000 |
| Claude | Anthropic | 13 milliards | 100 000 |
| Claude 2 | Anthropic | 540 milliards | 100 000 |
| Claude 2.1 | Anthropic | 540 milliards | 200 000 |
| BLOOM | Hugging Face | 176 milliards | 2048 |
| Starling-7B | Starling | 7 milliards | 2048 |
| Tulu | Tulu | 7 milliards | 2048 |
| Openchat-3.5 | Openchat | 7 milliards | 2048 |
| Zephyr-7b | Zephyr | 7 milliards | 2048 |
| Neural-chat-7b | Neural-chat | 7 milliards | 2048 |
(* = estimation)