Les jetons ne sont pas une unité universelle du langage. Ils constituent une façon propre à chaque modèle de transformer le texte en une séquence d’entrées numérotées qu’un modèle peut traiter.
Un jeton est une entrée d’un livre de codes
Imaginez le tokenizer comme un livre de codes partagé par le logiciel qui prépare le texte et le LLM qui le traite. Ce livre de codes contient des séquences de texte ou d’octets autorisées et attribue à chacune un identifiant entier.
Supposons qu’un tokenizer illustratif découpe :
The cat sat.
en :
The | cat | sat | .
Ces éléments visibles pourraient être associés à des identifiants tels que :
[814, 3290, 7112, 13]
Les nombres présentés ici sont inventés pour illustrer le mécanisme. Les identifiants et les limites réels dépendent du tokenizer. Un espace initial peut être regroupé avec le mot suivant, de sorte que cat et cat peuvent être des entrées différentes.
Dans les explications courantes, jeton peut désigner soit l’élément visible, soit son identifiant. La distinction est importante : le modèle reçoit les identifiants, et non de petites chaînes de texte lisibles. Chaque identifiant sélectionne une représentation numérique apprise initiale avec laquelle le modèle peut travailler.
Pourquoi les modèles utilisent des éléments plus petits que les mots
Un vocabulaire composé de mots entiers devrait contenir une entrée pour chaque nom, orthographe, forme fléchie, terme technique et mot nouvellement créé que le modèle pourrait rencontrer. Tout mot absent serait alors inconnu.
Un vocabulaire composé uniquement de caractères évite les mots inconnus, mais transforme le texte courant en séquences beaucoup plus longues. Cela augmente le nombre d’étapes que le modèle doit traiter.
La tokenisation en sous-mots est un compromis. Les séquences fréquentes peuvent disposer de leurs propres entrées, tandis que les mots rares peuvent être assemblés à partir d’entrées plus petites. Un mot courant peut constituer un seul jeton. Un nom rare peut être divisé en plusieurs fragments. La ponctuation et les espaces peuvent également être des jetons ou faire partie de jetons.
Les fragments sont choisis pour offrir une couverture utile et des séquences compactes, et non parce que chaque fragment possède une signification propre dans un dictionnaire. Un élément tel que ment, un mot précédé d’un espace ou une suite d’octets est un jeton valide s’il figure dans le vocabulaire du tokenizer.
Fonctionnement de la tokenisation
La procédure exacte varie, mais le parcours d’un texte dans un modèle de langage suit la même forme générale :
text
↓
model-specific tokenizer
↓
token pieces
↓
integer token IDs
↓
language model
↓
next token ID
↓
tokenizer decoder
↓
generated textTout d’abord, le tokenizer applique ses règles fixes à l’entrée. Selon sa conception, il peut normaliser le texte, effectuer un découpage initial, puis le segmenter au moyen d’un algorithme tel que BPE, Unigram ou WordPiece.
Ensuite, il recherche chaque élément obtenu dans son vocabulaire et émet l’identifiant correspondant. Il peut également ajouter des identifiants spéciaux, par exemple pour marquer les limites ou la structure d’une requête. Ces jetons spéciaux n’apparaissent pas nécessairement dans le texte visible.
Le modèle traite les identifiants d’entrée. Lorsqu’il génère du texte, il attribue des probabilités aux identifiants de jetons suivants possibles et en sélectionne un selon ses paramètres de décodage. Ce nouvel identifiant rejoint la séquence, puis le processus se répète. Enfin, le décodeur reconvertit les identifiants générés en octets ou en texte.
La tokenisation est normalement réversible pour une séquence complète et valide : le décodage des identifiants reproduit le texte. Un jeton individuel ne se décode pas toujours en un caractère lisible à lui seul, en particulier avec les tokenizers au niveau des octets. Il peut d’abord être nécessaire de combiner les jetons voisins.
Un même mot peut avoir différents nombres de jetons
Il n’existe pas de conversion exacte entre mots et jetons.
Dans un exemple de tokenizer d’OpenAI, antidisestablishmentarianism est découpé par un encodage en cinq jetons :
ant | idis | establishment | arian | ism
Un autre encodage le découpe en six :
ant | idis | establish | ment | arian | ism
Aucun de ces découpages ne modifie l’orthographe. Aucun ne prouve qu’un modèle comprend mieux le mot. Les encodages ont simplement des vocabulaires et des règles de segmentation différents.
Les nombres varient également selon la langue, les espaces, la ponctuation, le code, les emoji et les séquences de caractères inhabituelles. Même une petite modification peut changer les limites qui l’entourent. Des moyennes approximatives peuvent aider à établir une première estimation, mais seul le tokenizer ou le point d’accès de comptage du modèle et de la requête complète que vous utiliserez fournit un nombre fiable.
Pourquoi les jetons sont importants
Ils déterminent la quantité de contenu qui peut être incluse. La fenêtre de contexte d’un modèle se mesure en jetons, et non en mots. L’entrée, les messages précédents, la sortie générée et parfois d’autres éléments de la requête se partagent cette capacité selon les règles du fournisseur.
Ils mesurent l’utilisation. De nombreuses API d’IA comptabilisent et facturent séparément les jetons d’entrée et les jetons de sortie. Les tarifs et les catégories varient ; un nombre de jetons ne constitue donc pas à lui seul un prix.
Ils influencent le temps de génération. La génération de texte progresse jeton par jeton. Un plus grand nombre de jetons de sortie nécessite généralement davantage d’étapes de génération, même si la latence totale dépend également du modèle, du matériel, de la charge et du traitement de l’entrée.
Ils influencent l’efficacité du texte. Deux chaînes de longueur comparable pour un lecteur humain peuvent consommer des nombres de jetons différents. Cela est important lorsqu’une application traite plusieurs langues, du code source, des données structurées ou des identifiants inhabituels.
Ils relient le tokenizer au modèle. Le modèle apprend avec une correspondance particulière entre les identifiants et les entrées du vocabulaire. Remplacer le tokenizer par un tokenizer sans rapport n’est pas une modification esthétique : le même identifiant pourrait désigner un élément différent, et le modèle recevrait donc la mauvaise représentation apprise.
Idées reçues courantes
Un jeton équivaut à un mot
Il arrive qu’un mot court et courant constitue un seul jeton. Mais un jeton peut aussi être un fragment de mot, un signe de ponctuation, un fragment contenant un espace, un caractère ou une séquence d’octets. Toute valeur indiquant un nombre de jetons par mot doit être considérée comme une estimation pour un type de texte donné.
Les limites entre les jetons montrent ce que le modèle pense que signifie un concept
Les limites entre les jetons proviennent du vocabulaire et des règles de segmentation du tokenizer. Elles ne constituent pas une carte des concepts du modèle. Un mot divisé en quatre jetons ne correspond pas nécessairement à quatre idées, et une expression stockée comme un seul jeton n’est pas nécessairement comprise comme une idée indivisible.
Tous les modèles comptent le même texte de la même façon
Des vocabulaires différents produisent des limites et des nombres différents. Même des modèles d’un même fournisseur peuvent utiliser des encodages différents. Effectuez le comptage avec l’interface du modèle concerné plutôt que de réutiliser le nombre obtenu pour un autre modèle.
Seul le texte que vous avez saisi est comptabilisé
Une requête API peut inclure des instructions système, l’historique de la conversation, des définitions d’outils, des représentations de fichiers ou d’images et une mise en forme ajoutée par le service. Certains de ces éléments peuvent contribuer au nombre de jetons même s’ils ne sont pas visibles dans l’interface de conversation finale. Lorsque le nombre exact est important, utilisez le rapport d’utilisation du fournisseur ou son outil de comptage portant sur la requête complète.
Davantage de jetons signifie davantage de sens
Le nombre de jetons mesure la longueur de la représentation utilisée par le modèle, et non la quantité ou la qualité de l’information. Un texte répétitif peut utiliser beaucoup de jetons. Une formule compacte peut utiliser peu de jetons tout en véhiculant une grande quantité de sens.
Les jetons d’IA sont des jetons cryptographiques
Ils partagent un nom, mais pas un mécanisme. Un jeton textuel est une unité du vocabulaire d’un modèle. Un jeton cryptographique est un actif numérique ou un enregistrement sur une blockchain.
Comment les jetons s’intègrent au système global
Le vocabulaire du tokenizer est généralement établi avant l’entraînement du modèle de langage. Les textes d’entraînement sont convertis en identifiants avec ce tokenizer, et le modèle apprend des schémas sur ces identifiants. Lors de l’inférence, la même correspondance transforme une nouvelle invite en identifiants d’entrée et reconvertit les identifiants générés en texte.
Le tokenizer fait donc partie du modèle, même s’il est fourni sous la forme d’un fichier ou d’une bibliothèque distincte. Le modèle, le vocabulaire, les règles du tokenizer et les définitions des jetons spéciaux doivent être cohérents.
Le mot jeton peut également être utilisé dans un sens plus large dans les systèmes multimodaux. Un fournisseur peut convertir des régions d’image, des intervalles audio ou des images vidéo en unités qu’il comptabilise comme des jetons. Ces unités jouent un rôle similaire dans le traitement et la comptabilisation par le modèle, mais elles ne sont pas des éléments produits par un tokenizer de texte.
Pour aller plus loin
Lisez Qu’est-ce qu’une fenêtre de contexte ? pour voir comment les jetons définissent la limite de travail d’un modèle. Pour les catégories d’utilisation des API, consultez ensuite Jetons d’entrée, de sortie et de raisonnement.