Skip to content

English · Español

00 — Motivación: "El entrenamiento se ve bien" es la peor frase del aprendizaje automático

El loop entrena, la loss baja, el modelo "funciona". Y sin embargo, el 90% de las veces que se diagnostica un bug, la causa estuvo presente desde el primer paso pero nadie la miró. La Fase 19 es la disciplina de mirar siempre.


La premisa

La Fase 18 produjo un bucle de entrenamiento. Funciona. La pérdida baja. La val PPL bate al baseline. Podrías darlo por hecho.

No deberías.

He aquí cinco preguntas que la Fase 18 no responde:

  1. ¿Hay alguna capa muerta? Un transformer puede tener una cabeza de atención entera cuyas salidas del softmax estén concentradas en una sola key para cada query; esa cabeza no aporta nada. No puedes saberlo desde la curva de pérdida (loss curve).
  2. ¿Están equilibrados los gradientes a lo largo de las capas? Si la capa 0 ve gradientes 1000× más pequeños que la capa 1, las capas tempranas apenas entrenan. La pérdida puede seguir bajando porque las capas posteriores absorben todo.
  3. ¿Es apropiado el learning rate? Una curva de pérdida que "baja suavemente" con un LR 10× mayor suele tener spikes ocultas a fina resolución temporal; el optimizador se recupera de cada spike, lo cual está bien hasta que deja de estarlo.
  4. ¿El modelo memoriza o generaliza? La pérdida de train y la pérdida de val te dan la respuesta, pero solo si las graficas juntas a la resolución correcta.
  5. ¿El modelo aprende lo correcto? Para el corpus de gramática verbal: ¿está captando el patrón regular del pasado -ed (12 verbos lo comparten) o memoriza forma por forma? Un modelo que no ha aprendido el patrón parecerá entrenado — clavó el train set — pero fallará espectacularmente sobre los cuatro verbos retenidos.

Una curva de pérdida no contesta ninguna de estas. El dashboard de la Fase 19 las contesta todas.

La tesis

Solo te ganas el derecho a optimizar un modelo cuando puedes describir, con mediciones, qué está haciendo en este momento.

Esto es "sin instrumentación no hay depuración" aplicado al entrenamiento. En la Fase 18 cableamos el bucle. En la Fase 19 cableamos la forense.

El entregable: un único archivo HTML por ejecución de entrenamiento, autocontenido (sin JS, sin CDN, sin assets externos), con siete paneles:

  1. Curvas de pérdida (train + val).
  2. Schedule del LR (para que puedas verificar que el warmup realmente calentó).
  3. Historial de la norma del gradiente (para que veas el clipping en acción).
  4. Magnitudes de activación por capa (para que las capas muertas/explosivas sean obvias).
  5. Normas espectrales de los pesos por capa (para que el crecimiento sea visible).
  6. Conteo de neuronas/cabezas muertas a lo largo del tiempo.
  7. Descomposición de la pérdida por clase de verbo (regular vs irregular).

Abre el archivo meses después — sigue contándotelo todo. Ese es el punto. Tensorboard requiere el servidor. mlflow requiere la DB. Un archivo HTML en tu repo no requiere nada.

Por qué tres breaks diseñados

Leer no es entender. El laboratorio introduce tres fallos específicos de entrenamiento:

  1. Mala inicialización (bad init) — Xavier-init escalado por 100. Las activaciones explotan. NaN al paso 50.
  2. Sin warmupW = 0, LR pleno desde el paso 0. La pérdida sufre spikes salvajes al principio y luego se recupera despacio.
  3. Máscara causal rota — la máscara es True en todas partes; el modelo ve el futuro. La pérdida de train baja más rápido que el baseline de n-gramas; la pérdida de val se queda plana.

Cada break produce una firma en el dashboard. El laboratorio no te dice de antemano qué break es cuál; ejecutas los tres, miras los tres dashboards y anotas qué firma corresponde a qué causa. Después compruebas.

Si tus diagnósticos son 3/3, te has ganado el instrumento. Si ⅔, vuelve a leer los paneles del dashboard e inténtalo de nuevo. Si ⅓, relee la fase entera.

Por qué importa el panel regular-vs-irregular

Según §A13, el corpus tiene 12 verbos regulares y 8 irregulares. La regla de conjugación regular es un único patrón compartido:

work → works (3sg) → worked (past) → worked (pp) → will work (future) → going to work
play → plays → played → played → will play → going to play
...

12 verbos × 5 tiempos × 3 personas = 180 formas regulares — todas generables a partir de la única regla.

