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.

SentencePiece

ia

Dé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

AspectSentencePieceTiktoken
VitesseBonneTres rapide (Rust)
Langues CJKExcellenteBonne
Vocabulaire32K standard100K-200K
ModelesLLaMA 2, Mistral, T5GPT-4, LLaMA 3

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis