Skip to content

English · Español

Fase 17 — Bloque transformer minúsculo y Mini-GPT

Requiere: 10 — Inicialización, normalización, residuales · 15 — Attention desde cero · 16 — Codificaciones posicionales Enseña: transformer-block · pre-ln · ffn · gelu · tied-embeddings · lm-head Salta a cualquier capítulo desde el índice de referencia de fases.

Mapa del capítulo

🇪🇸 Aquí se ensambla todo. Embedding (13) + RoPE (16) + multi-head attention (15) + FFN + LayerNorm + residual = un bloque transformer. Apilas dos, pones cabeza LM atada, y tienes un Mini-GPT. No se entrena. Sólo se ensambla, se cuentan los parámetros uno a uno y se verifica el forward contra una referencia hecha a mano. Entrenamiento: Fase 18.

Anclajes: LYNX_CORTEX.md §4 / PHASE 17, PHASE_17_PLAN.md, LYNX_CORTEX_ADDENDUM.md §A13 (alcance de gramática verbal).

Por qué existe esta fase

Las fases 13–16 construyeron las piezas: embeddings, líneas base de modelos de secuencia, multi-head attention, codificaciones posicionales. La Fase 17 las pega en el objeto más pequeño que es reconociblemente un modelo de lenguaje: el bloque transformer Pre-LN, apilado dos veces, con una cabeza LM atada encima. El objetivo es el mecanismo, no la capacidad: cada operación, cada forma, cada parámetro contabilizado. El entrenamiento es la fase siguiente; el muestreo está cuatro fases más adelante. El entregable es una clase NumPy cuyo paso forward (forward pass) se ejecuta de extremo a extremo sobre la secuencia canónica de 8 tokens de gramática verbal y cuyo conteo de parámetros coincide con una fórmula cerrada hasta el último dígito.

Qué vas a construir

Una clase MiniGPT(d_model=64, n_heads=4, n_layers=2, d_ff=256, vocab_size=64) compuesta por:

  • LayerNorm (implementación propia, compatible con autograd mediante los tensores de la Fase 8)
  • FFN (dos capas lineales con GELU)
  • TransformerBlock (Pre-LN: LN → MHA → +res → LN → FFN → +res)
  • Bloques apilados + LN final + cabeza LM atada (\(\text{logits} = h \cdot E^\top\))

Conteo total de parámetros para la configuración bloqueada: 103.680 parámetros (~103k), derivado en el lab 02.

Archivos

phase-17-mini-gpt/
├── README.md                          # este archivo
├── theory/
│   ├── 00-motivation.md              # por qué pegar ahora, qué es el residual stream
│   ├── 01-transformer-block.md       # anatomía del bloque Pre-LN, el residual stream
│   ├── 02-ffn-and-activations.md     # por qué existe FFN, GELU, la proporción 4×
│   └── 03-tied-embeddings-and-lm-head.md  # pesos atados, el softmax final
├── lab/
│   ├── 00-block-by-hand.md           # un bloque forward en un juguete de 2 tokens, d_model=4
│   ├── 01-assemble-mini-gpt.md       # MiniGPT completo forward sobre secuencia de 8 tokens verbales
│   ├── 02-parameter-inventory.md     # cuenta parámetros capa por capa; cuadra con la fórmula
│   └── 03-causality-perturbation.md  # verifica que la máscara causal se sostiene de extremo a extremo
├── solutions/                         # se rellena al abrir la fase; NO leer primero
├── notebooks/
└── diagrams/                          # diagrama del bloque, barra apilada de parámetros, traza de formas

Qué NO cubre esta fase

  • Entrenamiento. Fase 18. Sin pérdida, sin optimizador, sin paso de gradiente en la Fase 17.
  • Muestreo / generación. Fase 21. La Fase 17 produce logits; no elige un token.
  • KV cache. Fase 22. Cada forward en la Fase 17 recomputa desde cero.
  • Dropout / inicialización de pesos más allá de gaussiana simple. Fase 18.
  • Comprobación cruzada con PyTorch. Fase 25 — la Fase 17 es NumPy puro + el autograd de la Fase 8.
  • Precisión mixta / fp16 / bf16. Fase 23+. Mini-GPT es fp32 de principio a fin.
  • Derivación de Pre-LN más allá de un párrafo. Pre-LN está bloqueado. Post-LN es una nota a pie.

Lista de comprobación al abrir la fase (según CLAUDE.md §1)

  1. Releer PHASE_17_PLAN.md §§0–8.
  2. Releer LYNX_CORTEX.md §4 / PHASE 17 (líneas 472–484) y §A13.
  3. Confirmar que el lab 03 de la Fase 16 resolvió RoPE vs sinusoidal — la Fase 17 hereda esa decisión.
  4. Abrir src/minimodel/BLUEPRINT.md §4 (transformer) y pedir revisión antes de cualquier archivo .py.
  5. Leer primero theory/00-motivation.md; no saltar al lab.

Siguiente: theory/00-motivation.md

Lecturas recomendadas

Opcional — enriquece pero no es necesario para aprobar la fase.