¿Qué es la Tokenización en un LLM?

Un modelo de lenguaje no lee palabras tal como las conocemos. Lee números.
Cuando escribes “Hola qué tal” en ChatGPT, el modelo no ve esas palabras. Ve algo como 39556 593 2424. Esos números son tokens, y todo lo que hace el modelo funciona con esos números. Así es como funciona por dentro.
¿Qué es un Token?
Sección titulada «¿Qué es un Token?»Un token es un fragmento de texto convertido en un número. A veces un token es una palabra entera. A veces es media palabra. A veces es un solo carácter. Depende del tokenizador que use el modelo.
Por ejemplo, con el tokenizador de GPT-4:
- La palabra
helloes un solo token. - La palabra
indescribablese parte en varios tokens:in,describ,able. - Un espacio antes de una palabra muchas veces forma parte del token, no es un token aparte.
El modelo no decide cómo partir las palabras. Eso lo hace un programa aparte llamado tokenizador, que se entrena antes que el propio modelo. Son dos componentes distintos.
Cómo Funciona el Tokenizador
Sección titulada «Cómo Funciona el Tokenizador»El método más usado se llama BPE (Byte Pair Encoding). Funciona así:
- Se empieza con todos los caracteres individuales como tokens básicos.
- Se busca qué par de caracteres aparece más veces juntos en el texto de entrenamiento.
- Ese par se fusiona en un nuevo token.
- Se repite el proceso miles de veces hasta tener el vocabulario completo.
Es un algoritmo de compresión estadística. Busca patrones frecuentes y los agrupa.
Tamaños de Vocabulario
Sección titulada «Tamaños de Vocabulario»Estos datos vienen directamente del repositorio oficial de OpenAI en GitHub, del proyecto tiktoken:
- GPT-2 usaba un vocabulario de aproximadamente 50.000 tokens.
- GPT-4 usa el tokenizador
cl100k_basecon aproximadamente 100.000 tokens. - GPT-4o usa el tokenizador
o200k_basecon aproximadamente 200.000 tokens.
Duplicar el vocabulario tiene un propósito claro: con más tokens en el vocabulario, el mismo texto se representa con menos tokens. Esto permite que el modelo procese más información dentro de su ventana de contexto.
Por Qué Esto Importa
Sección titulada «Por Qué Esto Importa»La tokenización es la raíz de muchos comportamientos de los LLM que la gente atribuye al modelo cuando en realidad son limitaciones del tokenizador:
Los LLM rinden peor en idiomas que no sean inglés. El motivo es que el tokenizador se entrenó principalmente con texto en inglés. Una frase en coreano o en árabe necesita muchos más tokens que la misma frase en inglés. Eso consume más espacio en la ventana de contexto para decir lo mismo.
Los LLM tienen problemas con aritmética. El número 380297 a veces es un solo token y a veces se parte en 380 y 297. El modelo tiene que aprender de los datos de entrenamiento que esos fragmentos representan el mismo concepto. A veces lo consigue, a veces no.
Los LLM no pueden deletrear bien. Si la palabra “perro” es un solo token, el modelo no tiene acceso directo a las letras individuales p, e, r, r, o. Solo ve el token entero. Por eso si le pides que cuente las letras de una palabra, a menudo falla.
Pruébalo Tú Mismo
Sección titulada «Pruébalo Tú Mismo»Instala tiktoken con pip install tiktoken y ejecuta esto en Python:
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")tokens = enc.encode("Hola qué tal")print(tokens)print(len(tokens))Verás exactamente los números que el modelo recibe.
También puedes usar la herramienta web oficial de OpenAI para ver cómo se parte cualquier texto en tokens, coloreado por fragmentos.
Experimenta con Tokenización
Sección titulada «Experimenta con Tokenización»Prueba cómo se tokeniza cualquier texto con nuestro simulador interactivo, donde puedes ver el proceso completo de generación paso a paso.
Qué pasa en la práctica
Sección titulada «Qué pasa en la práctica»- Prompts largos consumen más tokens y reducen el espacio disponible para la respuesta.
- Textos en español usan más tokens que en inglés para decir lo mismo.
- Palabras poco comunes se parten en fragmentos y el modelo las procesa peor.
Error común
Sección titulada «Error común»Creer que el modelo ve palabras completas. No las ve. Ve fragmentos numéricos que a veces coinciden con palabras y a veces no.