BPE, SentencePiece en tiktoken: hoe tokenizers verschillen
Automatische vertaling
Dit artikel is automatisch vertaald vanuit de oorspronkelijke Engelse versie.
BPE is een algoritme voor tokenization. SentencePiece en tiktoken zijn implementaties met verschillende conventies voor training, voorbewerking en vocabulaire. SentencePiece ondersteunt BPE- en unigrammodellen; tiktoken gebruikt BPE-encoderingen op byteniveau. Hun token-ID’s zijn niet onderling uitwisselbaar.
Ingenieurs die het contextgebruik schatten of tekst verwerken, moeten de tokenizer en prompttemplate gebruiken die bij het exacte checkpoint of API-model horen.
Onderscheid algoritme en implementatie
Byte Pair Encoding leert aangrenzende symbolen herhaaldelijk samen te voegen. BPE op tekenniveau begint met tekens; varianten op byteniveau beginnen met bytes. De geleerde samenvoegingen en het vocabulaire bepalen hoe een tekenreeks wordt opgesplitst. Een bekend woord kan in het ene vocabulaire één token zijn en in een ander meerdere tokens.
| Naam | Wat die specificeert | Wat nog van het model afhangt |
|---|---|---|
| BPE | Een algoritme op basis van samenvoegingen | Beginsymbolen, voorbewerking, samenvoegingen, vocabulaire |
| SentencePiece | Een tokenizer-implementatie voor onbewerkte tekst met ondersteuning voor BPE en unigram | Modeltype, normalisatie, vocabulaire, terugval op bytes |
| tiktoken | Een implementatie van BPE-encoderingen op byteniveau | Encodering, vocabulaire, regels voor speciale tokens |
SentencePiece verwerkt onbewerkte Unicode-tekst en geeft witruimte weer met de markering ▁. Terugval op bytes is optioneel. tiktoken biedt benoemde encoderingen en verwerking op byteniveau.
Ook binnen één modelmerk kunnen tokenizerfamilies veranderen. De documentatie van Mistral onderscheidt eerdere SentencePiece-tokenizers van Tekken, dat BPE in de stijl van tiktoken gebruikt. Laad de tokenizer van het checkpoint in plaats van die uit het merk af te leiden.
Meet representatieve tekst
Leg voor elke ondersteunde taal en elk type inhoud het aantal tokens vast nadat je de daadwerkelijke prompttemplate hebt toegepast. Neem rolmarkeringen, speciale tokens, tools en eventuele extra geserialiseerde instructies mee. Alleen de zichtbare gebruikerstekst tellen kan de grootte van het verzoek onderschatten.
Definieer voor een vergelijking van tokenizers op een vaste steekproef een eenheid, zoals woorden of tekens, en deel het aantal tokens door het aantal van die eenheden. Houd de normalisatie en de steekproef gelijk. Met witruimte afgebakende ‘woorden’ zijn niet voor elke taal een vergelijkbare taalkundige eenheid. Vermeld daarom de meetregel.
De grootte van het vocabulaire alleen toont geen tokenefficiëntie aan tussen verschillende trainingscorpora. Een telling met de tokenizer van een ander model bewijst evenmin dat je verzoek binnen de contextlimiet van het geselecteerde model past.
Engineeringgids: tokenization geeft voorbeelden van vocabulaires en legt tokenizerfertiliteit uit.