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·mqaSalta 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¶
theory/00-motivation.md— por qué la attention domina el tiempo de inferencia; el argumento del roofline.theory/01-online-softmax.md— la identidad algebraica que hace Flash posible. Léelo hasta que puedas re-derivarlo desde cero.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.theory/03-paged-and-sliding.md— paginación del KV cache de PagedAttention; sliding window attention; cómo componen con Flash.theory/04-gqa-mqa-mla.md— grouped/multi-query/multi-latent attention. Tres trucos independientes de reducción de KV.lab/00-online-softmax.md— implementa online softmax en Python puro; verifica que coincide con softmax por lotes.lab/01-flash-bytes.md— deriva y mide el delta de bytes-movidos. Simbólico + empírico.lab/02-flash-triton.md— implementa FlashAttention forward en Triton.lab/03-paged-attn-reading.md— lectura anotada deblock_manager.pyde vLLM.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-3en 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.
- 📄 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness — Dao et al. · 2022. la victoria de roofline con softmax en tiles que derivas.
- 📄 Efficient Memory Management for LLM Serving with PagedAttention — Kwon et al. · 2023. el paging de KV-cache tras vLLM.
- 📄 GQA: Training Generalized Multi-Query Transformer Models — Ainslie et al. · 2023. el compartir KV-heads que los modelos modernos llevan.