Construction d'un vocabulaire : l'algorithme du tokenizer (généralement BPE) commence avec des octets ou caractères individuels et fusionne itérativement les paires les plus fréquentes. Après 32K–128K fusions, on obtient un vocabulaire où les mots courants sont des tokens uniques (« the », « and », « function ») et les mots rares sont découpés en sous-mots (« un » + « common », « pre » + « process » + « ing »). Des tokens spéciaux comme <BOS> (début de séquence), <EOS> (fin) et <PAD> (remplissage) sont ajoutés explicitement.
Un vocabulaire plus grand compresse mieux le texte (moins de tokens par phrase = moins cher, plus de contenu dans le contexte) mais augmente la taille de la table d'embeddings du modèle. Un vocabulaire de 128K avec des embeddings de 4096 dimensions ajoute environ 500M de paramètres juste pour les tables de tokens. Pour un modèle de 7B, c'est 7 % du total des paramètres qui ne font rien d'autre que mapper des tokens vers des vecteurs. Pour un modèle de 1B, ce serait 50 %. C'est pourquoi les modèles plus petits utilisent des vocabulaires plus petits.
La couverture linguistique d'un vocabulaire dépend de son corpus d'entraînement. Le tokenizer initial de Llama était entraîné principalement sur l'anglais et représentait les caractères chinois avec 3–4 tokens chacun, rendant l'inférence en chinois 3–4 fois plus chère qu'en anglais. Le tokenizer de Llama 3 a été entraîné sur des données multilingues plus équilibrées, améliorant considérablement l'efficacité non-anglaise. C'est un problème qu'on sait résoudre, mais ça demande un effort délibéré — par défaut, la dominance de l'anglais l'emporte.