La atención es una bolsa de palabras hasta que se le indica lo contrario
Un bloque transformer calcula la atención como una operación sobre un conjunto: cada token mira a todos los demás y puntúa qué tan relevante es cada uno, solo a partir de los vectores de los dos tokens. No existe una noción integrada de “el token que está tres posiciones atrás”. Si se revuelve la entrada, las cuentas de la atención en bruto dan la misma respuesta: la red es invariante a las permutaciones. Eso es fatal para el lenguaje, donde el orden es significado. Si el paso de atención en sí no le queda claro, empiece por la explicación sobre autoatención.
Por eso todo transformer agrega una señal posicional (información sobre dónde está cada token) antes o durante la atención. Las tres familias que siguen difieren en qué codifican (la posición absoluta o la distancia relativa entre dos tokens) y en dónde la inyectan (en el vector del token o en la propia puntuación de atención). Esa segunda diferencia es la que determina con qué soltura maneja un modelo secuencias más largas que las de su entrenamiento.
1. Absoluta: marcar cada posición con un número
El transformer original de 2017 sumaba a cada token un vector fijo que depende solo de su posición: la posición 0 recibe un patrón, la posición 1 otro, y así sucesivamente. La versión clásica usa sinusoides de distintas frecuencias, de modo que cada posición recibe una huella única y las posiciones cercanas reciben huellas parecidas. Una alternativa común es una tabla de embeddings de posición aprendida: un vector entrenable por posición, hasta cierta longitud máxima.
Ambas funcionan, y ambas comparten una debilidad. El modelo aprende cómo “se siente” la posición 512 porque la ve durante el entrenamiento. Si se le pide la posición 5,000, una tabla aprendida simplemente no tiene una fila para ella; las sinusoides técnicamente extrapolan, pero el modelo nunca practicó atender a través de esa distancia, así que la calidad se degrada rápido. La codificación absoluta ata la ventana de contexto útil a las longitudes con las que el modelo de verdad se entrenó, y por eso los primeros modelos tenían límites rígidos de 512 o 2,048 tokens.
2. RoPE: rotar los vectores para que la atención vea la distancia
La codificación posicional rotatoria (RoPE, Rotary Position Embedding), presentada por RoFormer y usada hoy por Llama, Mistral, Qwen y la mayoría de los modelos abiertos, toma un camino más ingenioso. En lugar de sumar un vector de posición, rota cada vector de consulta y de clave en un ángulo proporcional a su posición. Cuando la atención calcula después el producto punto de una consulta en la posición m y una clave en la posición n, las rotaciones se combinan de modo que la puntuación depende de m − n, la distancia relativa entre ellas, y no de las dos posiciones absolutas.
Eso es muy importante. A un modelo que razona en términos relativos no le importa si un par de tokens está en las posiciones 10 y 13 o en la 4,010 y la 4,013: la distancia es 3 en ambos casos. Por eso RoPE generaliza a secuencias más largas con mucha más soltura que la codificación absoluta, y se puede estirar todavía más escalando las frecuencias de rotación (los trucos “NTK” y de interpolación lineal de posiciones que están detrás de la mayoría de las extensiones de contexto a 128K tokens). Cuando un modelo salta de 8K a 128K de contexto con un ajuste fino breve, casi siempre es RoPE reescalada.
3. ALiBi: simplemente penalizar la distancia en la puntuación
ALiBi (Attention with Linear Biases, atención con sesgos lineales) es el más minimalista de los tres. No agrega ningún vector de posición. En cambio, justo antes del softmax de la atención, resta de cada puntuación una penalización que crece linealmente con la distancia entre los dos tokens: los tokens lejanos pierden peso discretamente y los recientes conservan su fuerza. Cada cabeza de atención recibe una pendiente de penalización distinta, así que algunas cabezas miran muy atrás y otras se quedan en lo local.
Como el sesgo es una función simple de la distancia, sin un límite de longitud aprendido, los modelos con ALiBi extrapolan a secuencias mucho más largas que las del entrenamiento con poco esfuerzo adicional; ese fue el resultado principal. La contrapartida es el sesgo de recencia integrado: el mecanismo descuenta de forma inherente los tokens lejanos, lo que puede perjudicar las tareas que necesitan sacar un dato del principio mismo de un documento largo. La codificación relativa de RoPE se mantiene más neutral respecto a la distancia, y esa es una de las razones por las que ganó la preferencia entre los modelos de frontera.
Por qué el esquema es el techo del contexto
Al poner los tres lado a lado, el patrón es claro. La codificación absoluta fija una longitud máxima y se degrada bruscamente al pasarla. RoPE codifica la distancia relativa y se puede reescalar para extender el contexto con un ajuste fino ligero. ALiBi trae la extrapolación integrada, pero la paga con un sesgo de recencia. Ninguno de ellos es el problema de que “la atención es cara”: ese es un costo de cómputo distinto, que se atiende con la caché KV y con kernels de atención eficiente. La codificación posicional es el techo de calidad: decide si el modelo todavía puede darle sentido a un token cuando está lejos de casa.
Así que, cuando la ficha de un modelo anuncia una ventana de contexto, detrás de ese único número se esconden dos límites distintos. El límite de memoria es cuántos tokens pueden retener la caché KV y la plataforma de servicio. El límite de comprensión, el que decide si el modelo realmente usa lo que hay en esa ventana, lo fija el esquema posicional y hasta dónde se entrenó o interpoló para llegar. Una ventana de 1M de tokens en el papel significa poco si la codificación de posición deja de generalizar en 100K. Esa brecha es exactamente lo que detecta un benchmark medido y lo que esconde una hoja de especificaciones.