Flash Attention
一种高效的注意力机制实现算法,通过分块计算和IO感知优化,大幅降低Transformer模型训练和推理时的显存占用与计算时间
核心事实
时间轴 (近 90 天)
SDPA根据输入形状、数据类型和硬件能力自动选择最优后端,可能包括Flash Attention、Memory-Efficient Attention或普通实现。
开启闪存注意力(Flash Attention)并将缓存类型设为 Q8 可减少约一半的 KV Cache 显存占用,质量损失很小。
v5.19.0 弃用了 SDPA 和 Flash Attention 实现中的 paged| 前缀,持续批处理时应直接设置常规注意力实现,eager 模式仍需保留 paged|eager 前缀
在CUDA C++底层需手写500多行的Flash Attention关键算子,在TileLang里据称只需约80行即可完成
FA1到FA4的演进主线是不断提升对硬件异步特性(Tensor Core流水线、异步内存拷贝)的利用率,使实际吞吐逼近理论峰值FLOPS
运行Nemotron Super(约1200亿参数)时,未优化约每秒16.6个Token,启用MTP、Flash Attention和KV缓存后提升到27.2个Token(17000上下文长度下),提速约64%
Flash Attention在KoboldCpp里默认关闭,而llama.cpp源码中默认自动开启
ModernBERT是2024年底发布的BERT架构改进版,引入了旋转位置编码(RoPE)和交替局部/全局注意力等现代化设计
低显存优化手段包括将模型权重从FP32降至FP16或BF16、启用模型分块加载卸载到系统内存、以及使用xformers或Flash Attention等高效注意力实现
速度收益来自Flash Attention快路径的优化,而非把KV搬到内存本身,也不是长上下文压测的数据
还有 8 条时间轴事件
全部知识事实 (20)
Flash Attention由斯坦福Tri Dao等人于2022年提出,通过分块计算与重计算将显存复杂度从O(N²)降低到O(N)
90%已验证Flash Attention 通过 IO 感知的分块计算显著降低显存占用,提升物理可用窗口上限
90%已验证Flash Attention是由斯坦福大学提出的注意力计算优化算法,通过分块处理将中间结果留在GPU高速SRAM中,降低显存带宽压力并减少显存占用
90%已验证ModernBERT是2024年底发布的BERT架构改进版,引入了旋转位置编码(RoPE)和交替局部/全局注意力等现代化设计
65%已验证Flash Attention通过分块计算减少显存访问次数,MQA和GQA通过共享键值头降低计算开销
65%待验证Transformers库集成了GPTQ、AWQ、bitsandbytes等量化技术和Flash Attention加速方案
90%待验证上下文窗口扩展得益于ALiBi位置编码、RoPE的外推扩展、Flash Attention和Ring Attention等技术突破
85%待验证Inception Labs 的创始团队由斯坦福、UCLA 和康奈尔大学的教授组成,曾主导过 Flash Attention、决策 Transformer 及直接偏好优化(DPO)等研究
80%待验证SDPA根据输入形状、数据类型和硬件能力自动选择最优后端,可能包括Flash Attention、Memory-Efficient Attention或普通实现。
50%待验证开启闪存注意力(Flash Attention)并将缓存类型设为 Q8 可减少约一半的 KV Cache 显存占用,质量损失很小。
50%待验证v5.19.0 弃用了 SDPA 和 Flash Attention 实现中的 paged| 前缀,持续批处理时应直接设置常规注意力实现,eager 模式仍需保留 paged|eager 前缀
50%待验证在CUDA C++底层需手写500多行的Flash Attention关键算子,在TileLang里据称只需约80行即可完成
50%待验证FA1到FA4的演进主线是不断提升对硬件异步特性(Tensor Core流水线、异步内存拷贝)的利用率,使实际吞吐逼近理论峰值FLOPS
50%待验证运行Nemotron Super(约1200亿参数)时,未优化约每秒16.6个Token,启用MTP、Flash Attention和KV缓存后提升到27.2个Token(17000上下文长度下),提速约64%
50%待验证Flash Attention在KoboldCpp里默认关闭,而llama.cpp源码中默认自动开启
50%待验证低显存优化手段包括将模型权重从FP32降至FP16或BF16、启用模型分块加载卸载到系统内存、以及使用xformers或Flash Attention等高效注意力实现
50%待验证速度收益来自Flash Attention快路径的优化,而非把KV搬到内存本身,也不是长上下文压测的数据
50%待验证2022年提出的Flash Attention通过分块计算和重计算策略,速度快2到4倍,显存省下10到20倍,且数学等价
50%待验证投机解码和Flash Attention是不断涌现的软件优化技术
50%待验证量化KV缓存需要开启Flash Attention(通过设置OLLAMA_FLASH_ATTENTION=1)
50%