Ce qu'est un jeton
Un modèle de langage ne voit jamais de lettres ou de mots. Avant que le moindre texte ne lui parvienne, un tokenizer découpe le texte en fragments issus d'un vocabulaire fixe et remplace chaque fragment par son numéro dans ce vocabulaire. Le modèle lit une séquence de ces numéros et rédige également sa réponse sous forme de numéros, que le tokenizer retransforme ensuite en texte.
How2437␣do466␣I314␣reset13259␣my616␣password9206?30Aujourd'hui, les vocabulaires comptent de quelques dizaines à quelques centaines de milliers d'entrées. Les mots fréquents disposent de leur propre entrée, généralement rattachée à l'espace qui les précède. Les mots moins fréquents sont décomposés en fragments plus petits : un nom de produit inhabituel peut ainsi représenter quatre ou cinq tokens.
Comment les tokenizers sont construits : le codage par paires d'octets
La plupart des tokenizers actuels utilisent une forme de codage par paires d'octets (BPE), adaptée aux modèles de langage par Sennrich, Haddow et Birch. Le vocabulaire est appris à partir d'un vaste échantillon de texte avant même l'entraînement du modèle :
- Commencer par les plus petites unités : des caractères simples ou les 256 octets possibles.
- Compter chaque paire d'unités voisines dans l'échantillon et trouver la paire la plus fréquente.
- Fusionner cette paire en une nouvelle unité et l'ajouter au vocabulaire.
- Répéter l'opération jusqu'à ce que le vocabulaire atteigne sa taille cible.
Le vocabulaire finit par allouer ses entrées à ce qui était fréquent dans cet échantillon. Les versions au niveau de l'octet partent des octets plutôt que des caractères, de sorte que toute entrée — n'importe quelle langue, emoji ou symbole isolé — peut toujours être encodée, bien que de manière moins efficace lorsqu'elle est inhabituelle.
- L'échantillon contient de nombreuses fois « walking », « talking » et « making ». Au début, chacun est divisé en caractères :
w a l k i n g. isuivi denest la paire la plus fréquente, elle devient donc une seule unité :w a l k in g.- Maintenant,
insuivi degest la paire la plus fréquente :w a l k ing. - Après des dizaines de milliers de fusions, un mot fréquent comme « walking » a de fortes chances de devenir un seul jeton, tandis qu'un mot rare comme « unwalkable » sera toujours composé de plusieurs éléments.
Pourquoi le même texte donne des décomptes différents
| Type de texte | Comportement typique |
|---|---|
| Anglais courant | Environ 4 caractères, soit ¾ de mot, par token |
| Nombres, identifiants et dates | Découpés en petits fragments : 2024-03-17 peut nécessiter cinq tokens ou plus |
| Code et JSON | Les crochets, les guillemets et l'indentation consomment tous des tokens |
| Autres langues | Souvent plus de tokens pour le même sens ; une étude de 2023 a mesuré des écarts allant jusqu'à 15 fois pour le même texte traduit |
| Noms rares et jargon | Découpés en plusieurs fragments sous-lexicaux |
Chaque famille de modèles entraîne son propre tokenizer, de sorte qu'un document de 1 000 tokens pour un modèle peut en représenter 1 150 pour un autre. Tout décompte effectué avec un tokenizer différent, ou estimé à partir du nombre de caractères, n'est qu'une approximation.
Pourquoi c'est important pour l'entraînement
- Coût. L'entraînement est facturé par token traité, et l'utilisation par token d'entrée et de sortie.
- Limites. La fenêtre de contexte et la limite d'entraînement par exemple sont comptabilisées en tokens, et non en messages ou en mots.
- Faiblesses singulières. Un modèle perçoit « strawberry » comme quelques tokens, et non comme dix lettres, ce qui explique pourquoi compter des lettres ou inverser un mot lui est étonnamment difficile.
Erreurs courantes
- Considérer un token comme un mot lors de l'estimation des coûts ou des limites.
- Supposer qu'un décompte effectué pour un modèle s'applique à un autre.
- Budgétiser des données non anglophones avec des ratios de caractères par token propres à l'anglais.
- Oublier que le formatage — JSON, balisage, identifiants longs — consomme également des tokens.
Références et lectures complémentaires
Les sources externes s'ouvrent dans un nouvel onglet.
- 01Neural Machine Translation of Rare Words with Subword UnitsSennrich, Haddow & Birch, 2016 · arXiv · arxiv.orgL'article ayant introduit la tokenisation BPE dans le NLP.
- 02Byte-Pair Encoding tokenizationHugging Face LLM Course · huggingface.coL'entraînement BPE expliqué étape par étape, avec du code.
- 03Language Model Tokenizers Introduce Unfairness Between LanguagesPetrov et al., 2023 · arXiv · arxiv.orgLe surcoût du même contenu dans certaines langues.
- 04openai/tiktokenOpenAI · GitHub · github.comUn tokenizer BPE largement utilisé que vous pouvez exécuter pour compter les tokens vous-même.
- 05Understand and count tokensGemini API docs · ai.google.devL'explication d'un autre fournisseur sur les tokens et la manière de les compter.