Token
Un token es la unidad de entrada que procesa un modelo, como un subsegmento de palabra o un fragmento de imagen. Descubre cómo los tokenizadores dividen el texto, qué son los tokens visuales y cuánto cuestan los tokens.
Un token es la unidad básica de entrada y salida que procesa un modelo de IA: puede ser una palabra, parte de una palabra, un carácter o un byte en texto, o un parche de píxeles en una imagen. Antes de que un transformador pueda leer una frase o una imagen, un tokenizador divide la entrada en tokens y asigna a cada uno un identificador entero, y el modelo consulta un vector de incrustación para cada identificador. La cantidad de tokens determina tanto lo que puede procesar un modelo como su coste: una ventana de contexto se mide en tokens, los modelos de lenguaje de gran tamaño (LLMs) generan texto token a token y las API comerciales cobran por cada token de entrada y de salida.
Token frente a tokenización y términos relacionados#
- Tokenización: El proceso que divide la entrada sin procesar en tokens. Un token es una unidad de su resultado.
- Vocabulario e identificadores de token: El vocabulario de un tokenizador es el conjunto fijo de tokens que conoce, cada uno con un identificador entero. BERT utiliza 30 522 tokens, GPT-2 50 257, Llama 3 128 256 y Gemma 3 unos 262 000.
- Tokens especiales: Marcadores de la estructura de una secuencia, como los tokens de inicio de texto, fin de texto y relleno, o el token
[CLS], cuya incrustación final utiliza BERT para la clasificación. - Incrustaciones: Los vectores aprendidos que consulta la primera capa del modelo para cada identificador de token y que transmiten el significado del token a la red.
Tokens de texto#
Un vocabulario de palabras completas no puede incluir todos los nombres, errores tipográficos y términos nuevos, y los caracteres individuales generan secuencias muy largas. Por eso, los tokenizadores modernos utilizan subpalabras: las palabras frecuentes se convierten en tokens únicos y las poco frecuentes se dividen en fragmentos reutilizables. La codificación por pares de bytes (BPE), adaptada a la traducción automática neuronal por Sennrich y sus colaboradores en 2016, parte de caracteres individuales y combina repetidamente el par adyacente más frecuente hasta alcanzar el tamaño de vocabulario previsto. Los modelos GPT aplican BPE a bytes, de modo que se puede codificar cualquier texto, incluido el código y los emojis; WordPiece (que utiliza BERT) y el modelo Unigram de SentencePiece son esquemas de subpalabras relacionados. El tokenizador BPE de CLIP, que se carga aquí desde el Hub de Hugging Face, muestra cómo se dividen las palabras:
from transformers import AutoTokenizer
# Load CLIP's byte-pair-encoding (BPE) tokenizer from the Hugging Face Hub
tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
for text in ["bus", "double-decker bus", "unhappiness", "Ultralytics"]:
tokens = tokenizer.tokenize(text)
print(f"{text!r} -> {tokens} -> {tokenizer.convert_tokens_to_ids(tokens)}")«bus» es un único token, el ID 2840; «unhappiness» se divide en un y happiness; y la palabra poco frecuente «Ultralytics» se divide en tres fragmentos: ultr, aly y tics. El sufijo </w> marca el final de una palabra en el vocabulario de CLIP, que contiene 49 408 tokens, y el codificador de texto de CLIP lee un máximo de 77 tokens por prompt.
Tokens visuales#
El transformador de visión (ViT), presentado en el artículo An Image Is Worth 16x16 Words, divide una imagen en parches de tamaño fijo —de 16 × 16 píxeles en ViT-B/16— y proyecta cada parche en una incrustación, de modo que una imagen de 224 × 224 se convierte en 196 tokens. Las incrustaciones posicionales registran el origen de cada parche y un token de clase adicional recopila información para la clasificación. La proyección suele implementarse como una convolución cuyo paso es igual al tamaño del kernel:
import torch
# ViT-B/16 patch embedding: a 16x16 convolution with stride 16 turns each patch into one 768-dim token
patch_embed = torch.nn.Conv2d(3, 768, kernel_size=16, stride=16)
for size in (224, 448):
image = torch.rand(1, 3, size, size)
tokens = patch_embed(image).flatten(2).transpose(1, 2) # (batch, tokens, dims)
print(f"{size}x{size} image -> {tuple(tokens.shape)}")Una imagen de 224 × 224 produce 196 tokens de 768 valores, y al duplicar el lado hasta 448 píxeles se obtienen 784, cuatro veces más. La autoatención compara cada token con todos los demás, así que cuadruplicar los tokens multiplica por unas 16 veces el coste de atención; por eso, los modelos de alta resolución utilizan atención por ventanas, como en el transformador Swin, o combinan tokens similares mediante la fusión de tokens.
Los modelos de visión y lenguaje pasan los tokens visuales de un codificador de imágenes a un LLM junto con tokens de texto, de modo que un mismo transformer presta atención a ambos y redacta su respuesta un token de texto cada vez:
Por qué importan los recuentos de tokens#
- Límites de contexto: El prompt, los documentos o imágenes recuperados y la respuesta generada deben caber todos en la ventana de contexto del modelo.
- Coste y latencia: Las API cobran por separado los tokens de entrada y de salida, y el tiempo de generación aumenta con la cantidad de tokens de salida, ya que cada uno requiere un paso de decodificación que lee la caché KV del modelo.
- Idiomas y formatos: Los tokenizadores entrenados principalmente con inglés dividen otros idiomas, el código y los números largos en más tokens por palabra, así que el mismo contenido cuesta más y llena antes la ventana de contexto.
- Tareas a nivel de carácter: El modelo ve subpalabras en forma de tokens, así que le resultan más difíciles de lo que parecen las tareas que dependen de letras individuales, como contar las letras de una palabra o invertir su orden.
Aplicaciones en el mundo real#
- Generación de texto: Un LLM asigna una probabilidad a cada token de su vocabulario, elige uno mediante muestreo, lo añade a la secuencia y repite el proceso; los métodos de muestreo, como el muestreo de núcleo, seleccionan entre los tokens más probables.
- Generación de imágenes: Los modelos de imágenes autorregresivos predicen tokens visuales discretos a partir de un libro de códigos aprendido mediante cuantización vectorial, igual que un LLM predice palabras.
- Detección de vocabulario abierto: YOLOE-26, la versión basada en YOLO26 de YOLOE, de la Universidad Tsinghua, incluida en el paquete Ultralytics, encuentra objetos a partir de nombres de clase escritos. Su método
set_classes()tokeniza cada nombre con el tokenizador BPE de CLIP; el codificador de texto MobileCLIP2 de Apple convierte los tokens en una incrustación y el modelo compara esas incrustaciones con las regiones de la imagen. Así, puede detectar únicamente a partir de las palabras un «autobús de dos pisos», una clase que no está en el conjunto de datos COCO.










