La mayoría de los tokenizers modernos usan Byte Pair Encoding (BPE) o una variante llamada SentencePiece. BPE funciona comenzando con bytes o caracteres individuales y fusionando repetidamente el par adyacente más frecuente en un nuevo token. Después de miles de fusiones, palabras comunes como "the" se convierten en tokens individuales, mientras que las palabras raras se dividen en fragmentos de subpalabras.
El tamaño del vocabulario de un tokenizer es un verdadero trade-off de ingeniería. Vocabularios más grandes (100K+ tokens) comprimen el texto de forma más eficiente — las palabras y frases comunes obtienen tokens dedicados, por lo que se consume menos contexto. Pero vocabularios más grandes también significan una tabla de embeddings más grande en las capas de entrada y salida del modelo.
Los tokenizers se entrenan con un corpus, y la distribución de idiomas de ese corpus determina la eficiencia. El texto en inglés típicamente se tokeniza a aproximadamente 1 token por palabra. Pero idiomas como chino, japonés, coreano, árabe e hindi pueden requerir 2–4 veces más tokens para un significado equivalente.
Las peculiaridades de la tokenización explican varios comportamientos de los LLMs que la gente encuentra desconcertantes. Los modelos tienen dificultades con tareas a nivel de caracteres (contar letras en "strawberry") porque ven tokens, no caracteres. Manejan algunos nombres de variables mejor que otros porque los nombres comunes son tokens individuales mientras que los inusuales se fragmentan.