語言人工智慧指南

閃光注意

FlashAttention 是一種記憶體高效演算法,它計算與標準 Transformer 完全相同的注意力,但無需編寫巨大的注意力矩陣來減慢 GPU 記憶體。

閱讀時間約2分鐘最後更新

概述

It made long-context training and inference dramatically faster and cheaper.

深入探討

標準注意力計算每對標記的分數,產生 N×N 矩陣。對於包含 4,000 個標記的序列(即 1,600 萬個分數),必須將矩陣寫入 GPU 的高頻寬記憶體 (HBM) 並從中讀回。真正的瓶頸是記憶體流量,而不是數學。 Tri Dao 及其同事於 2022 年推出的 FlashAttention 重組了計算,使矩陣永遠不會完全具體化。它以適合 GPU 微型、超快片上 SRAM 的圖塊形式處理序列,並在運行過程中增量計算 softmax。結果在數學上與標準注意力相同,但使用的記憶體少得多,運行速度快幾倍,從而實現更長的上下文視窗。

技術洞察

訣竅是將“線上 softmax”與平鋪相結合。 FlashAttention 將小塊查詢、鍵和值載入到 SRAM 中,計算部分注意力輸出,並在新區塊到達時重新調整運行總和,以便 softmax 標準化保持正確,而無需立即查看所有分數。由於它從不將完整的 N×N 矩陣儲存在 HBM 中,因此記憶體會線性而不是二次縮放,並且核心會融合到單一 GPU 操作中,以最大程度地減少記憶體讀寫速度緩慢。

戰略影響

速度與規模

語言工作流程可以在不犧牲一致性的情況下更快地移動。

交通與覆蓋範圍

它擴展了跨語言和溝通方式的訪問。

更明確的決策

團隊可以花更多時間進行判斷,而自動化則可以處理重複。

FlashAttention 的未來

FlashAttention 已成为默认构建块。 FlashAttention-2 改進了 GPU 工作分區,FlashAttention-3 利用了較新的 Hopper 硬體功能,例如非同步和低精度 FP8。預計將繼續與晶片進行協同設計,更深入地整合到長文件的推理伺服器中,以及針對稀疏或滑動視窗注意力進行調整的變體。隨著上下文視窗向數百萬個令牌推進,像這樣的 IO 感知核心對於保持培訓和服務成本的可控仍然至關重要。

現實世界的實施

以更低的 GPU 成本更快地訓練 Llama 和 GPT 式系統等大型語言模型

提供長上下文聊天助手,可以在不耗盡記憶體的情況下攝取整本書或程式碼庫

加快同時處理數萬個標記的文件摘要管道

為視覺和多模態轉換器提供動力,其中長序列的圖像塊會使注意力變得昂貴

風險與防護欄

幻覺的事實可以悄悄地進入報告、支持流程或研究成果。

及時的敏感性可能會在類似的請求中產生不一致的結果。

如果存取控制薄弱,敏感文字資料可能會暴露。

實施路線圖

1

在推出之前定義輸出格式、語氣和品質標準。

2

當準確性很重要時,請使用可信任來源進行地面回應。

3

為高風險輸出保留人工審查檢查點。

4

追蹤故障模式並定期重新訓練提示或工作流程。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the FlashAttention quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

旋轉位置嵌入

常見問題

What is FlashAttention?

FlashAttention 是一種記憶體高效演算法,它計算與標準 Transformer 完全相同的注意力,但無需編寫巨大的注意力矩陣來減慢 GPU 記憶體。它使長上下文訓練和推理變得更快、更便宜。

標準注意力中 FlashAttention 目標的主要瓶頸是什麼?

標準注意力是受記憶體限制的:在巨大的 N×N 矩陣與高頻寬記憶體之間來回穿梭佔據了時間,而不是算術本身。

FlashAttention 的輸出與標準注意力相比如何?

FlashAttention 計算完全相同的注意力值;它只是重新組織計算以避免具體化整個矩陣。

FlashAttention 透過處理圖塊中的資料來利用哪些 GPU 記憶體?

FlashAttention 將小塊載入到 GPU 的快速片上 SRAM 中,讓繁重的工作保持在運算單元附近。

什麼技術可以讓 FlashAttention 計算 softmax 而無需立即查看所有分數?

線上 softmax 維護運行最大值和總和,在新圖塊到達時重新調整部分結果,以便最終標準化是正確的。

FlashAttention-3具體利用了什麼?

FlashAttention-3 與現代 Hopper GPU 共同設計,使用非同步執行和低精確度 FP8 來進一步加速。