FlashAttention: optimización de memoria para acelerar transformers

Fuentes: FlashAttention: Memory Optimization for Accelerating Transformers

FlashAttention es una familia de algoritmos diseñada para optimizar la atención en modelos de lenguaje mediante la reducción del tráfico de datos en la jerarquía de memoria de la GPU, no mediante la aproximación matemática de la atención. A diferencia de los métodos aproximados que modifican la función matemática, FlashAttention mantiene la exactitud del cálculo de atención escalada por punto, pero reorganiza la ejecución para minimizar los viajes a la memoria de banda ancha (HBM). El mecanismo central combina el encaje (tiling), el softmax en línea y la recomputación, permitiendo que los valores intermedios se procesen en memoria rápida de chip (SRAM) antes de escribirlos en HBM. Esta estrategia aprovecha la asimetría de velocidad y capacidad entre la memoria on-chip y off-chip, donde la reutilización en SRAM es mucho más eficiente que el movimiento constante de grandes matrices. La implementación original de FlashAttention-1 sentó las bases, evolucionando hacia versiones posteriores (FA3 y FA4) que adaptan el algoritmo a las mejoras de hardware y a las restricciones de memoria de los frameworks modernos. El enfoque es particularmente relevante para inferencia y entrenamiento, donde el cuello de botella suele ser la transferencia de datos más que la capacidad de cálculo bruta. Al entender que la velocidad de reloj no depende solo de las operaciones aritméticas, los desarrolladores pueden diseñar kernels que prioricen la movilidad de datos, logrando aceleraciones significativas en modelos de gran escala sin sacrificar la precisión matemática.