BPE, SentencePiece et tiktoken : les différences entre tokeniseurs
Traduction automatique
Cet article a été traduit automatiquement depuis la version originale en anglais.
BPE est un algorithme de tokenisation. SentencePiece et tiktoken sont des implémentations dont les conventions d’entraînement, de prétraitement et de vocabulaire diffèrent. SentencePiece prend en charge les modèles BPE et unigrammes ; tiktoken utilise des encodages BPE au niveau des octets. Leurs identifiants de tokens ne sont pas interchangeables.
Pour estimer l’utilisation du contexte ou traiter du texte, les ingénieurs doivent utiliser le tokeniseur et le gabarit de prompt propres au checkpoint ou au modèle d’API exact.
Distinguer l’algorithme de l’implémentation
Byte Pair Encoding apprend des fusions répétées de symboles adjacents. Le BPE fondé sur les caractères commence par des caractères ; les variantes au niveau des octets commencent par des octets. Les fusions apprises et le vocabulaire déterminent le découpage d’une chaîne. Un mot courant peut correspondre à un token dans un vocabulaire et à plusieurs dans un autre.
| Nom | Ce qu’il spécifie | Ce qui dépend encore du modèle |
|---|---|---|
| BPE | Un algorithme fondé sur les fusions | Symboles initiaux, prétraitement, fusions, vocabulaire |
| SentencePiece | Une implémentation de tokeniseur pour le texte brut prenant en charge BPE et les unigrammes | Type de modèle, normalisation, vocabulaire, repli sur les octets |
| tiktoken | Une implémentation d’encodages BPE au niveau des octets | Encodage, vocabulaire, règles des tokens spéciaux |
SentencePiece traite le texte Unicode brut et représente les espaces blancs avec son marqueur ▁. Le repli sur les octets est facultatif. tiktoken fournit des encodages nommés et un traitement au niveau des octets.
Les familles de tokeniseurs peuvent aussi changer au sein d’une même marque de modèles. La documentation de Mistral distingue les anciens tokeniseurs SentencePiece de Tekken, qui utilise un BPE de type tiktoken. Chargez le tokeniseur du checkpoint au lieu de le déduire de la marque.
Mesurer un texte représentatif
Pour chaque langue et type de contenu que vous proposez, relevez le nombre de tokens après avoir appliqué le gabarit de prompt réellement utilisé. Incluez les marqueurs de rôle, les tokens spéciaux, les outils et toute instruction supplémentaire sérialisée. Le texte visible de l’utilisateur, à lui seul, peut sous-estimer la taille de la requête.
Pour comparer les tokeniseurs sur un échantillon fixe, définissez une unité, comme les mots ou les caractères, et divisez le nombre de tokens par le nombre de ces unités. Gardez la normalisation et l’échantillon constants. Les « mots » délimités par des espaces blancs ne constituent pas une unité linguistique comparable dans toutes les langues : précisez donc la règle de mesure.
La taille du vocabulaire ne suffit pas à établir l’efficacité en tokens entre différents corpus d’entraînement. Un décompte obtenu avec le tokeniseur d’un autre modèle ne prouve pas non plus que votre requête respecte la limite de contexte du modèle choisi.
Guide d’ingénierie : tokenisation présente des exemples de vocabulaires et explique la fertilité des tokeniseurs.