Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

BPE (Byte Pair Encoding)

ia

Définition

Le Byte Pair Encoding (BPE) est l'algorithme de tokenisation le plus largement utilisé dans les grands modèles de langage modernes : GPT-2, GPT-3, GPT-4 (via Tiktoken), LLaMA, Mistral, Qwen, DeepSeek et la plupart des LLMs open-source l'utilisent. Adapté de la compression de données par Sennrich et al. (2016) pour la NMT (Neural Machine Translation), BPE permet de représenter un vocabulaire fini couvrant pratiquement n'importe quelle langue et n'importe quel token numérique. L'algorithme BPE procède par fusion itérative : (1) Initialiser le vocabulaire avec tous les caractères/octets. (2) Compter la fréquence de chaque paire consécutive dans le corpus. (3) Fusionner la paire la plus fréquente en un nouveau token. (4) Répéter jusqu'à atteindre la taille de vocabulaire cible (typiquement 32K-128K). Le résultat est un vocabulaire de sous-mots optimisant la représentation compacte du corpus d'entraînement. Un aspect souvent méconnu est que BPE encode les espaces comme caractères distincts, permettant de marquer les débuts de mots (token "▁chat" vs "chat"). GPT utilise une variante byte-level BPE (BBPE) qui opère sur les octets bruts plutôt que les caractères Unicode, garantissant une couverture universelle de toutes les langues et tous les caractères spéciaux sans tokens "UNK" (unknown). La taille du vocabulaire impacte directement l'efficacité du modèle : un vocabulaire de 32K (LLaMA 2) tokenise le texte français moins efficacement qu'un vocabulaire de 128K (LLaMA 3), produisant plus de tokens par mot et donc consommant plus de contexte. LLaMA 3 a étendu son vocabulaire de 32K à 128K, améliorant significativement l'efficacité sur les langues non-anglaises et le code. Pour les ingénieurs déployant des LLMs, la tokenisation BPE a des implications sur le coût (facturation API en tokens), les limites de contexte (un document de 10K mots ≈ 12K-15K tokens selon la langue), et les performances sur les langues à faible ressource (langues avec peu de tokens dédiés dans le vocabulaire).

Algorithme BPE pas à pas

from tokenizers import Tokenizer, models, trainers, pre_tokenizers

# Entraîner un tokenizer BPE personnalisé
tokenizer = Tokenizer(models.BPE())
tokenizer.pre_tokenizer = pre_tokenizers.ByteLevel(add_prefix_space=False)

trainer = trainers.BpeTrainer(
    vocab_size=32000,
    min_frequency=2,
    special_tokens=["", "", "", ""]
)
tokenizer.train(files=["corpus.txt"], trainer=trainer)

# Test
output = tokenizer.encode("cybersécurité LLM fine-tuning")
print(output.tokens)  # ['cybers', 'écurit', 'é', 'ĠLL', 'M', 'Ġfine', '-', 'tuning']

Comparaison vocabulaires LLMs majeurs

ModèleTokenizerVocab sizeTokens / mot FR
GPT-2BPE50K~1.5
LLaMA 2SentencePiece BPE32K~2.0
LLaMA 3Tiktoken BPE128K~1.3
MistralSentencePiece BPE32K~2.0
Qwen 2.5Tiktoken BPE151K~1.2

Fertilisation croisée multilingue

Un vocabulaire BPE entraîné sur un corpus multilingue équilibré permet d'améliorer les performances sur les langues de faible ressource. Le déséquilibre de couverture (ex: LLaMA 2 favorisant l'anglais) explique pourquoi les LLMs non multilingues ont des performances dégradées sur le français, l'arabe ou le chinois.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis