Un modèle de langage ne reçoit ni des mots ni des caractères bruts. Le tokenizer transforme le texte en identifiants numériques appartenant au vocabulaire appris avec le modèle. Un token peut être un mot court, une partie de mot, un signe de ponctuation ou un fragment de code.
Pourquoi découper en sous-mots ?
Un vocabulaire contenant tous les mots possibles serait immense et incapable de gérer les termes nouveaux. Les méthodes de sous-mots comme BPE, WordPiece ou Unigram construisent un compromis : les formes fréquentes restent compactes, tandis que les termes rares sont décomposés. SentencePiece désigne notamment une famille d’outils qui peut apprendre directement sur le texte sans séparation préalable par espaces.
Il n’existe donc pas de règle universelle « un token égale quatre caractères ». La langue, les accents, le code et le tokenizer changent le résultat.
Le tokenizer doit correspondre au modèle
Les identifiants n’ont de sens qu’avec le vocabulaire et la configuration utilisés à l’entraînement. Employer le tokenizer d’un autre modèle peut dégrader les résultats ou provoquer des erreurs de dimensions. Chargez toujours tokenizer et modèle depuis la même version vérifiée, y compris en production.
Tokens spéciaux et conversations
Les modèles utilisent des tokens réservés pour marquer début, fin, padding ou rôles d’une conversation. Pour un modèle de chat, une chat template transforme les messages système, utilisateur et assistant dans le format attendu. Concaténer les messages manuellement peut supprimer ces marqueurs et réduire fortement la qualité, même si le texte semble lisible.
Troncature, padding et fenêtres de contexte
Le padding aligne les séquences d’un batch ; le masque d’attention indique quelles positions ignorer. La troncature coupe une entrée trop longue, mais le côté coupé est crucial : supprimer le début peut retirer les instructions, supprimer la fin peut perdre la question. Pour les documents longs, utilisez des fenêtres avec chevauchement ou un pipeline de récupération plutôt qu’une coupe silencieuse.
Impacts concrets
- Coût : les API facturent généralement selon les tokens d’entrée et de sortie.
- Latence : un prompt plus long augmente le calcul de préremplissage et la mémoire KV.
- Multilingue : certaines langues sont moins compactes avec un vocabulaire donné.
- Code : espaces, indentation et symboles influencent le découpage.
- Alignement : les offset mappings permettent de relier les tokens au texte original pour annotation ou surlignage.
Bonnes pratiques
Comptez les tokens avec le tokenizer exact avant l’appel. Réservez une marge pour la sortie et les tokens spéciaux. Surveillez séparément les distributions par langue et type de contenu. Lors d’une migration de modèle, comparez le nombre de tokens, la limite de contexte et la chat template sur un corpus réel.
FAQ
Un token est-il un mot ?
Non. Un mot peut produire un ou plusieurs tokens, et certains tokens incluent des espaces ou signes.
Pourquoi deux modèles comptent-ils différemment ?
Ils peuvent utiliser des vocabulaires, algorithmes et règles de normalisation différents.
Peut-on décoder parfaitement tous les tokens ?
La séquence complète est généralement réversible, mais un token isolé ne correspond pas toujours à un fragment lisible.