Los irregulares cada uno tienen su propio patrón:

be → am / is / are → was / were → been → will be → going to be
have → has → had → had → will have → going to have
go → goes → went → gone → will go → going to go
...

8 verbos × 5 tiempos × 3 personas = 120 formas irregulares — cada verbo es, en gran parte, independiente.

Un modelo que de verdad haya aprendido el corpus debería:

  • Aplastar los regulares hacia el paso ~500. La regla es simple; aprenderla una vez desbloquea 180 formas.
  • Avanzar lentamente con los irregulares durante ~1500 pasos. Cada verbo es, en gran parte, su propia tarea de memorización.

Si la pérdida regular y la pérdida irregular bajan al unísono, el modelo está memorizando — no hay generalización. Si la pérdida irregular baja primero (lo cual sería extraño), hay una fuga de datos en algún sitio.

El patrón sano: la pérdida regular baja rápido, la irregular se queda atrás, la brecha se ensancha durante ~500 pasos y luego se estrecha a medida que el modelo memoriza los irregulares. La pendiente del estrechamiento y la brecha asintótica te dicen juntas "¿este modelo aprende reglas + excepciones o es pura memorización?". El arnés de eval de la Fase 20 cuantificará esto para los casos retenidos; el dashboard de la Fase 19 te deja verlo durante el entrenamiento.

Las cinco máquinas de estados, instrumentadas

La Fase 18 introdujo las cinco máquinas de estados. La Fase 19 le coloca una sonda a cada una:

  1. Modelo — estadísticas de activación/pesos por capa vía forward hooks.
  2. Optimizador — norma del gradiente, estadísticas del gradiente por parámetro vía backward hooks.
  3. Scheduler — LR graficado junto con la pérdida; un LR plano durante el "warmup" es la firma del bug #2.
  4. Iterador de datos — la descomposición de pérdida por clase es la sonda del lado del iterador.
  5. RNG de control de entrenamiento — registrado en el manifest; no se grafica activamente.

Cada sonda es barata (estadísticas en streaming Welford, no volcados completos del tensor). El overhead total debe quedarse ≤ 30%; el laboratorio mide y lo impone.

De qué no va esta fase

  • Tuning. Sin sweeps de hiperparámetros. Tres breaks diseñados ≠ exploración. El dashboard te dice qué está roto; la Fase 20 mide calidad; la Fase 28 hace tuning (con LoRA).
  • Monitorización en vivo. Sin dashboards en streaming. Cada ejecución de entrenamiento produce un archivo HTML al final. La monitorización en vivo requiere un servidor; en la Fase 19 no lo tenemos.
  • Concurso de belleza. El archivo HTML es funcional, no artístico. Siete paneles de matplotlib en scroll vertical. No gastes horas en CSS.

La forma de la fase

  • Teoría 01 es el catálogo de paneles: qué muestra cada panel y qué bugs saca a flote.
  • Teoría 02 es la matemática: norma espectral vía power iteration, criterio de neurona muerta, ratio grad-a-peso, detector de spikes de pérdida, fórmula de descomposición por clase.
  • Teoría 03 son los tres modos de fallo: la firma de cada uno en el dashboard, el mecanismo exacto que la produce y cómo arreglarlo una vez diagnosticado.
  • Lab 00 escribe los hooks y mide su overhead.
  • Lab 01 renderiza el dashboard.
  • Lab 02 ejecuta los tres breaks y tú los diagnosticas.
  • Lab 03 hace overfitting a propósito para ver la brecha train/val y estabilizar la brecha regular/irregular.

Planifica ~8-12 horas de estudio repartidas en 4-5 sesiones.

Para aquí si

Te tienta saltarte el laboratorio de diagnóstico y leer la solución primero. La solución está deliberadamente bloqueada. El único valor duradero de la fase está en el momento en que miras tres dashboards, escribes tres conjeturas y descubres que tenías razón (o no, con una lección concreta). Mirar a hurtadillas tira ese valor a la basura.

Lo que esta fase NO cubre

  • Evaluación / calidad del modelo. Fase 20. La Fase 19 es solo training-time.
  • Comportamiento de generación. Fase 21. La política de decodificación es su propio problema de diagnóstico.
  • Visualización del paisaje de la pérdida. Fuera de alcance (requeriría evaluar la pérdida en muchas perturbaciones de parámetros).
  • GPU profiling. Fases 23 / 24 / 27.

Siguiente: theory/01-what-to-instrument.md.