開源專案
Dao-AILab/flash-attention avatar
Dao-AILab/flash-attention

FlashAttention:把 IO 感知注意力核放進真實訓練環境

快速且節省內存的精確注意力。 FlashAttention 此儲存庫提供了以下論文中 FlashAttention 和 FlashAttention-2 的官方實作。

24,920 個 Star3,070 個 ForkPythonBSD-3-Clause
GitHub

秒懂

它是什麼?
Dao-AILab/flash-attention 提供 FlashAttention、FlashAttention-2,以及面向 Hopper 的 3 和 4 系列實現,安裝成败高度依赖 CUDA、ROCm、GPU 與 PyTorch 組合。 聚焦本專案的實際功能、技術入口、部署條件、資料流、版本變化與授權邊界,並依官方 README 所列能力判斷適用工作情境和不適合的替代用途。
適合誰用?
適合需要在 PyTorch 注意力計算中測試 IO 感知 CUDA 或 ROCm 內核、並能控製编译工具链的模型團隊;不適合沒有受支援 GPU、只想安裝纯 CPU 依赖的專案。先在隔离環境确认 `torch.__version__`、CUDA 或 ROCm 版本、GPU 架構和 `ninja --version`,再按 README 的安裝指令執行對應測試,比較正确性後才看性能。
可以商用嗎?
可以。BSD-3-Clause 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

dao-ailab-flash-attention-deep-analysis|同一個倉庫包含多条實現線

dao-ailab-flash-attention-deep-analysis|同一個倉庫包含多条實現線 的專案脈絡:README 將倉庫定義為 FlashAttention 與 FlashAttention-2 的官方實現,核心描述是快速且节省內存的精确注意力。它還單列 FlashAttention-3 beta 和 FlashAttention-4 CuTeDSL。3 面向 Hopper,當前列出的能力包括 FP16、BF16 前向與反向,以及 FP8 前向;4 面向 Hopper 和 Blackwell。版本線不同,不能只按包名判断。

dao-ailab-flash-attention-deep-analysis|CUDA 路径的硬条件

dao-ailab-flash-attention-deep-analysis|CUDA 路径的硬条件 的專案脈絡:常规安裝要求 CUDA toolkit、PyTorch 2.2 及以上,以及 packaging、psutil、ninja。CUDA 支援段落寫明需要 CUDA 12.0 及以上,主要覆盖 Ampere、Ada、Hopper,資料類型包括 fp16 和 bf16,後者需要 Ampere、Ada 或 Hopper。Turing 設备需要另一個專案,不能把它當作本倉庫的完整支援。

dao-ailab-flash-attention-deep-analysis|编译並行度会改變资源風險

dao-ailab-flash-attention-deep-analysis|编译並行度会改變资源風險 的專案脈絡:README 給出的安裝指令是 `pip install flash-attn --no-build-isolation`,也可執行 `python setup.py install`。ninja 正常工作時,README 稱 64 核机器编译约需 3 到 5 分钟;沒有 ninja 可能很慢。內存不足時可用 `MAX_JOBS=4 pip install flash-attn --no-build-isolation` 限製並行任務,這個變量應随机器资源進入構建記錄。

dao-ailab-flash-attention-deep-analysis|Hopper beta 要單独驗收

dao-ailab-flash-attention-deep-analysis|Hopper beta 要單独驗收 的專案脈絡:FlashAttention-3 的 README 給出 `cd hopper`、`python setup.py install`,測試指令是 `export PYTHONPATH=$PWD` 後執行 `pytest -q -s test_flash_attn.py`。安裝後從 `flash_attn_3 import flash_attn_interface` 调用函數。該線明确要求 H100 或 H800 與 CUDA 12.3 以上,並被標為 beta,適合測試和基準,不應直接當成稳定主路径。

dao-ailab-flash-attention-deep-analysis|AMD 後端不是 CUDA 的替代開關

dao-ailab-flash-attention-deep-analysis|AMD 後端不是 CUDA 的替代開關 的專案脈絡:ROCm 實現分為 composable_kernel 和 Triton 後端,README 寫明 ROCm 6.0 以上。Triton 路径涉及 `third_party/aiter` 子模块,安裝指令需設置 `FLASH_ATTENTION_TRITON_AMD_ENABLE=TRUE`。文檔列出 MI200、MI300、MI355 和 RDNA 等支援范围,同時說明滑動窗口注意力仍在進行中,部署前應按具體算子覆盖測試。

dao-ailab-flash-attention-deep-analysis|正确性先於速度宣传

dao-ailab-flash-attention-deep-analysis|正确性先於速度宣传 的專案脈絡:README 提供 CUDA、AMD Triton 測試入口,並提醒完整測試套件可能耗時數小時。FlashAttention 論文和 MLPerf 链接是專案背景與引用來源,不能替代你的模型基準。驗證應固定 batch、序列長度、head dimension、dtype、因果掩码和 dropout,先對比輸出誤差,再分別記錄显存、吞吐與编译時間。

dao-ailab-flash-attention-deep-analysis|許可和采用边界

