1. Les tokens : ce que la machine lit vraiment

CONCEPT · DÉMONSTRATION EXÉCUTABLE

Avant de parler de sens, il faut savoir ce qu’un modèle de langue a sous les yeux. Ce ne sont ni des lettres, ni des mots.

Fiche rédigée pour ce dossier. Le concept n’était couvert par aucun des matériaux rassemblés ; la démonstration qui l’accompagne a été écrite et exécutée pour l’occasion, sur le modèle de la démo vecteurs d’AH. Elle est donc à lire comme une illustration, pas comme une pièce validée par la squad.

Le problème

Les trois conférences répètent une formule : « LLM: predict the next available word ». Elle est juste dans son intention et fausse dans son détail. Un modèle ne prédit pas le prochain mot : il prédit le prochain token — un fragment de texte qui peut être un mot entier, une syllabe, une lettre, un espace, ou un morceau de mot qui ne veut rien dire tout seul.

Ce n’est pas une pédanterie. Presque tout ce qui surprend le public dans le comportement des modèles vient de là.

Comment la machine découpe

Personne ne décide de la liste des fragments. Elle est apprise sur un corpus, par une méthode simple : on part des caractères isolés, on cherche la paire de symboles voisins la plus fréquente, on la fusionne en un nouveau symbole, et on recommence — quelques dizaines de milliers de fois dans un vrai modèle.

La démonstration ci-dessous fait exactement cela, sur un corpus minuscule et quarante fusions. Sortie exacte du script :

=== ETAT INITIAL : le modele ne connait que des caracteres ===
  vocabulaire de depart : 19 symboles
  'constitutionnellement' -> c · o · n · s · t · i · t · u · t · i · o · n · n · e · l · l · e · m · e · n · t · _

=== APPRENTISSAGE : 40 fusions, la plus frequente d'abord ===
  fusion  1 : 'e' + '_' -> 'e_'   (vu 13 fois)
  fusion  2 : 't' + 'i' -> 'ti'   (vu 12 fois)
  fusion  3 : 'o' + 'n' -> 'on'   (vu 11 fois)
  fusion  4 : 't' + '_' -> 't_'   (vu 9 fois)
  fusion  5 : 'ti' + 'on' -> 'tion'   (vu 8 fois)
  fusion  6 : 'l' + 'e_' -> 'le_'   (vu 6 fois)
  fusion  7 : 'm' + 'a' -> 'ma'   (vu 6 fois)
  fusion  8 : 'ma' + 'n' -> 'man'   (vu 5 fois)
  fusion  9 : 'man' + 'g' -> 'mang'   (vu 5 fois)
  fusion 10 : 'e' + 'n' -> 'en'   (vu 5 fois)
  fusion 11 : 'a' + 'tion' -> 'ation'   (vu 5 fois)
  fusion 12 : 'c' + 'h' -> 'ch'   (vu 4 fois)
  fusion 20 : 'c' + 'on' -> 'con'   (vu 3 fois)
  fusion 30 : 'ch' + 'a' -> 'cha'   (vu 2 fois)
  fusion 40 : 'd' + 'o' -> 'do'   (vu 2 fois)

La fusion no 5 est le moment intéressant : la machine vient de découvrir tion. Elle ne sait pas que c’est un suffixe, elle ne sait pas ce qu’est un suffixe : elle a simplement constaté que ti et on se suivent souvent. Six fusions plus loin elle trouve ation. La morphologie du français apparaît toute seule, comme un sous-produit du comptage.

Le résultat

MotDécoupage apprisFragments
constitutionnellement constitution · nel · lement3
rationnellement r · ation · nel · lement4
mangeoire mang · e · o · i · r · e 6
chatchat1
fromage f · r · o · ma · g · e 6

Un mot de vingt et une lettres tient en trois fragments ; un mot de sept lettres en demande six.

La différence n’est pas la longueur, c’est la fréquence dans le corpus d’entraînement. constitutionnellement est long mais ses morceaux sont partout ; fromage est court mais n’apparaît qu’une fois, donc il reste en miettes. Et chat, vu trois fois, a mérité son propre symbole.

Ce que cela explique, concrètement

Ce qu’on observePourquoi
Le modèle compte mal les lettres d’un mot Il ne voit pas les lettres. Demander « combien de r dans fromage » revient à demander à quelqu’un qui lit f·r·o·ma·g·e de recompter — et pour un mot fréquent, qui tient en un seul fragment, l’information des lettres n’est tout simplement plus là.
Il est meilleur en anglais Les vocabulaires sont majoritairement appris sur des corpus anglophones. Un même texte demande souvent plus de fragments en français, en allemand ou en turc qu’en anglais : il coûte plus cher et remplit plus vite la fenêtre de (fiche 4).
Il bute sur les chiffres Un nombre est découpé selon la fréquence de ses chiffres, pas selon sa valeur. 1024 peut devenir un seul fragment et 1025 en devenir trois. L’arithmétique n’a aucune raison de bien se comporter là-dessus — et c’est exactement ce que Jansma observe dans son expérience, dont les seules erreurs sont des phrases arithmétiques (fiche 7).
Le prix se compte en tokens La facturation des modèles commerciaux et la taille maximale d’un texte se comptent en fragments, jamais en mots. D’où des écarts de coût que rien dans le texte ne laisse deviner.

Les limites de cette démonstration

Mais l’opération est la même, et c’est tout ce qu’on demande à une démonstration : être petite assez pour tenir sous les yeux, et structurellement identique.

Le fichier : demos-complementaires/demo-tokens.py — Python pur, aucune dépendance, exécutable sur une machine vierge.
La sortie : resultat-tokens.txt.

← Index2. Les vecteurs : le sens comme un angle →