Skip to content

English · Español

Fase 27 — Optimizaciones de atención moderna

Requiere: 15 — Attention desde cero · 22 — KV cache: de las matemáticas a la memoria · 26 — Cuantización en profundidad Enseña: flash-attention · online-softmax · paged-attention · gqa · mqa Salta a cualquier capítulo desde el índice de referencia de fases.

Mapa del capítulo

Pre-escrito según A12. La teoría y los enunciados de los problemas del lab son borradores estables; las soluciones se escriben justo a tiempo al abrir la fase.

🇪🇸 Atención moderna: Flash, Paged, GQA/MQA, ventana deslizante. Lo unificador es el roofline de la Fase 1 — todas optimizan el byte-count, no el FLOP-count.


Objetivo

Re-derivar cada optimización de "atención moderna" como una manipulación del roofline: mismos FLOPs, menos bytes movidos, mayor intensidad aritmética. Esta es la única lente conceptual de toda la fase. Al final, Borja puede predecir — desde una descripción de una línea de una nueva variante de attention — dónde caerá su punto en el roofline de la Fase 1.

La fase produce un kernel Triton a medida (FlashAttention forward), un conjunto de variantes MQA/GQA, y una lectura anotada del asignador de bloques KV de vLLM. Todo lo demás es derivación y medición.

Contexto del tema (§A13): todas las mediciones se anclan a la longitud de secuencia de 64 tokens del corpus de verbos; la ganancia de FlashAttention es invisible a esa escala (el working set entero cabe en L2), así que también escalamos los tensores Q/K/V a N=2048 sintéticamente para hacer visible la ganancia. Los dos puntos de anclaje permiten a Borja ver tanto "realidad de modelo pequeño" como "estrés a escala de producción" en el mismo roofline.

Ubicación del módulo: la Fase 27 extiende src/minimodel/ (layout canónico §2) en lugar de introducir un nuevo módulo de nivel superior. La attention es un asunto de minimodel; optimizar attention pertenece allí.

Orden de lectura

  1. theory/00-motivation.md — por qué la attention domina el tiempo de inferencia; el argumento del roofline.
  2. theory/01-online-softmax.md — la identidad algebraica que hace Flash posible. Léelo hasta que puedas re-derivarlo desde cero.
  3. theory/02-flash-attention.md — la pieza central. Deriva Flash como una estrategia de tiling sobre el online softmax. Calcula el delta de byte-count vs naive. La página de teoría más importante de esta fase.
  4. theory/03-paged-and-sliding.md — paginación del KV cache de PagedAttention; sliding window attention; cómo componen con Flash.
  5. theory/04-gqa-mqa-mla.md — grouped/multi-query/multi-latent attention. Tres trucos independientes de reducción de KV.
  6. lab/00-online-softmax.md — implementa online softmax en Python puro; verifica que coincide con softmax por lotes.
  7. lab/01-flash-bytes.md — deriva y mide el delta de bytes-movidos. Simbólico + empírico.
  8. lab/02-flash-triton.md — implementa FlashAttention forward en Triton.
  9. lab/03-paged-attn-reading.md — lectura anotada de block_manager.py de vLLM.
  10. lab/04-mqa-gqa.md — implementa variantes MQA/GQA de la attention de MiniGPT; mide la reducción del KV cache.

solutions/ está vacío durante la pre-escritura — se rellena al abrir la fase tras hacerse visibles las convenciones de Triton de la Fase 24.

Definition of Done

Ver PHASE_27_PLAN.md §6. Brevemente:

  • El kernel forward de Triton Flash coincide con la attention de referencia de PyTorch a 1e-3 en FP16.
  • Overlay del roofline con los puntos naive/Flash/MQA/Paged commiteado tanto en N=64 (secuencia de verbos) como en N=2048 (estrés).
  • Reducción del tamaño del KV cache medida para MHA vs GQA vs MQA en la secuencia de verbos.
  • Lectura anotada del block manager de vLLM commiteada.
  • src/minimodel/attention_flash.py (forward de Triton Flash) implementado (Borja).
  • src/minimodel/attention_mqa_gqa.py (variantes MQA / GQA) implementado (Borja).

Lo que esta fase intencionadamente NO cubre

  • Flash backward. El backward necesita recomputación; sustancialmente más difícil y fuera de alcance. Diferido a una fase futura (probablemente 33).
  • vLLM como servicio desplegable. La Fase 31 cubre motores de inferencia; esta fase lee vLLM como referencia para la idea de paging, no como algo que ejecutar.
  • Distributed attention (ring, sequence parallelism). Fase 35.
  • Mamba / SSMs / variantes de linear-attention. No son "atención moderna" en el sentido de §4; potencialmente una side-quest en la Fase 38+.
  • Arquitecturas sin attention. Fuera de alcance.
  • Multi-Latent Attention (DeepSeek). Cubierta conceptualmente en teoría 04; no implementada.

El alcance de la Fase 27 es entender por qué la atención moderna es rápida, implementar Flash forward, y leer PagedAttention. Nada más.

Lecturas recomendadas

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