BPE (Byte Pair Encoding)
iaDé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èle | Tokenizer | Vocab size | Tokens / mot FR |
|---|---|---|---|
| GPT-2 | BPE | 50K | ~1.5 |
| LLaMA 2 | SentencePiece BPE | 32K | ~2.0 |
| LLaMA 3 | Tiktoken BPE | 128K | ~1.3 |
| Mistral | SentencePiece BPE | 32K | ~2.0 |
| Qwen 2.5 | Tiktoken BPE | 151K | ~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
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h