Skip to content

FlashAttention 优化原理与使用

FlashAttention 通过 IO 感知的分块计算策略,在不改变数学结果的前提下,将注意力计算的内存访问量从 O(N²) 降低到 O(N)。

FlashAttention

核心思想

传统注意力的瓶颈不在计算而在内存访问——中间结果 S=QK^T 和 P=softmax(S) 需要写入 HBM 再读回。FlashAttention 通过分块计算避免存储完整的 N×N 注意力矩阵:

python
# FlashAttention 使用
from torch.nn.functional import scaled_dot_product_attention

# PyTorch 2.x 内置 FlashAttention
output = scaled_dot_product_attention(Q, K, V, is_causal=True)
# 自动选择 FlashAttention / Memory-Efficient Attention

性能提升

序列长度标准注意力FlashAttention加速比
5121.2ms0.4ms3x
204818ms2.1ms8.5x
8192OOM12ms

FlashAttention 2 vs 3

FlashAttention-2 优化了 GPU 利用率;FlashAttention-3 针对 Hopper 架构(H100)使用 TMA 和 Warpgroup 进一步加速。

相关资源

最近更新