長序列 Transformer 速度慢且記憶體需求大,因為標準自注意力會具體化大型中間矩陣,並在 GPU 高頻寬記憶體與運算單元之間反覆搬移這些矩陣。

誘人的修法是近似注意力:改變模型的數學以降低複雜度。FlashAttention 採取相反路線。它保持精確注意力,但在 SRAM 中處理區塊,並重新計算運行中的 softmax 統計量,因此完整的注意力矩陣永遠不必被儲存。

該論文報告:與 MLPerf 1.1 訓練紀錄相比,BERT-large 的端到端實際耗時加速 15%;序列長度 1K 的 GPT-2 加速 3 倍;Long Range Arena 任務加速 2.4 倍。

最佳化記憶體流量,而非數學

核心限制是 HBM 與 SRAM 之間的 IO,而不只是浮點運算。

分塊讓每個區塊在資料已在晶片上時進行有用的工作。

保持演算法精確,避免了使許多近似方法不受青睞的品質退步。

同一個基本原語解鎖了更長的上下文與新的序列任務,而無需改變 Transformer 抽象。

當硬體搬移是瓶頸時,更好的演算法可能是那個計算相同答案、但更少次穿越記憶體階層的演算法。

FlashAttention 成為高效 Transformer 訓練與推論的標準建構模組。其更大的教訓傳播到注意力之外:現代加速器演算法往往先圍繞記憶體階層進行設計,再發明新的模型數學,從而勝出。

追溯依據

參考來源

  1. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness arXiv · arxiv.org ·