dao-ailab-flash-attention-deep-analysis|許可和采用边界 的專案脈絡:倉庫以 BSD-3-Clause 發布,並要求使用者在采用時引用和致谢 FlashAttention。README 還列出 usage 頁面和論文。適合能維護本地 GPU 镜像、编译缓存和回退實現的訓練平台;若環境经常變更 CUDA 或無法承受本地编译,維護成本会高於一個僅有 Python 接口的依赖,應先做可重複構建。具體驗收應把設备型號、驱動、CUDA 或 ROCm、PyTorch、编译器、ninja 和 MAX_JOBS 作為一組環境記錄。先執行安裝,再用倉庫測試确认 forward 與 backward;測試失败時区分编译錯誤、設备架構不支援、dtype 不支援和數值誤差。针對 FlashAttention-2,要分別覆盖 causal 與非 causal、不同 Q/KV 長度、head dimension 以及 dropout;针對 FlashAttention-3,则按 `hopper/test_flash_attn.py` 的路径單独記錄 beta 結果。AMD 用戶要記錄 CK 或 Triton 後端,不能把 CUDA 測試結果代替 ROCm 結果。性能比較需要固定輸入形状和 warmup 次數,同時保留 PyTorch 原生注意力作為回退基線。只有在正确性、显存和吞吐都符合模型要求後,才把內核寫入訓練镜像;否则保留可切换的原生實現。

dao-ailab-flash-attention-deep-analysis|把 GPU 組合寫進構建記錄

dao-ailab-flash-attention-deep-analysis|把 GPU 組合寫進構建記錄 的專案脈絡:將設备型號、驱動、CUDA 或 ROCm、PyTorch、编译器、ninja 和 MAX_JOBS 作為一組環境記錄,並把生成的 wheel 或镜像放入版本化製品庫。Ampere、Ada、Hopper 和 AMD 設备分別執行對應測試,一個設备通過不代表另一架構也通過。檢查 fp16、bf16、FP8 的輸入輸出形状和誤差阈值,head dimension 256 時單独記錄 forward 與 backward。AMD 要分別記錄 CK 或 Triton 後端。訓練任務保留 PyTorch 原生實現開關,驱動升級或內核异常時可立即比較。 將設备型號、驱動、CUDA 或 ROCm、PyTorch、编译器、ninja 和 MAX_JOBS 作為環境記錄,並把 wheel 或镜像放進版本化製品庫。不同 GPU 架構分別執行測試。檢查 fp16、bf16、FP8 的形状和誤差,head dimension 256 時單独記錄 forward 與 backward。AMD 分別記錄 CK 或 Triton。訓練任務保留 PyTorch 原生實現開關,驱動升級時可立即比較。驗收記錄還要包含輸入、輸出、錯誤和恢複四類結果。先用最小樣本确认主路径,再增加並發、長文本、權限變化或網络中断,避免只驗證成功截图。每次測試固定版本並保存日志摘要,失败時寫清複現条件和回退動作。素材沒有說明的功能保持未知,不用專案热度替代證據。FlashAttention 的驗證還應檢查 dtype 與显存峰值。 失败時保留日志並回到已驗證版本。驗收時先記錄當前版本、執行環境和輸入樣本,再記錄成功輸出、錯誤信息、日志位置和回退版本。成功路径至少重複两次,确认結果不是偶然缓存。失败路径要主動製造一次網络中断、權限拒绝、资源不足或参數錯誤,观察工具是否給出可定位的提示。恢複後重新執行同一輸入,比較輸出是否完整,确认失败過程沒有留下损坏檔案、錯誤状態或泄露凭據。測試記錄只保留必要摘要,不上传账號信息、密钥、Cookie、真實用戶資料和受限內容。專案 README 沒有明确寫出的能力继续標為未知,不能用相邻專案的经驗补成結論。上線前將這些結果交給實際維護者複核,按版本發布說明逐項确认,發現差异就锁定當前版本並保留回退路径。還要在失败後恢複同一環境,比較前後輸出,确认回退路径有效。再次驗證時固定輸入和輸出,記錄指令、版本、錯誤码、日志和恢複結果。不要把一次成功執行寫成性能保證,也不要把未說明的兼容關系补成事實。继续观察资源消耗、輸出完整性和异常後的清理状態,确认結果可重複。將測試樣本、設定快照與版本發布記錄一並保存,便於後续升級時逐項比較。若環境或輸入改變,重新執行驗證,不沿用旧結論。並核對恢複後的結果與首次輸出一致,异常時保留可回退設定。完成後再决定是否采用。記錄結果。並保存測試記錄。用於後续升級比較。並确认輸出一致。

編輯結論

適合需要在 PyTorch 注意力計算中測試 IO 感知 CUDA 或 ROCm 內核、並能控製编译工具链的模型團隊;不適合沒有受支援 GPU、只想安裝纯 CPU 依赖的專案。先在隔离環境确认 `torch.__version__`、CUDA 或 ROCm 版本、GPU 架構和 `ninja --version`,再按 README 的安裝指令執行對應測試,比較正确性後才看性能。 本專案核對項目1應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記