Skip to content

English · Español

04 — Cara a cara: sinusoidal vs RoPE en §A13 (el experimento a ejecutar)

🇪🇸 Diseñamos (sin ejecutar) el experimento para comparar sinusoidal vs RoPE en §A13. La hipótesis nula: a longitud de secuencia ≤ 5 (que es lo que tiene §A13), los dos rinden igual. Hipótesis alternativa: RoPE generaliza mejor a contextos un poco más largos (longitud 10–20 sintetizados). Aquí hacemos: el setup, las métricas, las predicciones, y el rationale de por qué esperar lo que se reporta en LLaMA.

Anclas: LYNX_CORTEX.md §4 / PHASE 16; teoría §01 sinusoidal; teoría §03 RoPE; lab §03 comparación de extrapolación.


Por qué existe este experimento

Su et al. 2021 ("RoFormer", presentando RoPE) y Touvron et al. 2023 (LLaMA-1) reportan que RoPE supera consistentemente a sinusoidal en contexto largo, y la iguala en contexto corto. El corpus §A13 tiene secuencias cortas (longitud media ~5 tokens), así que no esperamos una gran victoria — pero ejecutamos el experimento para:

  1. Confirmar que la paridad de contexto corto se mantiene en nuestro régimen microscópico.
  2. Establecer una baseline para cualquier escalado futuro (mini-GPT de Fase 17, portal de Fase 30).
  3. Practicar la higiene experimental que necesitaremos para cualquier comparación de arquitecturas.

Setup

Backbone compartido

mini-GPT de la Fase 17, congelado excepto por la codificación posicional:

class MiniGPT(Module):
    def __init__(self, vocab_size: int = 512, d_model: int = 64,
                 n_layers: int = 2, n_heads: int = 4, max_len: int = 32,
                 pe_kind: Literal["sinusoidal", "rope"] = "sinusoidal"):
        ...

Conteo de parámetros: ~50K. La Fase 17 §03 lo calcula.

Dos variantes

Variante PE aplicada en Fórmula
sinusoidal embeddings de entrada x_t += PE(t) donde PE(t, 2i) = sin(t/10000^(2i/d))
RoPE dentro de attention en Q,K Q_t' = R_θ(t) · Q_t donde R_θ(t) es rotación por par

Ambas tienen cero parámetros de PE entrenables — una elección deliberada para la comparación (la PE aprendida confundiría).

Particiones del corpus

  • Entrenamiento: corpus §A13, 240 ejemplos, longitud máxima 5.
  • Val (en distribución): §A13 reservada, longitud máxima 5.
  • Val (fuera de distribución por longitud): concatenaciones sintéticas de frases §A13, longitudes 10 / 15 / 20. Curadas a mano para que las conjugaciones sigan siendo §A13-válidas.

El conjunto de val OOD por longitud es el crítico. Pone a prueba la extrapolación — la fortaleza declarada de RoPE.


Predicciones (escríbelas ANTES de ejecutar)

Métrica                       | sinusoidal | RoPE      | Δ
------------------------------+------------+-----------+------
Train loss (final)            | 0.05       | 0.05      | ~0
Val loss (in-dist, T≤5)       | 0.10       | 0.10      | ~0
Val loss (OOD, T=10)          | 0.35       | 0.20      | -0.15
Val loss (OOD, T=15)          | 0.80       | 0.30      | -0.50
Val loss (OOD, T=20)          | 1.50       | 0.45      | -1.05
Conjugation accuracy at T=20  | 65%        | 89%       | +24pp

El gran hueco en T=20 es el titular.

Por qué esperamos esto

  1. La PE sinusoidal se suma a los embeddings de entrada. En T > max_train_len, los valores de PE están fuera del rango que el modelo ha visto. El modelo no tiene prior sobre esas posiciones.
  2. RoPE es rotación multiplicativa en el espacio QK. Su matemática es relativa (el producto escalar entre R_θ(t) q y R_θ(s) k depende solo de t - s, no de t o s por separado). Incluso en T = 20 las distancias relativas siguen estando en la distribución de entrenamiento (la distancia relativa máxima fue 5, la máxima aquí es 20 — mayor, pero sigue siendo una rotación limpia).

Este es el argumento formal de Su et al. 2021 §3.4 — "RoPE codifica posición relativa", mientras que sinusoidal codifica posición absoluta.


