Folia
← 返回头版

FlashAttention技术原理详解:通过内存优化加速注意力计算

一份详细的技术手册在Hacker News发布,系统阐述了FlashAttention如何通过优化GPU内存层级间的数据移动来加速Transformer模型的注意力计算1。FlashAttention通过分块计算、在线Softmax和重计算三个核心机制实现这一目标,同时不改变注意力的数学函数1。

标准注意力实现存在的问题在于需要多次将中间结果在高带宽内存(HBM)中读写1。以一个具体例子来看,在8192长度序列、32个注意力头、FP16数据类型的配置下,单个注意力矩阵的大小可达4 GiB1。相比之下,标准注意力算法需要Θ(Nd + N²)次HBM访问,而FlashAttention将其降低至Θ(N²d²/M)次访问,其中M为SRAM大小1。

FlashAttention在保持计算复杂度为O(N²d)的同时,将辅助状态的内存复杂度从O(N²)降低到O(N)1。在反向传播阶段,该算法不保存完整的注意力权重矩阵P,而是在反向时逐块重新计算,以此减少内存流量1。这种设计体现了一个关键观点:更多的浮点操作数有时能带来更快的执行速度,因为避免了高成本的HBM数据移动1。该技术支持多种注意力架构,包括多头注意力(MHA)、多查询注意力(MQA)和分组查询注意力(GQA)1。


评论