Tokenisation : définition, algorithmes BPE et exemples
Le processus qui transforme un texte en une suite de tokens compréhensible par un modèle de langage : étapes, algorithmes BPE, WordPiece et Unigram, exemples de code et effets sur les langues, les nombres et le code.
Par Équipe Blent· Mis à jour le · 15 min de lecture· Niveau intermédiaire
Tokenisation en bref
- Rôle
- Convertir un texte en identifiants de tokens
- Algorithmes courants
- BPE, WordPiece, Unigram
- Bibliothèques
- tiktoken, Tokenizers, SentencePiece
- Taille de vocabulaire
- De 30 000 à plus de 200 000 tokens
- Opération inverse
- Le décodage (detokenization)
- Particularité
- Propre à chaque famille de modèles
Définition : Tokenisation
La tokenisation, ou tokenization en anglais, est le processus qui découpe un texte en unités élémentaires appelées tokens, puis associe chacune à un identifiant numérique tiré d'un vocabulaire fixe. Dans les grands modèles de langage, elle repose sur des algorithmes de sous-mots comme BPE, WordPiece ou Unigram, qui apprennent sur un corpus quels fragments de texte méritent leur propre entrée. Les mots fréquents deviennent un seul token, les mots rares sont décomposés en morceaux. La tokenisation est la première étape de tout traitement par un LLM, et son inverse, le décodage, reconstitue le texte à partir des identifiants générés.
En une phrase : la tokenisation découpe le texte en fragments numérotés selon un vocabulaire appris, pour que le modèle puisse le traiter.
Dans cette définition
Qu'est-ce que la tokenisation ?
La tokenisation est l'étape qui transforme une chaîne de caractères en une liste d'entiers qu'un modèle de langage peut traiter. Elle découpe le texte en tokens, cherche chacun dans un vocabulaire fixe et le remplace par son identifiant. À la sortie du modèle, l'opération inverse, le décodage, reconvertit les identifiants générés en texte lisible.
Historiquement, le traitement automatique du langage découpait le texte en mots. Cette approche bute sur deux problèmes : le vocabulaire explose avec les flexions, les noms propres et les fautes de frappe, et tout mot absent du dictionnaire devient un symbole « inconnu ». À l'inverse, un découpage caractère par caractère ne laisse rien d'inconnu mais produit des séquences très longues, coûteuses à traiter pour un Transformer. Les tokenizers en sous-mots, popularisés en traduction automatique au milieu des années 2010, puis par BERT et GPT-2, ont résolu ce dilemme : les mots fréquents restent entiers, les mots rares sont décomposés en morceaux connus.
Le tokenizer est entraîné une fois, sur un large corpus, avant le modèle lui-même. Son vocabulaire est ensuite figé : chaque identifiant correspond à une ligne de la matrice d'embeddings du modèle. C'est pourquoi tokenizer et poids sont indissociables, et pourquoi deux LLM différents découpent rarement un même texte de la même façon.
À retenir : la tokenisation est un dictionnaire appris qui détermine comment le modèle « voit » le texte. Elle influence la longueur des séquences, le coût des requêtes et certaines capacités du modèle.
Les principaux algorithmes de tokenisation
Trois familles d'algorithmes se partagent les LLM actuels. Elles diffèrent surtout par la manière de construire le vocabulaire.
BPE (Byte Pair Encoding)
Le BPE vient de la compression de données, où il a été décrit par Philip Gage en 1994. Sennrich et ses coauteurs l'ont adapté à la traduction automatique en 2016. L'algorithme part d'un vocabulaire réduit aux caractères, compte les paires de symboles adjacents dans le corpus, fusionne la plus fréquente en un nouveau symbole, puis recommence jusqu'à atteindre la taille de vocabulaire visée. Pour tokeniser un nouveau texte, il rejoue les fusions apprises dans le même ordre.
GPT-2 a introduit une variante byte-level : le vocabulaire de départ n'est plus l'ensemble des caractères mais les 256 octets possibles. N'importe quelle chaîne UTF-8, emoji ou idéogramme compris, peut donc être encodée sans token inconnu. C'est l'approche de la plupart des LLM génératifs actuels, dont ceux d'OpenAI via la bibliothèque tiktoken.
WordPiece
Conçu chez Google au début des années 2010 et rendu célèbre par BERT, WordPiece procède aussi par fusions successives. Mais au lieu de retenir la paire la plus fréquente, il choisit celle qui augmente le plus la vraisemblance du corpus, ce qui favorise les paires dont les éléments apparaissent rarement séparément. À l'usage, il découpe chaque mot en cherchant le plus long préfixe présent dans le vocabulaire. Les fragments de continuation sont marqués par le préfixe ## : « tokenisation » peut ainsi devenir token, ##isation.
Unigram et SentencePiece
L'algorithme Unigram, proposé par Taku Kudo en 2018, suit le chemin inverse. Il part d'un très grand vocabulaire candidat et retire progressivement les tokens dont la suppression dégrade le moins la vraisemblance du corpus. Il peut proposer plusieurs découpages possibles d'un même mot, une propriété exploitée pour rendre les modèles plus robustes.
SentencePiece n'est pas un algorithme mais une bibliothèque de Google, publiée la même année, qui implémente BPE et Unigram. Sa particularité : elle traite le texte brut comme un flux, espaces compris (représentés par le symbole ▁), sans pré-découpage dépendant de la langue. Elle convient donc aussi aux langues qui ne séparent pas les mots par des espaces, comme le japonais ou le chinois. Des modèles comme T5 ou les premières générations de Llama l'ont utilisée.
BPE, WordPiece, Unigram : quelles différences ?
| Critère | BPE | WordPiece | Unigram |
|---|---|---|---|
| Construction | Fusionne la paire la plus fréquente | Fusionne la paire qui maximise la vraisemblance | Élague un grand vocabulaire initial |
| Sens de construction | Du petit vers le grand | Du petit vers le grand | Du grand vers le petit |
| Découpage d'un mot | Rejoue les fusions apprises | Plus long préfixe connu | Découpage le plus probable |
| Implémentations | tiktoken, Tokenizers, SentencePiece | Tokenizers | SentencePiece, Tokenizers |
| Modèles représentatifs | GPT, Llama 3, Mistral, Qwen | BERT, DistilBERT | T5, ALBERT, XLNet |
Exemple : tokeniser un texte en Python
La bibliothèque tiktoken donne accès aux encodages des modèles d'OpenAI. L'encodage o200k_base est celui des modèles de la génération GPT-4o.
import tiktoken
enc = tiktoken.get_encoding("o200k_base")
texte = "La tokenisation découpe le texte en sous-mots."
ids = enc.encode(texte)
print(len(ids), "tokens :", ids)
# Chaque token est une suite d'octets : un caractère accentué peut être réparti sur deux tokens
print([enc.decode_single_token_bytes(i) for i in ids])
print(enc.decode(ids) == texte) # True : le décodage est exact
Pour un modèle ouvert, on charge son tokenizer depuis le Hub de Hugging Face avec AutoTokenizer. Comparer deux familles de tokenizers sur la même phrase est très parlant :
from transformers import AutoTokenizer
texte = "La tokenisation découpe le texte en sous-mots."
for nom in ["google-bert/bert-base-multilingual-cased", "Qwen/Qwen2.5-0.5B-Instruct"]:
tok = AutoTokenizer.from_pretrained(nom)
encoded = tok(texte)
print(nom)
print(" tokens :", tok.convert_ids_to_tokens(encoded["input_ids"]))
print(" nombre :", len(encoded["input_ids"]))
Le tokenizer WordPiece de BERT affiche des fragments préfixés par ## et encadre la phrase des tokens spéciaux [CLS] et [SEP]. Le tokenizer BPE byte-level de Qwen représente l'espace qui précède un mot par le caractère Ġ, une convention héritée de GPT-2. Les deux reconstituent pourtant exactement le texte au décodage.
À quoi sert la maîtrise de la tokenisation ?
La tokenisation est invisible tant que tout va bien. La comprendre devient utile dès qu'un comportement du modèle surprend ou qu'un projet sort de l'ordinaire.
Compter avec précision
Utiliser le tokenizer exact d'un modèle pour estimer la taille d'un prompt ou d'un corpus.
Découper un corpus pour un RAG
Fixer la taille des fragments en tokens plutôt qu'en caractères, pour respecter les limites du modèle d'embedding.
Préparer un fine-tuning
Appliquer le bon modèle de chat et les bons tokens spéciaux aux exemples d'entraînement.
Évaluer un modèle multilingue
Mesurer combien de tokens chaque langue consomme pour anticiper coûts et performances.
Diagnostiquer des erreurs
Expliquer des difficultés sur l'orthographe, le comptage de lettres ou l'arithmétique.
Entraîner un tokenizer
Construire un vocabulaire adapté à un domaine (chimie, code, langue rare) pour un modèle entraîné de zéro.
Pourquoi les LLM utilisent-ils des sous-mots ?
La tokenisation en sous-mots est un compromis entre le découpage en caractères, trop fin, et le découpage en mots, trop rigide.
- Un vocabulaire de taille maîtrisée suffit à représenter n'importe quel texte, y compris des mots jamais vus.
- Les mots fréquents tiennent en un seul token, ce qui raccourcit les séquences.
- Les mots rares se décomposent en fragments porteurs de sens (préfixes, racines, suffixes).
- Les variantes byte-level ne rencontrent jamais de caractère inconnu, même pour les emojis ou les langues rares.
- Le découpage est déterministe et réversible : le décodage restitue exactement le texte d'origine.
Quelles sont les limites de la tokenisation ?
Beaucoup de faiblesses attribuées aux LLM viennent en réalité de leur tokenizer.
- Les langues peu présentes dans le corpus du tokenizer consomment plus de tokens, donc coûtent plus cher.
- Le modèle ne voit pas les lettres d'un mot, ce qui complique l'orthographe et le comptage de caractères.
- Le découpage irrégulier des nombres gêne l'arithmétique.
- Un même mot peut être tokenisé différemment selon l'espace qui le précède ou sa casse.
- Le tokenizer est figé avec le modèle : le modifier impose de réentraîner au moins une partie des embeddings.
- Certains tokens rares, mal appris pendant l'entraînement, peuvent provoquer des comportements anormaux.
Langues, nombres et code : les effets de la tokenisation
Le vocabulaire d'un tokenizer reflète son corpus d'entraînement. Tout ce qui y est rare est découpé plus finement, avec des conséquences concrètes.
- Les langues : l'anglais, majoritaire dans les corpus, est le mieux compressé. Le français demande en général un peu plus de tokens pour un même contenu, et les langues à alphabet non latin peu représentées peuvent en demander plusieurs fois plus. Des travaux de recherche ont montré que cet écart se traduit par des coûts et des latences inégaux selon la langue de l'utilisateur. Les vocabulaires plus vastes et plus multilingues des modèles récents atténuent le phénomène.
- Les nombres : selon le tokenizer, un nombre est découpé chiffre par chiffre ou par groupes de plusieurs chiffres, parfois de façon irrégulière. « 1234 » et « 12345 » ne sont alors pas alignés de la même manière, ce qui complique l'apprentissage de l'arithmétique. Certains tokenizers imposent un découpage régulier des chiffres précisément pour cette raison.
- Le code : indentation, accolades et noms de variables pèsent lourd. Les premiers tokenizers gaspillaient un token par espace d'indentation ; les tokenizers récents disposent de tokens pour les suites d'espaces et pour les mots-clés courants des langages de programmation.
- La casse et les espaces : « Paris », « paris » et « Paris » précédé d'une espace correspondent souvent à des tokens différents. Une variation de mise en forme peut ainsi modifier le nombre de tokens, et parfois la réponse du modèle.
Ces effets expliquent des faiblesses connues des LLM, comme la difficulté à épeler un mot, à inverser une chaîne de caractères ou à compter des lettres. Notre article Tokenization : comment les LLM découpent le texte en donne de nombreux exemples. Pour le volet économique (fenêtre de contexte, facturation au token), voir la fiche Token.
Quand faut-il se préoccuper du tokenizer ?
La plupart des projets utilisent le tokenizer fourni avec le modèle sans y toucher. Certaines situations exigent toutefois de s'y intéresser de près.
Le tokenizer devient un sujet
- Vous fine-tunez un modèle ou préparez des données d'entraînement.
- Votre application traite plusieurs langues ou un jargon très spécifique.
- Vous devez découper un corpus au token près.
- Le modèle échoue de façon récurrente sur des nombres, du code ou des noms propres.
Le tokenizer par défaut suffit
- Vous consommez un modèle par API pour des tâches courantes.
- Un ordre de grandeur suffit pour estimer les coûts.
- Vos textes sont en anglais ou en français standard.
- Vous n'entraînez ni n'adaptez aucun modèle.
Bibliothèques et outils de tokenisation
Chaque famille de modèles s'accompagne de son tokenizer ; ces bibliothèques permettent de l'utiliser, de l'inspecter ou d'en entraîner un nouveau.
- Bibliothèque
tiktoken
Tokenizer BPE rapide d'OpenAI, avec les encodages de ses modèles.
- Bibliothèque
Tokenizers
Implémentation en Rust de Hugging Face, pour utiliser ou entraîner BPE, WordPiece et Unigram.
- Bibliothèque
SentencePiece
Outil de Google qui tokenise le texte brut, espaces compris, avec BPE ou Unigram.
- Plateforme
Hugging Face
Le Hub fournit le tokenizer de chaque modèle, chargé via AutoTokenizer.
- NLP classique
spaCy
Tokenisation linguistique en mots et phrases, pour l'analyse de texte hors LLM.
- Fine-tuning
Unsloth
Fine-tuning de LLM avec gestion intégrée des modèles de chat et des tokens spéciaux.
Les concepts à connaître autour de la tokenisation
La tokenisation fait le lien entre le texte et les représentations numériques des modèles.
- TokenL'unité produite par la tokenisation, et sa place dans l'économie des LLM.
- EmbeddingLe vecteur appris associé à chaque identifiant de token.
- TransformerL'architecture qui traite la séquence de tokens.
- LLMLe modèle de langage livré avec son propre tokenizer.
- Fine-tuningL'adaptation d'un modèle, qui doit respecter son tokenizer et ses tokens spéciaux.
- Deep LearningLe cadre des réseaux de neurones qui consomment les séquences de tokens.
Ressources pour approfondir la tokenisation
Trois articles pour relier la tokenisation au fonctionnement global des modèles de langage.
- Guide
Tokenization : comment les LLM découpent le texte
Le guide complet sur les tokens, les algorithmes de découpage et leurs conséquences pratiques.
Lire l'article - Architecture
Les Transformers, incontournables du Deep Learning
Comprendre comment le modèle traite la séquence de tokens produite par le tokenizer.
Lire l'article - Fondamentaux
Large Language Models (LLM) : tout savoir
Le fonctionnement, l'entraînement et les usages des grands modèles de langage.
Lire l'article
Questions fréquentes
Questions fréquentes
Expertise
À propos de l'auteur
Équipe Blent
Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des applications LLM, et forment chaque année des centaines de professionnels à l'IA générative.
Sources et méthodologie
- Sennrich, Haddow et Birch, Neural Machine Translation of Rare Words with Subword Units, ACL 2016
- Kudo et Richardson, SentencePiece: A simple and language independent subword tokenizer, EMNLP 2018
- Documentation Hugging Face Tokenizers et OpenAI tiktoken
Comment fonctionne la tokenisation d'un texte ?
Un tokenizer moderne enchaîne cinq opérations, de la chaîne de caractères brute à la liste d'identifiants transmise au modèle.
Normaliser
Le texte est éventuellement uniformisé : normalisation Unicode, gestion des accents, parfois passage en minuscules. Les tokenizers des LLM récents modifient très peu le texte pour pouvoir le restituer à l'identique.
Pré-découper
Une première segmentation, souvent par expression régulière, isole les mots, la ponctuation, les espaces et les nombres. Elle empêche par exemple de fusionner un mot avec la ponctuation qui le suit.
Appliquer le modèle de sous-mots
Chaque segment est découpé en tokens du vocabulaire selon l'algorithme du tokenizer : fusions successives pour BPE, plus long préfixe connu pour WordPiece, découpage le plus probable pour Unigram.
Ajouter les tokens spéciaux
Le tokenizer insère les marqueurs attendus par le modèle : début et fin de séquence, séparateurs, balises de rôle d'une conversation.
Convertir en identifiants
Chaque token est remplacé par son numéro dans le vocabulaire. Le modèle reçoit cette liste d'entiers, accompagnée si besoin d'un masque d'attention.