Construindo um vocabulário: o algoritmo do tokenizer (geralmente BPE) começa com bytes ou caracteres individuais e iterativamente mescla os pares mais frequentes. Após 32K–128K mesclagens, você tem um vocabulário onde palavras comuns são tokens únicos ("the", "and", "function") e palavras raras são divididas em pedaços de subpalavras ("un" + "common", "pre" + "process" + "ing"). Tokens especiais como <BOS> (início de sequência), <EOS> (fim) e <PAD> (preenchimento) são adicionados explicitamente.
Vocabulários maiores comprimem texto melhor (menos tokens por frase = mais barato, cabe mais no contexto) mas aumentam o tamanho da tabela de embeddings do modelo. Um vocabulário de 128K com embeddings de 4096 dimensões adiciona ~500M de parâmetros apenas para as tabelas de tokens. Para um modelo de 7B, isso é 7% do total de parâmetros fazendo nada além de mapear tokens para vetores. Para um modelo de 1B, seria 50%. É por isso que modelos menores tendem a usar vocabulários menores.
A cobertura linguística de um vocabulário depende de seu corpus de treinamento. O tokenizer inicial do Llama foi treinado predominantemente em inglês e representava caracteres chineses como 3–4 tokens cada, tornando a inferência em chinês 3–4x mais cara que em inglês. O tokenizer do Llama 3 foi treinado em dados multilíngues mais balanceados, melhorando dramaticamente a eficiência para outros idiomas. É um problema solucionável, mas requer esforço deliberado — o padrão é dominância do inglês.