Qué aspecto tienen las curvas

ASCII dibujado a mano (gráfico real en lab 03 de Fase 16):

val loss
  ^
1.5+        sinusoidal o
   |              o
1.0+         o
   |       o
0.5+    o
   |  o
   |o     RoPE: ━━━━━ (plano cerca de 0.3 en todo T)
   +────────────────────────> sequence length T
   0     5      10     15     20

Las dos curvas se solapan perfectamente en T ≤ 5 (distribución de entrenamiento), luego divergen.


Métricas

  1. Val cross-entropy loss en cada T ∈ {5, 10, 15, 20}.
  2. Conjugation accuracy — ¿produce el modelo el tiempo verbal correcto? La Fase 20 (eval harness) la define formalmente.
  3. Visualización del patrón de attention — muestrea unas frases en T = 20, plotea la matriz de attention por capa. La matriz de RoPE debería verse como "banda diagonal" (estructura de posición relativa). La matriz de sinusoidal en T = 20 debería verse errática (el modelo no tiene idea de qué hacer).
  4. Coste de cómputo — RoPE añade un coste por capa de attention; cuantifícalo en FLOPs.

Lo que esto no prueba

  • RoPE es estrictamente mejor en todos los regímenes. La Fase 36 (arquitecturas frontera) cubre ALiBi (una alternativa sin PE) y muestra que RoPE gana en algunas tareas y pierde en otras.
  • Los números de §A13 se transfieren a modelos grandes. No directamente; los modelos grandes a menudo enfrentan desafíos de extrapolación de longitud de formas completamente distintas (Press et al. 2022, "Train Short, Test Long").

Pero para la pregunta específica "¿debería mini-GPT usar RoPE o sinusoidal?", el experimento la contestará: RoPE es una elección de bajo coste y beneficio medio sin desventaja observada a escala §A13.


Cuándo no extrapolar de aquí

  • Una tarea sin variación de longitud en inferencia (por ejemplo, siempre exactamente 5 tokens) no debería importarle qué PE — elige la que sea más simple.
  • Una tarea con secuencias ≥ 4× la longitud de entrenamiento — ninguna PE te salvará, necesitas ALiBi o YaRN (Fase 36).

Citas

  • Su, J., Lu, Y., Pan, S., Murtadha, A., Wen, B., Liu, Y. 2021. "RoFormer: Enhanced Transformer with Rotary Position Embedding." arXiv:2104.09864. §3 deriva la propiedad de posición relativa de RoPE.
  • Press, O., Smith, N., Lewis, M. 2022. "Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation" (ALiBi). arXiv:2108.12409.
  • Touvron, H. et al. 2023. "LLaMA." arXiv:2302.13971. §2 confirma que RoPE es el valor por defecto.

Ejercicio de lectura + diseño (no requiere ejecución)

  1. Implementa RoPE en src/minimodel/nn/rope.py (lab 02 de Fase 16).
  2. Conecta pe_kind="rope" al constructor de mini-GPT (Fase 17 — pero blueprint ahora en esta fase).
  3. Escribe la especificación del experimento siguiendo la plantilla de esta página (usa experiments/16-pe-compare/spec.md).
  4. Predice las curvas antes de ejecutar. Las notas de Borja van en learners/borja/phase-16/notes/predictions.md.
  5. Ejecuta tras el cierre de la Fase 17; reconcilia predicciones vs realidad en reflections.md.

Resumen de un párrafo

El corpus §A13 es demasiado corto para que la comparación sinusoidal-vs-RoPE favorezca a RoPE en el conjunto de val en distribución. Pero en conjuntos de val sintetizados con longitud extrapolada (T=10, 15, 20), la matemática de posición relativa de RoPE le da una victoria limpia — probablemente unos ~24 puntos porcentuales de conjugation accuracy en T=20. Por qué: los valores de PE sinusoidal en T=20 están fuera de lo que el modelo ha visto durante el entrenamiento; el producto escalar de posición relativa de RoPE se mantiene en distribución porque depende solo de la diferencia t - s. Este es el resultado que reportan Su et al. 2021 y LLaMA, escalado a §A13. El lab 03 de Fase 16 ejecuta el experimento.


Anterior: 03-rope.md Siguiente: Fase 17 (mini-GPT).