ToolNavs Outils IA à découvrir
Proposer Connexion
Retour à Encyclopédie de l’IA
Qu'est-ce qu'un tokenizer ? Pourquoi la même phrase n'a pas le même nombre de tokens selon le modèle

Qu'est-ce qu'un tokenizer ? Pourquoi la même phrase n'a pas le même nombre de tokens selon le modèle

Encyclopédie de l’IA • Admin • • 8 vues

Le tokenizer est le premier composant que traverse la phrase que vous envoyez à un modèle, et son rôle n'est pas de comprendre : il ne fait que découper et numéroter. Avant qu'un texte entre dans un grand modèle, le tokenizer le découpe en tokens, puis remplace chacun par un numéro tiré de son vocabulaire. Ce que le modèle lit réellement, c'est cette suite de numéros. Une fois ce point éclairci, bien des confusions disparaissent : un token n'est ni un caractère, ni un mot.

Ce qui est découpé, ce n'est pas le caractère, mais la fréquence

La plupart des tokenizers actuels utilisent un algorithme appelé BPE, pour Byte Pair Encoding. Pendant l'entraînement, l'algorithme compte quelles combinaisons de caractères reviennent le plus souvent ensemble, et plus une combinaison est fréquente, plus elle a de chances d'être fusionnée en un seul token. Résultat : les mots courants et les fragments habituels restent souvent d'un bloc — un mot anglais peut tenir en 1 token — tandis que les mots rares, les noms propres et les néologismes sont découpés plus finement, parfois en trois ou quatre morceaux pour un seul mot.

Les espaces, la ponctuation, les chiffres et le code participent aussi au découpage, et les règles n'ont rien d'évident. En anglais, l'espace qui précède un mot est souvent rattaché au mot dans le même token, et les retours à la ligne, les suites de chiffres et le code indenté sont traités à part. Un même contenu peut donc aboutir à un nombre de tokens différent simplement parce que sa mise en forme a changé.

Pourquoi la même phrase ne donne pas le même compte selon le modèle

Le vocabulaire de chaque modèle est entraîné séparément : la taille, les règles de fusion et les langues privilégiées diffèrent. Plus le vocabulaire est grand, plus les fragments conservés d'un bloc sont en général nombreux et longs. Avec un vocabulaire qui couvre bien le chinois, un caractère chinois peut valoir exactement 1 token ; avec une couverture médiocre, ce même caractère peut être éclaté en plusieurs tokens au niveau de l'octet.

Voilà la réponse à la question du titre. En règle générale, en anglais, 1 token correspond à environ 3 à 4 caractères. En chinois, la variation est bien plus forte : un caractère pour 1 token est très courant, mais deux ou davantage n'ont rien d'exceptionnel — tout dépend du modèle. Utiliser le comptage du modèle A pour estimer la consommation du modèle B et tomber sur un autre chiffre est donc normal ; aucun des deux modèles ne s'est trompé.

Le nombre de tokens détermine aussi directement ce que les choses coûtent en pratique. En facturation à l'usage, l'entrée et la sortie se paient le plus souvent au token. La limite de la fenêtre de contexte et la quantité d'historique de conversation qui y tient se mesurent également en tokens, et plus une réponse doit générer de tokens, plus elle met en général de temps à arriver. C'est encore plus net quand on construit une base de connaissances : le découpage des documents en blocs, évoqué dans Qu'est-ce que le RAG exactement ? Ses différences avec le fine-tuning et le prompt engineering, se fait lui aussi en tokens et non en caractères — des blocs trop gros gaspillent la fenêtre, des blocs trop petits risquent de couper le sens en deux.

Trois erreurs de calcul fréquentes

La première consiste à estimer le coût directement à partir du nombre de caractères. Il n'existe aucune conversion fixe entre caractères et tokens, et l'écart grandit encore quand l'anglais, le chinois et le code se mélangent : les budgets calculés au caractère ont tendance à être trop bas.

La deuxième consiste à affirmer que le chinois est forcément plus économique, ou forcément plus cher. La formulation juste est la suivante : avec la plupart des vocabulaires courants, dire la même chose en chinois consomme en général plus de tokens qu'en anglais, parce que les mots anglais fréquents tombent plus souvent juste en un bloc, alors que le chinois est plus souvent découpé. Mais ce n'est pas une loi : avec un vocabulaire bien optimisé pour le chinois, l'écart se réduit sensiblement. La conclusion doit donc toujours être rattachée à un modèle précis.

La troisième consiste à prendre le nombre de tokens pour une preuve de la puissance d'un modèle. Si la même phrase fait 80 tokens chez l'un et 110 chez l'autre, cela montre seulement que les deux découpent différemment, sans rien dire directement sur lequel est le plus intelligent. La conception d'un vocabulaire est un arbitrage : grand vocabulaire, découpage grossier, mais des tokens plus coûteux à représenter ; petit vocabulaire, découpage fin, mais des séquences plus longues.

Ce qu'il ne sait pas faire

Le tokenizer n'est pas le modèle lui-même. Il décide uniquement de la granularité à laquelle le texte est transmis ; il ne comprend pas le sens et ne juge pas si une phrase est juste ou fausse. La qualité du découpage influence bel et bien les performances du modèle — un mauvais découpage rend les calculs et les mots rares plus difficiles à traiter — mais la compréhension et le raisonnement relèvent des paramètres du modèle. Distinguer les deux évite d'attendre trop du tokenizer, ou de blâmer le mauvais composant.

Pour le quotidien, il existe un contrôle simple : pour estimer le coût et la longueur, ne comptez pas les caractères de tête. Passez votre texte réel dans l'outil de comptage correspondant au modèle que vous utilisez, en incluant le prompt système, l'historique de la conversation et une marge pour la réponse, et gardez environ vingt pour cent de réserve. En budgétant en tokens plutôt qu'en caractères, on évite à l'avance la plupart des factures surprises et des débordements de contexte.

Outils Recommandés

Plus