SentencePiece
iaDéfinition
SentencePiece est une bibliotheque de tokenisation open-source developpee par Google (Kudo & Richardson, 2018) qui implementent des algorithmes de sous-mots (BPE et Unigram Language Model) de maniere independante de la langue et sans pre-tokenisation explicite. Elle est utilisee par LLaMA 2, Mistral, BLOOM, T5, XLNet et de nombreux autres modeles multilingues. L'innovation cle de SentencePiece est d'operer directement sur le flux de caracteres Unicode sans pre-tokenisation basee sur les espaces. Dans les implementations BPE classiques (tiktoken), les espaces delimitent les mots avant la tokenisation BPE. SentencePiece traite les espaces comme des caracteres ordinaires (notes '_'), permettant une tokenisation coherente des langues sans espaces comme le chinois, le japonais ou le thai. SentencePiece supporte deux algorithmes : BPE (Byte Pair Encoding) et Unigram Language Model. Le modele Unigram est probabiliste : il entraine un modele de langage sur les sous-mots et choisit la segmentation qui maximise la probabilite totale. Cette approche est souvent plus adaptee aux langues agglutinatives et morphologiquement riches. Pour LLaMA 2 et Mistral, SentencePiece est utilise avec un vocabulaire de 32K tokens incluant des tokens speciaux (BOS, EOS, PAD). Les modeles LLaMA 3 ont migre vers Tiktoken avec un vocabulaire de 128K tokens, ameliorant significativement l'efficacite sur le code et les langues non-anglaises. Pratiquement, SentencePiece est utilisé via l'interface HuggingFace (AutoTokenizer charge automatiquement le bon tokenizer) ou directement via la bibliotheque sentencepiece Python. La compatibilite entre tokenizers est importante lors du fine-tuning : utiliser un tokenizer different de celui du pre-entrainement degrade les performances.
Entrainement d'un tokenizer SentencePiece
import sentencepiece as spm
spm.SentencePieceTrainer.train(
input='corpus.txt',
model_prefix='my_tokenizer',
vocab_size=32000,
character_coverage=0.9995, # 99.95% des caracteres Unicode
model_type='bpe', # 'bpe' ou 'unigram'
pad_id=0, unk_id=1,
bos_id=2, eos_id=3,
add_dummy_prefix=True, # Ajoute _ au debut de chaque texte
normalization_rule_name='nfkc_cf' # Normalisation Unicode
)
sp = spm.SentencePieceProcessor()
sp.load('my_tokenizer.model')
tokens = sp.encode('La cybersecurite IA', out_type=str)
# ['_La', '_cyber', 'securite', '_IA']Comparaison SentencePiece vs Tiktoken
| Aspect | SentencePiece | Tiktoken |
|---|---|---|
| Vitesse | Bonne | Tres rapide (Rust) |
| Langues CJK | Excellente | Bonne |
| Vocabulaire | 32K standard | 100K-200K |
| Modeles | LLaMA 2, Mistral, T5 | GPT-4, LLaMA 3 |
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. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h