基本介紹
- 外文名:FlashAttention
研發背景,發展歷程,核心技術,運營模式,核心團隊,重要事件,
研發背景
Transformer模型的自注意力機制在處理長序列時,其計算複雜度和記憶體占用均與序列長度呈平方關係(O(N)),導致模型訓練和推理速度慢、記憶體消耗巨大,成為制約模型處理更長上下文的關鍵瓶頸。
為解決這一瓶頸,史丹福大學計算機系與紐約州立大學布法羅分校的研究團隊(Tri Dao、Dan Fu等)於2022年提出了FlashAttention算法。該算法是一種具有I/O(輸入/輸出)感知能力的精確注意力算法,旨在通過算法層面的最佳化,顯著減少對慢速高頻寬記憶體(HBM)的訪問,從而在保持計算精度的同時,實現更快的計算速度和更低的記憶體占用。
發展歷程
FlashAttention由Tri Dao等人於2022年提出,是一種IO感知的精確注意力算法。該算法通過分塊(Tiling)和重計算(Recomputation)技術,將注意力計算的記憶體複雜度從O(N)降低至O(N)。實驗表明,其運行速度比PyTorch標準實現快2-4倍,記憶體占用僅為後者的5%-20%。
FlashAttention-2於2023年發布,在算法、並行化和工作分區方面進行了顯著改進。該版本最佳化了GPU執行緒塊和warps之間的工作分配,減少了非矩陣乘法運算。在A100 GPU上,其吞吐量約為初代版本的2倍,端到端訓練速度可達225 TFLOPs/s,模型FLOPs利用率達72%。同時,它支持更高的頭維數(最高256)及多查詢注意力(MQA)和分組查詢注意力(GQA)。
FlashAttention-3於2024年發布,專門針對英偉達Hopper架構(如H100 GPU)最佳化。該版本利用了異步執行(重疊GEMM和softmax計算)、低精度(FP8)計算等硬體特性。在H100 GPU上,FP16精度下性能最高可達740TFLOPS(理論峰值利用率達75%),FP8精度下性能接近1.2 PFLOPS,速度是FlashAttention-2的1.5-2.0倍。
FlashAttention-4於2026年3月正式發布,針對Blackwell GPU架構(如B200)進行了算法與核心的協同設計。該版本通過新型軟體流水線、多項式近似指數計算、條件式softmax重縮放以及利用2-CTA MMA指令等技術,進一步最佳化性能。在B200 GPU(BF16精度)上,其性能最高可達1605 TFLOPs/s(利用率71%),比cuDNN 9.13快1.3倍。
核心技術
FlashAttention是一種快速且記憶體高效的精確注意力算法,其核心思想是通過平鋪(tiling)和重計算(recomputation)技術,將大型注意力矩陣分塊處理並利用GPU的片上SRAM進行計算,從而避免存儲完整的中間注意力矩陣,將記憶體使用量從序列長度的二次方O(N)降低到線性O(N)。該算法通過減少對高頻寬記憶體(HBM)的訪問次數,實現了比標準注意力實現快2-4倍的速度,並將記憶體使用量減少至標準方法的5%-20%。
FlashAttention-2在初始版本基礎上進行了算法最佳化,通過改進工作分區(work partitioning)和並行化策略,減少了非矩陣乘法運算的需求,在A100 GPU上實現了更高的計算吞吐量,達到理論FLOPs的50%-73%。FlashAttention-3則針對Hopper架構(如H100 GPU)的硬體特性進行了深度最佳化,採用了異步執行技術(如重疊GEMM與Softmax計算)並利用硬體對FP8低精度計算的支持,在H100上實現了高達740 TFLOPS(理論峰值利用率75%)的性能,速度是FlashAttention-2的1.5-2.0倍。FlashAttention-4於2026年3月發布,針對Blackwell架構(如B200 GPU)重新設計了算法流水線,引入了多項式指數模擬、條件式Softmax重縮放等新機制,以最大化硬體資源利用率。
該算法採用安全Softmax(或稱線上Softmax計算技術)來處理數值穩定性問題。然而,在BF16等低精度訓練場景下,標準的FlashAttention實現可能因特定數值誤差積累導致訓練後期損失函式(Loss)突然爆炸,研究表明這源於安全Softmax計算中產生的系統性數值偏置。一種修複方法是對安全Softmax算法進行極小修改,以穩定低精度訓練。
運營模式
FlashAttention系列算法以開源形式發布,並迅速被集成到PyTorch等主流深度學習框架和庫中。PyTorch從2.0版本開始集成FlashAttention核心,並在2.2版本中集成了FlashAttention-2。社區和廠商也致力於將FlashAttention移植適配到其他硬體平台,例如通過TileLang在AMD GPU上實現,或通過Ascend C在華為昇騰AI處理器上進行最佳化。在行業套用方面,FlashAttention已成為LLaMA、Falcon等知名大模型訓練和推理的基礎設施之一。
核心團隊
重要事件
2022年6月,FlashAttention算法論文正式發布。2023年,FlashAttention被集成至PyTorch2.0版本。2026年3月,清華大學研究人員發表論文,首次從機制上解釋了FlashAttention在BF16低精度訓練下可能導致Loss爆炸的問題,並提出了修複方案。同月,FlashAttention-4正式發布,並宣布PyTorch FlexAttention已支持其作為後端。
