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:
- Confirmar que la paridad de contexto corto se mantiene en nuestro régimen microscópico.
- Establecer una baseline para cualquier escalado futuro (mini-GPT de Fase 17, portal de Fase 30).
- 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¶
- 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. - RoPE es rotación multiplicativa en el espacio QK. Su matemática es relativa (el producto escalar entre
R_θ(t) qyR_θ(s) kdepende solo det - s, no detospor separado). Incluso enT = 20las 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¶
- Val cross-entropy loss en cada
T ∈ {5, 10, 15, 20}. - Conjugation accuracy — ¿produce el modelo el tiempo verbal correcto? La Fase 20 (eval harness) la define formalmente.
- 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 enT = 20debería verse errática (el modelo no tiene idea de qué hacer). - 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)¶
- Implementa RoPE en
src/minimodel/nn/rope.py(lab 02 de Fase 16). - Conecta
pe_kind="rope"al constructor de mini-GPT (Fase 17 — pero blueprint ahora en esta fase). - Escribe la especificación del experimento siguiendo la plantilla de esta página (usa
experiments/16-pe-compare/spec.md). - Predice las curvas antes de ejecutar. Las notas de Borja van en
learners/borja/phase-16/notes/predictions.md. - 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).