Chapitre 02 · Tokenisation · 8 min
Du texte aux tokens
Comment un texte devient des nombres. BPE, sous-mots, et pourquoi les LLMs comptent mal les lettres.
Pourquoi des tokens ?
Un modèle de langage ne peut pas manipuler du texte directement. Il manipule des nombres. La toute première étape, à chaque fois que tu parles à un LLM, c'est de transformer ton texte en une suite de nombres entiers — les token IDs.
La tokenisation, c'est le découpage qui rend cette conversion possible.
Pourquoi pas un token par mot ?
À première vue, on pourrait imaginer : un mot = un token. Simple.
Mais ça ne marche pas :
- La langue contient des millions de mots possibles (formes fléchies, néologismes, noms propres, fautes de frappe…). Avoir un token par mot exige un vocabulaire gigantesque.
- Le modèle ne peut rien faire d'un mot qu'il n'a jamais vu.
- Certaines langues (chinois, japonais) n'ont même pas d'espaces entre les mots.
La solution adoptée par presque tous les LLMs modernes : les sous-mots.
La tokenisation par sous-mots
Avec un tokeniseur de sous-mots :
- Les mots fréquents deviennent un seul token (
the,et,est) - Les mots rares sont découpés en morceaux plus petits (
tokenisation→token+isation) - Les caractères inconnus restent toujours décomposables jusqu'à la lettre
Le résultat : un vocabulaire de taille raisonnable (typiquement entre 30 000 et 200 000 tokens) qui peut représenter n'importe quel texte.
L'algorithme le plus utilisé s'appelle BPE (Byte Pair Encoding). Il fonctionne en partant des caractères individuels et en fusionnant itérativement les paires les plus fréquentes du corpus d'entraînement.
BPE en trente secondes
Imagine un mini-corpus de trois mots : low, lower, lowest. On commence par tokeniser au niveau caractère :
l o w
l o w e r
l o w e s t
À chaque itération, on cherche la paire de tokens adjacents la plus fréquente. Ici, l o apparaît trois fois — on la fusionne en lo :
lo w
lo w e r
lo w e s t
Maintenant lo w est la paire la plus fréquente. On fusionne :
low
low e r
low e s t
On continue jusqu'à atteindre la taille de vocabulaire désirée. Les morceaux qui reviennent souvent (low) deviennent un seul token. Les rares (est) restent décomposés. C'est exactement ce que fait BPE — sur des milliards de mots au lieu de trois, et sur des octets plutôt que des caractères dans les modèles modernes (byte-level BPE), ce qui garantit qu'aucune entrée n'est jamais "inconnue".
Quelques cousins à connaître : WordPiece (BERT), SentencePiece (T5, Llama), Unigram LM (mT5). Ils partagent la même idée — un vocabulaire de sous-mots — avec des heuristiques de fusion différentes.
Tokens spéciaux
Au-delà des sous-mots du texte, le tokeniseur réserve quelques tokens spéciaux qui n'apparaissent jamais naturellement :
<|im_start|>,<|im_end|>(OpenAI),[INST]…[/INST](Llama),<|user|>/<|assistant|>— délimitent les tours d'une conversation.<|endoftext|>— fin de document.<|fim_prefix|>,<|fim_middle|>— pour le fill-in-the-middle, utilisé en complétion de code.
C'est ce qui permet de transformer un dialogue "Utilisateur a dit X, Assistant répond Y" en une séquence linéaire de tokens, exploitable par le modèle. Quand tu envoies un message à ChatGPT, ces marqueurs sont ajoutés automatiquement avant la tokenisation.
Essaie
L'éditeur fait apparaître les sous-mots à droite : chaque token est un fragment réutilisable, pas nécessairement un mot complet. Les mots fréquents tiennent en un seul token, les rares se décomposent en plusieurs morceaux.
Quelques choses à remarquer :
- Les mots courts et fréquents sont rarement coupés.
- Les mots longs ou rares se retrouvent souvent en plusieurs morceaux.
- L'espace précédant un mot fait partie du token (c'est pour ça que
· helloethellosont des tokens différents). - En français, le ratio tokens/mot est typiquement plus élevé qu'en anglais (1.4–1.8 vs 1.2–1.4) — les modèles ont vu plus d'anglais pendant l'entraînement.
Conséquences pratiques
Cette histoire de tokens a plein d'implications inattendues :
- Les LLMs comptent mal les lettres. "Combien de R dans strawberry ?" — ils répondent souvent 2 au lieu de 3, parce que le mot leur arrive en quelques tokens, pas en lettres séparées.
- Les prix d'API se calculent en tokens, pas en mots. Le français coûte donc un peu plus cher à traiter que l'anglais.
- Les fenêtres de contexte (
128k tokens,200k tokens…) se mesurent aussi en tokens. Un livre de 100 000 mots français représente environ 150 000 tokens.
Pour le modèle, "tokenisation" et "tok·en·isa·tion" sont la même chose. Il ne voit que les morceaux.
La suite
Maintenant que ton texte est devenu une suite d'entiers, ces entiers vont entrer dans le modèle. Première étape à l'intérieur du modèle : ils sont transformés en vecteurs, dans un espace de plusieurs centaines de dimensions où le sens devient une position géométrique.
C'est le sujet du chapitre suivant.
Mis à jour le