Aide

Besoin d’aide ?

Posez votre question sur le Discord de MiniLab, dans le salon de cette page :

#questions-tokenisation

Ouvrir le salon ↗

Pas encore membre ? Rejoindre le Discord, puis revenez sur ce bouton.

Ma progression

Sauvegarder ma progression

Chargement…

Votre progression est enregistrée dans ce navigateur, pour cette adresse seulement. Gardez ce code : il la restaure dans un autre navigateur, sur un autre ordinateur, ou si les données du site ont été effacées.

MINILAB-0-1C
Mentions légales
Affichage

Personnaliser l’affichage

Ce réglage s’applique à la vue côte à côte.
LEÇON 01FONDAMENTAL

La tokenisation.

Lorsque vous écrivez une question dans le champ de saisie d’une IA, vous formulez une phrase comme vous le feriez avec une autre personne. Mais avant que le modèle d'IA puisse la traiter, votre texte doit être transformé dans un format qu’il peut exploiter. Il va devoir passer par plusieurs étapes avant de pouvoir interpréter votre message et commencer à vous répondre.

La première étape à apprendre s’appelle la tokenisation : un tokenizer découpe votre texte en unités, puis convertit ces unités en identifiants numériques. Ces identifiants sont ensuite transmis au modèle, qui les utilisera pour une prochaine étape de notre cours.

01

Pourquoi tokeniser ?

Un réseau neuronal ne manipule pas directement des phrases. Un tokenizer découpe le texte en unités appelées tokens, puis associe à chacune de ces unités un identifiant numérique.

Texte→Tokens→Identifiants

À ce stade, l'IA sait identifier les éléments du texte, mais ne les comprend pas encore. Ces identifiants ne font que préparer le terrain pour la représentation sémantique, que nous aborderons dans la leçon 03 avec les embeddings (plongements lexicaux) : chaque identifiant y sera remplacé par une suite de nombres capable de porter du sens.

02

Comment MiniLab découpera-t-il le texte ?

Pour commencer simplement, notre futur MiniLab utilisera un tokenizer qui découpe le texte caractère par caractère. Chaque caractère deviendra donc un token.

Par exemple, si vous écrivez baba, le tokenizer le découpera ainsi :

b   a   b   a

Notre tokenizer associera ensuite chaque caractère à un identifiant numérique. Cet identifiant dépendra du vocabulaire utilisé : c’est la liste des caractères que le tokenizer connaît et des numéros qui leur sont associés.

Vocabulaire actuel du laboratoire
a → 49
b → 50

baba → [50, 49, 50, 49]

Dans le vocabulaire actuel du laboratoire, le token b correspond à l’identifiant 50 et le token a à l’identifiant 49. Chaque lettre répétée garde le même identifiant : la séquence de nombres suit donc l’ordre des lettres.

Pourquoi a ne commence-t-il pas à 0 ? Parce que le vocabulaire du laboratoire range ses caractères dans l’ordre Unicode, et que d’autres caractères passent avant les minuscules : les identifiants 0 à 48 sont attribués au saut de ligne, à l’espace, aux signes de ponctuation, aux chiffres et aux lettres majuscules.

Notre futur modèle recevra cette suite de nombres plutôt que les lettres directement. Vous pouvez retrouver ces mêmes identifiants dans le laboratoire ci-contre.

03

Observez par vous-même

Essayez de taper baba dans le champ du laboratoire. Les deux b ont le même identifiant, tout comme les deux a. Pourtant, chaque caractère occupe une position différente dans le texte.

Sélectionnez les tokens pour comparer leurs identifiants et leurs positions. Dans notre futur projet, le tokenizer reconnaîtra lui aussi les unités qui composent le texte, sans leur donner encore de sens.

04

Un vocabulaire préparé à l’avance

Avant d’entraîner notre modèle, nous préparerons son vocabulaire. Nous le réutiliserons pendant l’entraînement, puis chaque fois que nous enverrons une requête au modèle.

Un caractère doit toujours garder le même identifiant dans ce vocabulaire. Si son numéro changeait à chaque phrase, le modèle ne pourrait pas apprendre correctement à reconnaître les mêmes éléments.

05

Les limites de notre exemple

Dans notre futur projet MiniLab, nous découperons volontairement chaque caractère séparément pour rendre le principe facile à observer.

Le vocabulaire du laboratoire est limité : si vous saisissez un caractère qu’il ne connaît pas, comme 🙂, le tokenizer rejette le texte et le laboratoire affiche une erreur. Il ne crée pas automatiquement un nouvel identifiant, car cela modifierait le vocabulaire utilisé.

D’autres tokenizers peuvent regrouper plusieurs caractères et reconnaître des morceaux de mots fréquents. Cela permet souvent de représenter un texte avec moins de tokens et de le traiter plus efficacement.

Deux modèles peuvent utiliser des tokenizers différents et découper une même phrase de manière différente. Le nombre de tokens dépend donc du tokenizer utilisé.

À retenir

La tokenisation découpe le texte et remplace chaque unité par un identifiant stable. Elle prépare le texte pour le modèle, mais ne lui donne pas encore de signification.

Le tokenizer de MiniLab est volontairement simplifié pour faciliter l’apprentissage. D’autres modèles peuvent utiliser des tokenizers et des vocabulaires différents : le découpage et les identifiants obtenus ne seront donc pas forcément les mêmes.

Comprendre les tokens · OpenAI ↗
Byte pair encoding, le découpage des LLM · Wikipédia ↗

VÉRIFIER SES CONNAISSANCES

Valider cette étape

Répondez aux trois questions pour débloquer la suite. Vous pouvez réessayer autant de fois que nécessaire.

Chargement de la progression…

Mise en ligne le

ESPACE DE PRATIQUE

Le laboratoire

Observez la transformation en direct.

● EN DIRECT
01

Votre texte

MODIFIABLE
02

Tokens générés

Chaque carte représente un token et son identifiant. Sélectionnez-en une pour voir sa position.

Tokenisation en cours…

Les espaces et les retours à la ligne sont aussi des tokens.

À retenir

Un même caractère conserve le même identifiant tant que le vocabulaire ne change pas.

Consulter le vocabulaire pédagogique complet

Chargement du vocabulaire…

03

Pour aller plus loin

Comparez notre tokenizer par caractère à d’autres méthodes. Les découpages et les identifiants dépendent du vocabulaire utilisé.

04

Pour aller encore plus loin

Certains tokenizers permettent d’ajouter des tokens absents de leur vocabulaire. Par exemple, avec un modèle Hugging Face associé, il faut aussi adapter sa matrice d’embeddings (nous aborderons cela plus tard dans le cours) ; le nouvel emplacement doit ensuite être entraîné ou ajusté pour devenir utile.

Notre laboratoire actuel conserve pour le moment un vocabulaire fixe et rejette les caractères inconnus. Les références citées ci-dessous décrivent une approche avancée que nous pourrons explorer plus tard si besoin.