Los modelos de lenguaje grandes (LLM) suelen recurrir a codificaciones posicionales para que el mecanismo de atención distinga la posición de cada token —o, más precisamente, de cada entrada del KV caché—. Las dos estrategias dominantes son RoPE, que rota por parejas las dimensiones de los vectores de consulta y clave a frecuencias distintas para codificar distancias relativas, y ALiBi, que aplica un sesgo lineal a las puntuaciones de atención proporcional a la distancia entre posiciones.
Este artículo explica cómo reproducir el comportamiento de ALiBi utilizando exclusivamente RoPE. La idea consiste en añadir a Q y K un par de dimensiones extra con pesos y sesgos nulos, configuradas como q_fixed = (−N, 0) y k_fixed = (0, 1). Todas las frecuencias RoPE originales se anulan (rotación identidad) y solo rota el nuevo par, con una frecuencia θ muy pequeña. Para posiciones i y j separadas por d, el producto punto rotado arroja −N·sin(θ·d), que en el límite de ángulo pequeño (θ·d ≪ 1) se aproxima a −(N·θ)/√head_dim · d. Ajustando N = m·√head_dim / θ, se recupera exactamente el sesgo −m·d propio de ALiBi.
La clave práctica es que θ debe ser lo bastante reducida para mantener el régimen de ángulo pequeño en toda la ventana de contexto, lo que obliga a N a ser enorme: para BLOOM (head_dim = 64, m ≈ 0,707), una fase máxima de 0,1 radianes sobre 65 000 tokens exige θ ≈ 1,5 × 10⁻⁶ y N ≈ 3,7 × 10⁶. Cuando el modelo ya dispone de una tabla de frecuencias RoPE prefijada (θ_r = base^(−2r/rope_dim)), la emulación completa queda limitada por la base, que determina la frecuencia del par más lento y, por tanto, su fase acumulada sobre la ventana (≈ L / base). El autor valida la construcción con BLOOM-560M, cuya atención nativa es ALiBi, y obtiene resultados prácticamente idénticos al modelo de referencia.
