Recursos/Entrenamiento de modelos/Tokens y contexto

Concepto

Tokens

Los fragmentos de texto que un modelo realmente lee y escribe — cómo se crean, por qué los recuentos difieren entre modelos y por qué cada límite y precio en el entrenamiento se mide en ellos.

Capítulo 23 min de lectura5 referencias

Qué es un token

Un modelo de lenguaje nunca ve letras ni palabras. Antes de que le llegue cualquier texto, un tokenizador corta el texto en fragmentos extraídos de un vocabulario fijo y reemplaza cada fragmento con su número en dicho vocabulario. El modelo lee una secuencia de esos números y escribe su respuesta también en forma de números, que el tokenizador vuelve a convertir en texto.

“How do I reset my password?”
How2437␣do466␣I314␣reset13259␣my616␣password9206?30
27 caracteres6 palabras≈ 7 tokens
Una oración, siete tokens. Un espacio generalmente acompaña a la palabra que le sigue, por lo que « do» y «do» son tokens diferentes.

Los vocabularios actuales contienen desde decenas de miles hasta unos pocos cientos de miles de entradas. Las palabras frecuentes obtienen su propia entrada, generalmente con el espacio anterior adjunto. Las palabras menos frecuentes se forman a partir de fragmentos más pequeños: un nombre de producto inusual podría convertirse en cuatro o cinco tokens.

Cómo se construyen los tokenizadores: codificación de pares de bytes

La mayoría de los tokenizadores actuales utilizan una forma de codificación de pares de bytes (BPE), adaptada para modelos de lenguaje por Sennrich, Haddow y Birch. El vocabulario se aprende de una gran muestra de texto antes de que se entrene el propio modelo:

  1. Comience desde las unidades más pequeñas: caracteres individuales o los 256 bytes posibles.
  2. Cuente cada par de unidades vecinas en la muestra y encuentre el par más frecuente.
  3. Fusione ese par en una nueva unidad y añádala al vocabulario.
  4. Repita hasta que el vocabulario alcance su tamaño objetivo.

El vocabulario termina gastando sus entradas en lo que sea que fuera común en esa muestra. Las versiones a nivel de bytes parten de bytes en lugar de caracteres, por lo que cualquier entrada — cualquier idioma, emoji o símbolo suelto — aún puede codificarse, solo que de manera menos eficiente cuando es inusual.

Cómo BPE aprende “ing”
  1. La muestra contiene “walking”, “talking” y “making” muchas veces. Al principio, cada una se divide en caracteres: w a l k i n g.
  2. i seguida de n es el par más frecuente, por lo que se convierte en una unidad: w a l k in g.
  3. Ahora in seguida de g es el par más frecuente: w a l k ing.
  4. Después de decenas de miles de fusiones, es probable que una palabra frecuente como “walking” sea un solo token, mientras que una rara como “unwalkable” todavía se construya a partir de varias piezas.

Por qué el mismo texto da recuentos diferentes

Tipo de textoComportamiento típico
Inglés cotidianoAproximadamente 4 caracteres, o ¾ de palabra, por token
Números, identificadores y fechasDivididos en fragmentos cortos: 2024-03-17 puede ocupar cinco o más tokens
Código y JSONLos corchetes, las comillas y la sangría cuestan tokens
Otros idiomasA menudo más tokens para el mismo significado; un estudio de 2023 midió diferencias de hasta 15 veces para el mismo texto traducido
Nombres raros y jergaDivididos en varios fragmentos de subpalabras

Cada familia de modelos entrena su propio tokenizador, por lo que un documento que tiene 1000 tokens para un modelo podría tener 1150 para otro. Cualquier recuento realizado con un tokenizador diferente, o estimado a partir del número de caracteres, es una aproximación.

Por qué es importante para el entrenamiento

  • Coste. El entrenamiento se factura por token procesado, y el uso por token de entrada y de salida.
  • Límites. La ventana de contexto y el límite de entrenamiento por ejemplo se cuentan en tokens, no en mensajes ni en palabras.
  • Debilidades inusuales. Un modelo percibe "strawberry" como unos pocos tokens, no como diez letras, razón por la cual contar letras o invertir una palabra le resulta sorprendentemente difícil.

Errores comunes

  • Tratar un token como una palabra al estimar costes o límites.
  • Asumir que un recuento realizado para un modelo se aplica a otro.
  • Presupuestar datos que no están en inglés utilizando proporciones de caracteres por token del inglés.
  • Olvidar que el formato — JSON, marcado, identificadores largos — también consume tokens.

Referencias y lecturas adicionales

Las fuentes externas se abren en una pestaña nueva.

  1. 01Neural Machine Translation of Rare Words with Subword UnitsSennrich, Haddow & Birch, 2016 · arXiv · arxiv.orgEl artículo que introdujo la tokenización BPE en el PLN.
  2. 02Byte-Pair Encoding tokenizationHugging Face LLM Course · huggingface.coEl entrenamiento BPE explicado paso a paso, con código.
  3. 03Language Model Tokenizers Introduce Unfairness Between LanguagesPetrov et al., 2023 · arXiv · arxiv.orgCuánto más cuesta el mismo contenido en algunos idiomas.
  4. 04openai/tiktokenOpenAI · GitHub · github.comUn tokenizador BPE muy utilizado que puede ejecutar para contar los tokens usted mismo.
  5. 05Understand and count tokensGemini API docs · ai.google.devLa explicación de otro proveedor sobre los tokens y cómo contarlos.

Convierta semanas de trabajo experto en minutos

Vea cómo Scalata se adapta a su equipo, a sus datos y a sus Controles.

Contactar con ventas