](https://deep-paper.org/en/papers/2025-10/2307.08691/images/cover.png)
FlashAttention-2:为 Transformer 带来更迅捷、更高效的注意力机制
如果你一直关注大语言模型领域,就会知道其中一个重要目标是扩展上下文窗口。我们希望模型能阅读整本书籍、分析冗长的代码库或处理高分辨率图像。而主要的障碍是什么?正是 Transformer 架构核心的注意力机制。它的计算和内存成本会随着序列长度按二次方增长,使得长上下文变得异常昂贵。 2022 年,一篇突破性的论文 FlashAttention 直面了这个问题。通过巧妙地重排注意力计算,使其更好地利用 GPU 的内存层级结构,它实现了线性内存使用和2–4 倍加速,并且没有任何近似。这是一次颠覆性的创新,并已被广泛采用。 但故事并未就此结束。虽然 FlashAttention 速度很快,但它仍未充分发挥现代硬件的潜力。其性能 (以每秒浮点运算次数 FLOPs/s 衡量) 徘徊在 NVIDIA A100 等 GPU 理论峰值的 25–40% 左右。相比之下,高度优化的矩阵乘法 (GEMM) 例程可以达到该峰值的 80–90%。仍有显著的性能差距有待填补。 FlashAttention-2 应运而生。这项后续工作剖析了原始算法的剩余低效之处,并引入了一系列优化。通过重新思考如何在 GPU 的计算单元之间以及单元内部划分工作,FlashAttention-2 实现了又一次约 2 倍加速,将硬件利用率推向了令人印象深刻的理论峰值的 50–73%。 在这篇文章中,我们将深入探讨论文《FLASHATTENTION-2: 通过更优并行化与工作划分实现更快的注意力机制》。我们将探讨: 快速回顾: 标准注意力机制为何缓慢,以及初代 FlashAttention 的工作原理 FlashAttention-2 的三大关键创新: 减少慢速操作、更智能的并行化以及更高效的工作划分 令人瞩目的结果: 展示 FlashAttention-2 的速度已接近纯矩阵乘法 背景: GPU 瓶颈与 FlashAttention-1 要理解 FlashAttention-2,我们首先需要掌握标准注意力为何效率低下,以及它的前辈 FlashAttention 如何解决了问题的初步部分。 GPU 硬件基础 GPU 不是一个单一的计算引擎,而是一个具有内存层级结构的复杂系统。对我们来说,最重要的两个层级是: 高带宽内存 (HBM): 即大容量的显存 (例如 A100 上的 40–80 GB) ,用于存放模型和数据。与常规 RAM 相比,它的“带宽”更高,但相对片上内存来说依然较慢。 SRAM (静态随机存取存储器) ,又称共享内存: 极其快速的片上内存,容量很小 (每个计算单元仅几 KB) ,但带宽远高于 HBM。 GPU 编程的黄金法则:** 尽量减少对 HBM 的读写**。最高效的算法会将数据从 HBM 加载到快速的 SRAM 中一次性完成尽可能多的计算,然后只将最终结果写回 HBM。每一次不必要的 HBM 往返都会造成严重的性能瓶颈。 ...