Les réseaux de neurones travaillent avec des nombres. Ils ne peuvent pas lire le mot « bonjour » comme vous le faites. Avant qu'un modèle de langage puisse traiter du texte, celui-ci doit être découpé en petits morceaux numériques appelés tokens. Cette étape en apparence simple a des conséquences profondes sur la façon dont l'IA comprend - et ne comprend pas - le langage.
L'approche la plus simple : traiter chaque caractère comme un token. « Hello » devient ['H', 'e', 'l', 'l', 'o'] - cinq tokens.
Le problème ? Les mots deviennent des séquences absurdement longues. Un essai de 500 mots pourrait produire plus de 2 500 tokens de caractères. Comme les modèles Transformer ont une complexité quadratique par rapport à la longueur de la séquence, c'est un désastre en termes de calcul. Pire, les caractères individuels ne portent presque aucun sens - le modèle doit apprendre que 'c', 'h', 'a', 't' ensemble désignent un animal à fourrure.
L'extrême opposé : chaque mot est un token. « Le chat dort » devient ['Le', 'chat', 'dort'] - compact et porteur de sens.
Mais cela crée un problème différent : l'explosion du vocabulaire. Le français seul compte des centaines de milliers de mots. Ajoutez les fautes d'orthographe, le jargon technique et le code, et le vocabulaire devient ingérable. Tout mot absent du vocabulaire devient un token inconnu [UNK] - une impasse pour la compréhension.
Si un modèle utilisant des tokens au niveau des mots rencontre « ChatGPT » pour la première fois et que ce mot n'est pas dans le vocabulaire, il devient [UNK]. Comment cela pourrait-il affecter la capacité du modèle à parler de nouvelles technologies ?
Les modèles de langage modernes utilisent la tokenisation en sous-mots, qui se situe entre les caractères et les mots. Les mots courants restent entiers (« the », « and »), tandis que les mots rares sont découpés en morceaux significatifs (« in » + « croyab » + « le »).
Cela nous donne un vocabulaire gérable (généralement 32 000 à 100 000 tokens) tout en étant capable de traiter n'importe quel texte - même des mots que le modèle n'a jamais vus.
Sign in to join the discussion
BPE est l'algorithme derrière les modèles GPT. Voici comment il construit un vocabulaire :
{'h', 'e', 'l', 'o', 'w', 'r', 'd', ' '}.Exemple détaillé avec le texte "low lower lowest" :
| Étape | Paire la plus fréquente | Nouveau token | Le vocabulaire s'enrichit | |-------|------------------------|---------------|--------------------------| | 1 | l + o | lo | ...lo... | | 2 | lo + w | low | ...low... | | 3 | e + r | er | ...er... | | 4 | low + e | lowe | ...lowe... |
Après suffisamment de fusions, des mots courants et des fragments de mots émergent naturellement des données.
BPE a été inventé à l'origine en 1994 comme algorithme de compression de données. Il a été réutilisé pour le NLP en 2015 par Sennrich et al. - un bel exemple d'idées qui traversent les disciplines.
Utilisé par BERT et les modèles apparentés. Similaire à BPE, mais au lieu de fusionner la paire la plus fréquente, il fusionne la paire qui maximise la vraisemblance des données d'entraînement. Les morceaux de sous-mots sont préfixés par ## (par exemple, « playing » → ['play', '##ing']).
Traite l'entrée comme un flux brut d'octets - sans pré-tokenisation par les espaces. C'est crucial pour les langues comme le japonais et le chinois qui n'utilisent pas d'espaces entre les mots. GPT-4 et LLaMA utilisent des approches de type SentencePiece.
GPT-4 utilise une variante de BPE appelée cl100k_base avec environ 100 000 tokens dans son vocabulaire. Quelques comportements surprenants :
Hello, world - notez que l'espace est attaché).ind, iv, isibility - il découpe les mots rares).def hello(): → chaque mot-clé et symbole est généralement son propre token.Pourquoi les modèles de langage utilisent-ils la tokenisation en sous-mots plutôt que des mots entiers ?
| Taille du vocabulaire | Avantages | Inconvénients | |----------------------|-----------|---------------| | Petite (8k) | Modèle plus petit, moins d'embeddings | Séquences plus longues, traitement plus lent | | Grande (100k+) | Séquences plus courtes, tokens plus riches | Table d'embeddings plus grande, plus de mémoire |
Trouver le bon équilibre est une décision d'ingénierie qui affecte la vitesse du modèle, la mémoire et les capacités.
Les tokeniseurs entraînés principalement sur du texte anglais sont biaisés. La même phrase en hindi ou en arabe peut nécessiter 3 à 5 fois plus de tokens que son équivalent anglais, parce que ces écritures étaient sous-représentées dans les données d'entraînement. Cela signifie que :
Pourquoi la même phrase peut-elle coûter plus de tokens d'API en hindi qu'en anglais ?
Chaque appel API à GPT-4, Claude ou Gemini est facturé au token. Comprendre la tokenisation vous aide à :
Une règle approximative pour l'anglais : 1 token ≈ ¾ d'un mot, soit environ 4 caractères.
Approximativement, combien de tokens représente un essai de 1 000 mots en anglais ?
La bibliothèque open source tiktoken d'OpenAI vous permet de tokeniser du texte localement avec exactement le même algorithme que celui utilisé par GPT-4. Essayez-la sur vos propres écrits pour voir combien de tokens vos messages coûtent réellement.
Si vous construisiez un modèle de langage pour une langue à faibles ressources comme le gallois, comment aborderiez-vous la tokenisation pour garantir un encodage équitable et efficace ?