FlashAttention-3:用异步与低精度把 attention 推向 Hopper 算力峰值

本页为第 11 篇(训练、并行与 GPU Kernel 类)。定量内容取自本地论文 PDF 11_FlashAttention-3_2407.08608.pdf(arXiv:2407.08608v2,水印逐字核验「arXiv:2407.08608v2 [cs.LG] 12 Jul 2024」,正文落款 July 16, 2024,共 22 页)并逐条标注 PDF 页码;关键数字已三轮核验(第 1-12、17-22 页曾渲染原页逐项目检;交付前又以版面保留的文本提取逐条复核,并对图 5/6/7/9 的柱状图以 400dpi 逐柱重读、修正了四处早期读图错误,见 #evidencesources/flashattention-3.evidence.json)。

快速标签与阅读说明

最后核验日期:证据完整度:论文核心数字(摘要、表 2/表 3 全量、图 5/6/7/9 柱顶印刷标注值、算法 1-3 与 §2-§5、附录 A/B/C)已回 PDF 原页逐项核验并标注页码与实验条件;两处已知口径差异(正文「740 TFLOPs/s(75%)」vs 图 5(e) 最大柱值 756;反向 1.5-1.75× 文字区间 vs 图 6(a) 短序列单点约 1.37×)逐一对照原页后在页面并排保留;图 5-7、9 为柱状图且论文无数据表,逐点数值按柱顶印刷标注转录、三处图例遮挡点已注明;tokens/s、TTFT/TPOT、显存峰值、能耗与任何成本数据论文未报告,页面写「论文未明确披露」;FP8 利用率约 59% 为编辑推算,单独标 I

证据标签图例: P=论文 R=仓库 E=外部资料 I=编辑推断

1. 摘要与一句话判断

论文元数据 P(逐字核验自 PDF 第 1-2 页;仓库另经在线核验 R
题名FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision(编辑译名:FlashAttention-3——以异步与低精度实现更快、更准的 attention)
作者 / 机构Jay Shah*、Ganesh Bikshandi*(Colfax Research,* 共同一作,第 1 页脚注 Equal contribution);Ying Zhang(Meta);Vijay Thakkar(NVIDIA / Georgia Tech);Pradeep Ramani(NVIDIA);Tri Dao(Princeton University / Together AI)(第 1 页作者行与机构角标逐字核验)
发表arXiv:2407.08608v2(PDF 左侧水印逐字核验「arXiv:2407.08608v2 [cs.LG] 12 Jul 2024」);正文落款 July 16, 2024;本地 PDF 11_FlashAttention-3_2407.08608.pdf(22 页)。PDF 内未标注任何会议/期刊录用信息,本页不作会议归属推断 P
代码论文第 2 页脚注 3 印明 https://github.com/Dao-AILab/flash-attention,以 permissive license 开源(第 2 页)P;已在线核验(2026-09-15:BSD-3-Clause、main 分支、未归档;FlashAttention-3 位于 hopper/ 子目录、自述 beta release,详见 #linksR
实现依赖使用 CUTLASS 的 WGMMA、TMA 抽象实现(§4 首句,第 9 页;参考文献 [57] 印明 github.com/NVIDIA/cutlass,第 15 页)P
实验硬件H100 80GB SXM5(700W),GPU 时钟固定 1830 MHz、每组基准重复 100 次取平均;软件为 2024 年 5 月时点最新版:CUDA 12.3、cuDNN 9.1.1.17、CUTLASS 3.5、FlashAttention 2.5.8、Triton nightly 3.0.0.post20240424212437、PyTorch 2.3.0(附录 C.1/C.2,第 21 页)P
一句话判断(编辑推断):I FlashAttention-3 的论点是:在 Hopper 上 attention 不再主要慢在「读写 HBM」,而是慢在同步等待与低吞吐的非 GEMM 操作——FA2 只有 35% 利用率、而优化 GEMM 有 80-90%(第 1 页)。解法是把 kernel 当异步系统来写:生产者 warp 用 TMA 搬数据、消费者 warp 用 WGMMA 算 GEMM,再把 softmax 拆块塞进 GEMM 的影子(2-stage 流水 + 两个 warpgroup 的 pingpong),最后用 FP8 张量核把算力天花板再翻一倍、用块量化+非相干处理兜住精度。论文口径的结果:FP16 前向对 FA2 加速 1.5-2.0×、最高 740 TFLOPs/s(75% 利用率;图 5(e) 最大柱值 756),反向 1.5-1.75×,FP8 前向接近 1.2 PFLOPs/s,FP8 误差比 per-tensor 基线低 2.6×。边界必须同时说:这是 Hopper 专属 kernel、单卡 attention kernel 级基准(2024 年 5 月软件栈),无端到端 tokens/s 或训练时间数据,FP8 仅有前向。

3 分钟速读

  1. 问题:P FlashAttention-2 在 H100 上利用率仅 35%,而优化 GEMM kernel 达 80-90%(第 1 页);部分原因是 kernel 仍用 Ampere 时代指令而非 Hopper 专用指令,更根本的是 FA2 遵循简化同步模型、设计上未显式利用异步与低精度(第 1-2 页)。ThunderKittens 与 cuDNN 9 已证明用 Hopper 指令和 tile 抽象能加速 attention(第 1 页)。
  2. 硬件基础:P Hopper 把「搬数据」和「算 GEMM」都变成异步单元——GMEM↔SMEM 拷贝由专用 TMA 承担、张量核经 warpgroup 级 WGMMA 指令暴露且可直接从 SMEM 取数(第 3-4 页);setmaxnreg 允许在 warpgroup 间重分配寄存器(第 4 页);FP8 WGMMA 吞吐为 FP16 的 2×、但只接受 k-major 操作数布局(第 4 页)。
  3. 三项技术:P ① warp 专化软件流水——生产者/消费者拆进不同 warp,隐藏访存与指令发射延迟(第 2 页);② 把 softmax 藏进 GEMM——重构 FA2 算法打断顺序依赖,2-stage 流水让「迭代 j 的第二个 WGMMA」与「迭代 j+1 的 softmax」重叠,再用 pingpong 让两个 warpgroup 互把对方的 softmax 藏进自己的 GEMM(第 2、5-7 页);③ FP8——适配 FP8 张量核(实测 TFLOPs/s 几乎翻倍),in-kernel 转置解决布局约束,块量化+非相干处理缓解精度损失(第 2、7-9 页)。
  4. 结果:P H100 SXM5 上 FP16 前向对 FA2 加速 1.5-2.0×(最高 740 TFLOPs/s = 75% 利用率)、反向 1.5-1.75×,对标准 attention 最高 3-16×;1k 及以上序列反超 cuDNN(第 2、9 页);FP8 前向接近 1.2 PFLOPs/s(第 2 页);消融显示 warp 专化+GEMM-softmax 流水把吞吐从 570 提到 661 TFLOPs(表 2,第 9、11 页);FP8 误差比基线低 2.6×(表 3,第 10、12 页)。
  5. 边界:P 全部数字是单卡 H100 SXM5、attention kernel 级基准(第 9、21 页);FP8 仅有前向(第 9 页;官方仓库当前发布范围同为 FP8 前向 R);hdim 64 的 FP8 才稳定领先 cuDNN,hdim 128/256 有因果掩码时落后(脚注 2,第 2 页);短序列收益收窄甚至为负(对 cuDNN)P(图 5-7、9)。I 端到端训练/服务收益需结合 attention 占比自测。

2. 问题背景

利用率缺口:P(第 1 页引言)FlashAttention 系列的原始思路是把 attention 全部算子融合进单个 kernel、消除中间矩阵对慢速全局内存的读写;FA2 又按序列维并行、改进占用。但 FA2 在 H100 上对优化 GEMM kernel 的利用率只有 35% vs 80-90%——IO 已经不是第一瓶颈,「怎么把 Hopper 的算力真正用起来」才是。

两个层面的原因:P(第 1-2 页)实现层:未把 Ampere 指令换成 Hopper 指令(ThunderKittens、cuDNN 9 证明 Hopper 专用指令 + tile 抽象可加速 attention 并简化实现)。算法层(论文认为更根本):FA2 遵循简化的同步模型,设计上没有显式利用异步与低精度。而 Hopper 的异步恰恰来自硬件专化——张量核(矩阵乘)、TMA(搬运)与 CUDA 核(逻辑/标量)是分工的独立单元;低精度(Hopper FP8、Blackwell FP4,承接 FP16/BF16 的路线)是同等功耗与面积下翻倍/翻两番吞吐的成熟手段(第 2 页)。

技术挑战:P(第 2 页)异步要求重叠「matmul 与 softmax」——但二者互相依赖(softmax 吃 GEMM 输出、GEMM 吃 softmax 输出),必须重构算法打断顺序依赖;低精度要求控制量化误差,尤其 LLM 存在远大于其余值的离群特征(第 2 页)。

目标工作负载与定位:P attention 是 Transformer 的核心瓶颈层,长上下文(多文档、长代码库、高分辨率多模态、长程 agent)放大其二次方代价(第 1 页)。本文的贡献面是单 GPU 上的 attention kernel 算法:前后向按 head/batch 并行(第 2-3 页),对 MQA/GQA 按 FA2 方式调整索引、不在 HBM 复制 K/V(第 6 页);对大规模训练中低精度 attention 的影响、面向 LLM 推理的优化,论文列为未来工作(第 12 页 §5)。

基线口径:P(第 9 页 §4)对比四方——PyTorch 标准 attention 实现、FlashAttention-2、使用 H100 专用指令的 FA2 Triton 版、cuDNN 针对优化的厂商 FA2 实现;库版本固定在 2024 年 5 月时点(附录 C.1,第 21 页)。I 因此论文数字回答的是「FA3 比 2024 年中的这些实现强多少」,不代表对 2026 年软件栈的领先幅度。

3. 核心机制

3.1 计算定义与 Hopper 执行模型(§2)

P(第 2-3 页 §2.1)单头 attention:S=αQK⊤、P=softmax(S)、O=PV(α 通常取 1/√d;实践中给 S 减去 rowmax(S) 防指数溢出);反向链 dV=P⊤dO、dP=dOV⊤、dS=dsoftmax(dP)、dQ=αdSK、dK=αdS⊤Q;前后向都按 head 与 batch 并行。标准 attention(materialize S/P 到 HBM)与 FlashAttention(local softmax + 融合)的对比定义见第 4 页 §2.3。

P(第 3 页 §2.2 表 1)H100 SXM5 内存层级(逐格转录):

表 1 转录:NVIDIA Hopper H100 SXM5 的线程—内存层级(P,PDF 第 3 页)
硬件层级并行代理数据域容量 @ 带宽
ChipGridGMEM(HBM)80 GiB @ 3.35 TB/s
GPCThreadblock ClustersL250 MiB @ 12 TB/s
SMThreadblock(CTA)SMEM每 SM 228 KiB;全 GPU 约 31 TB/s
ThreadThreadRMEM(寄存器)每 SM 256 KiB

P(第 3 页及脚注 4)脚注 4 说明 SMEM 带宽按「每 SM 每时钟 128 字节 × 132 SM × 1830 MHz」推算;GMEM 数据透明缓存于 L2;SMEM 是 CTA 内可编程管理的高 bank 片上缓存;每线程至多 256 个私有寄存器。线程层级:threads → warps(32 线程)→ warpgroups(4 个连续 warp)→ threadblocks(CTA)→ threadblock clusters(Hopper 新增)→ grids;同 CTA 共调度于同一 SM、同 cluster 共调度于同一 GPC。

P(第 3-4 页 §2.2)三个异步/低精度关键件:① GMEM↔SMEM 异步拷贝由专用硬件单元 TMA 承担(引 CUDA Programming Guide §7.29);② 与先前架构不同,Hopper 张量核经 warpgroup 级 WGMMA 指令暴露(引 PTX ISA §9.7.14),本身是异步的、且可直接从共享内存取操作数;③ setmaxnreg(PTX ISA §9.7.17.1)支持在 warpgroup 之间动态重分配寄存器——做 MMA 的 warp 拿到比只发 TMA 的 warp(单线程即可)更多的 RMEM。

P(第 4 页 §2.2 末段)FP8 布局约束:对 A×B⊤ 的 GEMM,操作数按外维 M/N 连续为 mn-major、按内维 K 连续为 k-major;FP16 WGMMA 的 SMEM 操作数两种都接受,FP8 WGMMA 只支持 k-major。attention 这类单 kernel 内背靠背融合 GEMM 的场景里,FP32 累加器与 FP8 操作数的布局冲突是调用依赖 FP8 WGMMA 的障碍。

3.2 warp 专化与前向算法(§3.1 算法 1)

P(第 4-5 页)CTA 视角:producer warpgroup 用 setmaxnreg 释放寄存器,经 TMA 把 Q_i 与各 K_j、V_j 从 HBM 装入 s-stage 环形 SMEM buffer 并 commit 通知;consumer warpgroup 用 setmaxnreg 重分配寄存器,片上初始化 O_i=0、ℓ_i=0、m_i=-∞,主循环为 SS-GEMM(S=Q_iK_j⊤)→ rowmax/在线 softmax(P̃=exp(S−m_i)、ℓ 更新)→ 等待 V_j → RS-GEMM(O_i=diag(exp(m_old−m_i))⁻¹O_i+P̃V_j)→ 释放缓冲 stage;循环结束后 O_i=diag(ℓ_i)⁻¹O_i、L_i=m_i+log(ℓ_i) 写回 HBM。SS/RS 前缀表示第一个操作数来自 SMEM/寄存器堆;TMA 发射不阻塞其他 load(异步),producer 主循环前 s 次迭代无需等待。

P(第 6 页)MQA/GQA 沿用 FlashAttention-2 的做法调整张量索引,避免 K、V 在 HBM 中复制。

3.3 pingpong 调度:把指数藏进对方 warpgroup 的 GEMM(§3.1)

P(第 5-6 页、图 1、脚注 5)动机量化:H100 SXM5 FP16 matmul 吞吐 989 TFLOPS,而指数类特殊函数只有 3.9 TFLOPS(脚注 5:16 ops/SM/时钟 × 132 SM × 1830 MHz);FP16 前向 hdim 128 时 matmul FLOPS 是指数运算的 512×、吞吐却只差 256×,故指数可占用相对 matmul 50% 的周期;FP8 下更糟(matmul 翻倍、指数不变)。方法:指数在独立硬件单元(multi-function unit)上执行,用 bar.sync 同步屏障强制 warpgroup 1 的 GEMM(GEMM1=本轮 PV、GEMM0=下一轮 QK⊤)先于 warpgroup 2 的 GEMM 调度,使 warpgroup 1 的 softmax 落在 warpgroup 2 的 GEMM 期间,然后角色互换(「pingpong」)。论文自述实际效果不如图示干净,但一般有收益:FP16 前向 hdim 128、seqlen 8192 从 570 提到 620-640 TFLOPS。

3.4 2-stage GEMM-softmax 流水与 3-stage 的负结果(§3.2)

P(第 6-7 页、图 2、算法 2)算法 1 的 wait 语句使 softmax 与 GEMM 串行;2-stage 流水在寄存器中保留额外缓冲跨迭代打断依赖——迭代 j 的第二个 WGMMA(O_i+=P̃_cur·V_{j−1},commit 但不等待)与迭代 j+1 的 softmax 重叠(算法 2 行 11/13),S_next 复制为 S_cur 后进入下一轮。代价:每线程块额外约 Br×Bc×sizeof(float) 的寄存器(S_next),与「加大 tile」这一同样吃寄存器的优化相互制约,应按 profiling 权衡。

P(第 7 页、第 19 页附录 B.2)编译器重排与 SASS 验证:伪代码是理想化顺序,NVCC 常重排指令;SASS 分析显示编译器按预期生成重叠代码——softmax 被重排到最前(先于第一个 WGMMA);第一个 WGMMA 与 softmax 及 S 的 FP32→FP16 转换交错(WGMMA 与非 WGMMA 并行);exp2/row_sum/O rescaling/FP32→FP16 彼此交错;第二个 WGMMA 不与其他指令重叠(符合预期)。结论:「SASS shows that the 2-stage pipelining idea works as expected」。

P(第 7 页、第 20-21 页附录 B.3)3-stage 流水(想并行「迭代 j+2 的第一个 WGMMA、迭代 j+1 的 softmax、迭代 j 的第二个 WGMMA」)实测更差:① 编译器未按预期重叠——SASS 显示只有第一个 WGMMA 与 softmax 重叠,原因不明;② 寄存器需求更多(理论需额外存 P̃_i 与 scale_o,共 Br×Bc×sizeof(input_data_type)+Br×sizeof(float)),迫使选择更小的 block size。

3.5 FP8 改造:布局变换、块量化与非相干处理(§3.3)

P(第 7-8 页、图 3/图 4、脚注 7/8/9)布局变换:输入 Q/K/V 通常按 head 维连续,而第二个 GEMM 的 FP8 WGMMA 要求 V 瓦片按 sequence-length 维连续(k-major),且 TMA load 不能改变连续维。三个选项——(1a) 把转置融合进前趋步骤(如 rotary embedding)的 epilogue:难以做成标准库;(1b) 独立前处理转置 kernel:在推理这类访存受限场景太浪费;(2) 选定方案:SMEM 装入后用 LDSM/STSM(warp 级 128 字节粒度)在 producer warpgroup 内做 in-kernel 转置,首轮之后下一个 V 瓦片的转置可藏进涉及前一 V 与当前 K 的两个 WGMMA 的影子中。此外 FP8 WGMMA 的 FP32 累加器寄存器布局与操作数 A 布局不同,用 byte permute 指令把第一个 WGMMA 的累加器按 {d0 d1 d4 d5 d2 d3 d6 d7} 重排(每 8 字节重复)——逻辑上等价于对 P 瓦片的列置换(如列 0189 变为前四列),并让 in-kernel 转置写出匹配的 V 瓦片行排列(脚注 9:该自由度免除了 shuffle 指令换寄存器属主)。

P(第 8 页)块量化:FP8 e4m3 只有 3 位尾数、4 位指数,误差高于 FP16/BF16;大模型的离群特征使量化更难,常用做法是 per-tensor scaling(每张量一个标量)。块量化改为每块一个标量——对 Q/K/V 按 Br×d 或 Bc×d 分块分别量化;该量化可融合到 attention 前的操作(如 rotary embedding)里、无额外减速(RoPE 受显存带宽限制),且 FlashAttention-3 天然按块运算,可对 S 的每个块做相应缩放、零计算成本。

P(第 9 页)非相干处理:量化前给 Q、K 各乘一个随机正交矩阵 M——因 MM⊤=I,(QM)(KM)⊤=QK⊤ 不改变输出;QM/KM 的每个元素成为 Q/K 元素的随机求和,从而摊平离群、降低量化误差。实践中循 QuIP/QuIP# 取 M=随机 ±1 对角矩阵与 Hadamard 矩阵之积,乘法 O(d log d) 而非 O(d²),且可与 rotary embedding 融合、零额外计算成本。论文验证两项技术合计把 FP8 数值误差最多降 2.6×(§4.3,表 3)。

控制面 / 数据面职责划分(编辑推断):I 论文未使用「控制面/数据面」术语。本页划分:控制面=流水线对象与屏障同步(s-stage 缓冲的 commit/wait、bar.sync、pingpong 的角色切换)、warpgroup 角色分配与寄存器预算(setmaxnreg)、tile/流水深度的 profiling 权衡;数据面=TMA 装载、WGMMA 的 SS/RS GEMM、在线 softmax(含 multi-function unit 上的指数)、in-kernel V 转置与 byte permute、块缩放。该划分只影响叙述,不改变论文事实。

4. GPU/系统数据路径

FlashAttention-3 数据路径图:HBM 中的 Q、K、V 经生产者 warpgroup 的 TMA 异步装载进入 s-stage 环形共享内存缓冲,消费者 warpgroup 在片上做 SS-GEMM(S=Q·K 转置)、在线 softmax 与 RS-GEMM(O 更新)并释放缓冲 stage;2-stage 软件流水把迭代 j 的第二个 WGMMA 与迭代 j+1 的 softmax 重叠,pingpong 调度让两个消费者 warpgroup 互把 softmax 藏进对方 GEMM(矩阵乘 989 对特殊函数 3.9 TFLOPS,FP16 前向 hdim 128、seqlen 8192 从 570 提到 620-640 TFLOPS);尾注把 O 除以 l、算出 L=m+log(l) 写回 HBM,反向另有 dQ-writer warp 用信号量原子累加 dQ。右侧面板为 FP8 改造(FP8 WGMMA 仅 k-major,用 LDSM/STSM 在 kernel 内转置 V 瓦片,byte permute 重排累加器为 d0 d1 d4 d5 d2 d3 d6 d7,块量化与非相干处理可融合进 rotary embedding)、论文指出的风险点(寄存器压力与 tile 制约、3-stage 负收益、FP8 短序列加因果掩码落后 cuDNN、FP8 仅前向)与引用数字必读的完整实验条件。
图 1:FlashAttention-3 前向(FP16 与 FP8)在 Hopper 上的端到端数据路径,附反向要点。实线=运行时数据流,虚线=软件流水/同步控制;深蓝=条件/事实面板,青=GPU 计算,紫=HBM/显存,琥珀=论文指出的风险点;编号 ①-⑤ 对应下方文字序列。依据论文算法 1/2、图 1-4 与 §2-§4(arXiv:2407.08608v2)绘制 P;编号与面板编排为本页编辑标注 I

端到端文字序列(与图中编号一致)

  1. ① HBM 驻留与并行划分:Q_i(Br×d)、K/V(N×d,按 Bc 分块)驻留 HBM;前向按 batch×head×query 序列长度并行,每个 CTA 处理一个 Q 块产出对应 O 块;MQA/GQA 调整索引、K/V 不复制P(第 4-6 页)。
  2. ② 生产者 warpgroup:setmaxnreg 释放寄存器 → TMA 异步装载 Q_i、K_j、V_j 到 s-stage 环形 SMEM 缓冲 → commit 通知;TMA 发射不阻塞其他装载,前 s 次迭代无需等待P(第 3-5 页)。
  3. ③ 消费者 warpgroup 主循环:setmaxnreg 重分配寄存器 → SS-GEMM(WGMMA 直读 SMEM)→ 在线 softmax(指数在 multi-function unit,中间量保 FP32)→ 等 V_j → RS-GEMM → 释放缓冲 stageP(第 5 页算法 1)。
  4. ④ 软件流水与调度:2-stage 流水重叠「迭代 j 的第二个 WGMMA」与「迭代 j+1 的 softmax」(额外寄存器 S_next);pingpong 用 bar.sync 让两个消费者 warpgroup 交替 GEMM/softmax,把 3.9 TFLOPS 的指数运算藏进 989 TFLOPS 的 matmul 影子里;SASS 证实 2-stage 按设计重叠、3-stage 为负收益P(第 5-7、19-21 页)。
  5. ⑤ 尾注与写回:O_i=diag(ℓ_i)⁻¹O_i、L_i=m_i+log(ℓ_i) 写回 HBM;反向(附录 B.1):前处理 kernel 先算 D=rowsum(dO∘O),第三个角色 dQ-writer warp 用信号量把各线程块的 dQ 局部块原子累加进全局 dQ,避免阻塞其余 warp 的下一个 matmulP(第 5、18 页)。FP8 时在 ③ 前后叠加 in-kernel V 转置、byte permute 与块缩放(见 #mechanism 3.5)P(第 7-9 页)。
路径上的关键配置与事实(机制口径,非性能结论;性能结论见 #experiments
事实/数值对象与条件论文定位
生产者=TMA 装载(单线程发射即可),消费者=WGMMA 计算;setmaxnreg 把寄存器从生产者让给消费者warp 专化分工(Hopper 硬件前提:TMA/WGMMA 异步、setmaxnreg)P 第 3-5 页 §2.2/§3.1
s-stage 环形 SMEM 缓冲;SS/RS 前缀=首操作数来自 SMEM/RMEM;commit-wait 管理依赖每 CTA 的前向主循环(算法 1)P 第 4-5 页
softmax 中间量(含 rescaling)保 FP32;指数在 multi-function unit 执行数值与吞吐的交叉点(FP16 误差同 FA2、优于标准实现)P 第 2、5、12 页
2-stage 流水额外寄存器 ≈ Br×Bc×sizeof(float)/线程块;3-stage 还需 Br×Bc×sizeof(input)+Br×sizeof(float) 且更慢流水深度 vs 寄存器 vs tile 的三角权衡P 第 7、20-21 页
FP8:V 瓦片 in-kernel 转置(LDSM/STSM,128B 粒度);累加器 byte permute {d0 d1 d4 d5 d2 d3 d6 d7};块缩放零计算成本;Hadamard 乘 O(d log d) 可融合 RoPEFP8 前向专用路径(第二 GEMM 的 k-major 约束)P 第 7-9 页 §3.3
反向新增 dQ-writer warp(信号量原子累加)+前处理 D=rowsum(dO∘O)backward 的第三个角色(算法 3)P 第 18 页附录 B.1
kernel 内 KV 缓存管理、请求调度、分布式并行:不在论文机制范围内与服务层/集群层的边界(页面不补写)P(论文范围即单 GPU kernel 算法,§1/§5)
P 口径提醒(读数方式):论文性能数字的完整条件是:H100 80GB SXM5、时钟固定 1830 MHz、100 次平均、seqlen 512-16k(总 token 16k)、hidden 2048、hdim 64/128/256、FP16/BF16 前反向与 FP8 前向、对 FA2 2.5.8 / FA2-Triton nightly / cuDNN 9.1.1.17 / PyTorch 2.3.0(2024-05 时点)的 attention kernel 级 TFLOPs/s(第 9、21 页)P。引用本页任何吞吐数字必须携带这些条件,且不可与其他论文的数字横向比较。

5. 架构权衡

6. 云上部署映射

以下映射为厂商中立示例;具体产品命名/规格仅作说明并标 E,以厂商当时目录为准,未逐一在线核验。论文事实单独标注 P,仓库现状标注 R

FlashAttention-3 组件 → 云上资源映射
论文需求云上映射(示例)证据与说明
计算:H100 80GB SXM5(Hopper 代际,700W);算法结论限于具备足够异步与低精度能力的架构(脚注 1) E GPU 实例选型按「Hopper 代际(H100 80GB 类)优先」;FP8/因果掩码/短序列组合的适用性在目标卡上复测后再放大范围 硬件前提为论文事实 P(第 2、9、21 页;README 另称需 H100/H800、CUDA ≥ 12.3 R);实例选型为云实践 E
交付形态:FA3 位于官方仓库 hopper/ 子目录、以 flash-attn-3 包名安装(beta),依赖 CUDA/CUTLASS 工具链 E 容器镜像内置固定版本的 CUDA/cuDNN/CUTLASS/flash-attn-3;镜像 digest 与驱动/CUDA 版本矩阵纳入节点镜像管理 仓库结构与包名 2026-09-15 在线核验 R;论文基准用 CUDA 12.3 + CUTLASS 3.5 P(第 21 页);容器化落位为云实践 E
框架接入:论文计划与 PyTorch、Hugging Face 库集成(计划语气) E 生产训练/推理框架若已内置等效 attention kernel,优先评估内置路径;自装 FA3 作对照或专项优化 「plan to integrate」为论文原文 P(第 2 页;论文未给出集成时间表);当前集成状态需按当时框架文档确认 E,选型判断 I
容量规划变量:attention kernel 时间(前向 FLOPs=4·seqlen²·hdim·头数,causal ÷2;反向 ×2.5)× 实测利用率 E 容量模型按 kernel 级吞吐折算单步耗时;与并行策略(TP/SP/上下文并行)与 batch 的组合关系需另行建模 FLOPs 口径为论文事实 P(第 9 页);kernel 与端到端之间缺 attention 占比数据(论文未披露)I;容量建模为云实践 E
精度路线:FP16(前后向,误差同 FA2)与 FP8(仅前向,块量化+非相干处理,误差 2.6× 于基线) E 训练作业默认 FP16/BF16 路径;FP8 路径按「无因果/大序列/hdim 64 优先」灰度,上线前跑数值回归 各精度适用面为论文事实 P(第 2、9-12 页、脚注 2);灰度策略为工程建议 I
可观测:kernel 级 TFLOPs/s、数值误差(FP64 参照)、时钟/功耗(1830 MHz 固定时钟是论文基准前提) E 性能回归接入 kernel 基准脚本(仓库含 benchmark_attn.py、benchmark_flash_attention_fp8.py);监控时钟策略与数值抽样 脚本文件名 2026-09-15 在线核验 R;固定时钟与 100 次平均口径 P(第 21 页);监控设计 I
放置要点(编辑推断):I ①FA3 的价值集中在「Hopper 卡的算力兑现」——对训练吞吐瓶颈在 attention 的作业(长上下文、大 hdim)收益最直接;②它是 kernel 层替换,训练/推理框架接入与回退(FA2)成本低,但收益会随框架内置实现演进被稀释;③官方 FA3 仍是 beta 定位(2026-09-15 README R),生产引入按「pin 版本 + 双基线回归」对待,不要当稳定 API 依赖。

7. 成本 / 性能 / SLO

7.1 指标口径(论文使用的)

P(第 9、21 页)效率主指标=attention kernel 运行时换算的 TFLOPs/s:前向 FLOPs = 4·seqlen²·head dimension·number of heads(causal 除以 2),反向 = 前向 × 2.5(前向 2 个 matmul、反向因重算共 5 个);H100 SXM5 时钟固定 1830 MHz(989 TFLOPS FP16 理论峰值所用时钟)、重复 100 次取平均。精度指标=对 FP64 参照实现的 RMSE(合成分布,见 #experiments 表 3)。TTFT/TPOT/tokens/s、显存峰值、能耗(除标注 700W TGP)、成本:论文未明确披露。

7.2 主结果上下文(利用率的完整口径)

P(第 9 页)FP16 前向最高 740 TFLOPs/s = 989 的 75%;I 图 5(e) 最大柱值为 756(约 76%),与正文 740 为图/文舍入级出入,页面并排保留。FP8「接近 1.2 PFLOPs/s」:论文未给出 FP8 官方利用率;I 若按「FP8 峰值 = 2×989 = 1978 TFLOPS」与图 7(a) 16k 柱值 1171 TFLOPs/s 推算,约 59%——此为编辑推算,非论文数字。消融口径:570(无两项改进)→ 661(完整 FA3)TFLOPs,中间态 582/570 见表 2。

7.3 容量与成本公式(参数化,编辑推断)

单次 attention kernel 时间 ≈ FLOPs ÷ 实测 TFLOPs/s
 (前向 FLOPs = 4·seqlen²·hdim·头数,causal ÷2;反向 ×2.5;TFLOPs/s 取目标形状实测值)
attention 占单步比例 ≈ attention kernel 时间和 ÷ 单步总时间(论文未披露,需实测)
端到端收益 ≈ 1 ÷ (1 − attention占比 × (1 − 1/kernel加速比))(占比例已知时)
成本影响 ≈ (1 − 1/端到端收益)× 作业 GPU 时成本;单价按当时云目录记录查询日期

I 公式中可由论文支撑的量:kernel 加速比(1.5-2.0× 前向、1.5-1.75× 反向,带完整条件)与 FLOPs 口径(第 9 页);attention 占比、并行策略交互、单价与作业画像需按部署实测填写,本页不给出伪精确数字。E 云单价随时段/区域/折扣变化,核算时以查询当时厂商目录为准并记录日期。

7.4 敏感项与数据缺口

8. 安全与可运维性

8.1 安全

8.2 可运维性(含恢复与回滚)

9. 适用 / 不适用场景

适用(触发条件 + 理由)

  1. Hopper(H100 类)上、序列 ≥1k 的 Transformer 训练/前向,瓶颈在 attention。触发:profile 显示 attention kernel 占比高、GPU 利用率低。理由:FP16 前向对 FA2 1.5-2.0×、1k 及以上反超 cuDNN,hdim 128 无因果 16k 达 648 TFLOPs/s(vs FA2 370)P(第 2、9 页;图 5c)。
  2. 反向同样瓶颈的训练作业。触发:backward 的 attention 耗时显著。理由:FP16 反向 1.5-1.75×(对 FA2);16k 锚点 hdim 128:FA3 561 vs cuDNN 516 vs FA2 322 TFLOPs/sP(第 2、9 页;图 6b,16k 读数)。
  3. 需要可审计、可修改 kernel 的大模型团队。触发:闭源厂商库(cuDNN)无法满足定制/合规需求。理由:permissive license 开源(论文脚注 3 P;BSD-3-Clause 已核验 R),实现基于 CUTLASS、算法有完整伪代码与 SASS 级分析P(第 4-9、19-21 页)。
  4. 存在离群特征、想上 FP8 前向的作业。触发:hdim 64 或无因果掩码、序列较长的前向。理由:内置块量化+非相干处理,误差比 per-tensor FP8 基线低 2.6×;hdim 64 的 FP8 领先 cuDNN(16k:613 vs 438 TFLOPs/s)P(第 8-9、12 页;脚注 2;图 9a)。

不适用(触发条件 + 理由)

  1. 非 Hopper GPU(Ampere 及更早、或其他厂商卡)。触发:目标硬件无 TMA/warpgroup WGMMA/setmaxnreg。理由:全部机制绑定 Hopper 特性(第 3-4 页 §2.2);脚注 1 的「算法 operative」指思想可迁移、非 kernel 可直接运行PI 此类硬件沿用 FA2/等效实现。
  2. 短序列(512 档)前向的绝对吞吐优先场景。触发:seqlen 512、hdim 128、无因果。理由:图 5(c) 512 处 FA3 467 低于 cuDNN 497 TFLOPs/s;反向 hdim 64 512 处对 FA2 仅约 1.37×(272/198,读图除法 I),低于文字区间 1.5-1.75× 的下沿P(图 5c、6a;区间为第 9 页作者口径)。
  3. 需要 FP8 反向的作业。触发:训练希望前后向都走 FP8。理由:论文仅报告 FP8 前向基准(第 9 页 §4.1)P;官方仓库当前发布范围同为「FP16/BF16 前向+反向、FP8 前向」R(2026-09-15 README)。
  4. hdim 128/256、带因果掩码的 FP8 服务路径。触发:decode/prefill 混合且以因果 FP8 attention 为热点。理由:脚注 2 明确 hdim 128/256 有因果时落后 cuDNN;图 7(b) 16k 处 FA3 1024 vs cuDNN 1099 TFLOPs/s(2k-16k 逐柱落后)P(第 2 页脚注 2;图 7b)。FP8 短序列+因果的弱势与「FP8 kernel 无 persistent kernel/负载均衡」有关(脚注 10)P
  5. 把 kernel 倍数直接当端到端收益的预期管理。触发:以「训练时间缩短 2×」立项。理由:论文无端到端数据(tokens/s、总训练时间未报告)PI 实际收益 = kernel 加速 × attention 占比,须先实测占比。

10. 实验与指标

10.1 实验设置与口径 P(第 9、21 页)

设置与指标口径(页码均已核验)
硬件H100 80GB SXM5(700W);GPU 时钟固定 1830 MHz(计算 989 TFLOPS FP16 理论峰值所用时钟);每组基准重复 100 次取平均 P(第 21 页附录 C.1)
软件(2024-05 时点)CUDA 12.3、cuDNN 9.1.1.17、CUTLASS 3.5、FlashAttention 2.5.8、Triton nightly 3.0.0.post20240424212437、PyTorch 2.3.0 P(第 21 页)
负载FP16:seqlen 512、1k、…、16k,batch 使总 token 数 = 16k;hidden dim 2048,hdim 64/128/256 对应 32/16/8 头;有无 causal mask。FP8 前向:seqlen 512、1024、2048、4224、8448、16896,≥4k 时对齐 132(SM 数)避免 wave quantization P(第 9 页 §4.1、第 21 页 C.2)
FLOPs 口径前向 = 4·seqlen²·head dimension·number of heads(causal ÷2);反向 = 前向 ×2.5(前向 2 个 matmul、反向因重算 5 个)P(第 9 页)
基线PyTorch 标准 attention、FlashAttention-2、FA2 Triton 版(用 H100 专用指令)、cuDNN 厂商 FA2 实现 P(第 9 页 §4)
消融与误差配置消融:非因果 FP16,{batch, seqlen, nheads, hdim} = {4, 8448, 16, 128}(第 9 页 §4.2)。数值误差:Q/K/V ~ N(0,1) + N(0,100)·Bernoulli(0.001)(0.1% 元素叠加标准差 10 的独立项,模拟 LLM 离群),对 FP64 参照测 RMSE(第 10-11 页 §4.3)

10.2 消融(表 2 全量转录)

表 2 转录:Pipelining ablation(P,PDF 第 11 页;非因果 FP16,{batch, seqlen, nheads, hdim} = {4, 8448, 16, 128})
配置时间(ms)TFLOPs/s
FlashAttention-3(完整)3.538661
无 GEMM-Softmax 流水(保留 warp 专化)4.021582
有 GEMM-Softmax 流水(无 warp 专化)4.105570

P(第 9 页 §4.2)结论句:两项算法改进合计把吞吐从 570 提到 661 TFLOPs。I 读法:warp 专化单独贡献很小(570→582,约 2%),大头来自「在 warp 专化之上叠加 GEMM-softmax 流水」(582→661,约 13.6%)——两项是互补而非独立可加。

10.3 数值误差(表 3 全量转录)

表 3 转录:FP16 与 FP8 (e4m3) 的数值误差 RMSE(P,PDF 第 12 页;FP64 为参照;输入为含离群的合成分布)
精度配置RMSE
FP16标准 attention(Baseline)3.2e-4
FP16FlashAttention-21.9e-4
FP16FlashAttention-31.9e-4
FP8Baseline(per-tensor scaling、FP32 累加器、FP16 softmax 中间量)2.4e-2
FP8FlashAttention-3(块量化+非相干处理)9.1e-3
FP8FA3,去掉块量化9.3e-3
FP8FA3,去掉非相干处理2.4e-2

P(第 10-12 页 §4.3)结论:FP16 下 FA2 与 FA3 的 RMSE 均比标准实现低 1.7×(softmax 中间量保 FP32);FP8 下 FA3 比基线准 2.6×。I 消融读法:该合成分布下「非相干处理」是主效(去掉即回到 2.4e-2),块量化单独贡献很小(9.1e-3→9.3e-3);两项技术是配套使用关系。

10.4 前向/反向吞吐(图 5/6/7/9 柱顶标注转录)

P(第 10-11、22 页)以下数值为图面柱顶印刷标注(论文无数据表);单位 TFLOPs/s;OOM=该设定下超显存。三处标注印在图例框之后(部分遮挡),已注明;未标注处不补写。

图 5 转录:FP16/BF16 前向(H100 80GB SXM5)(P,PDF 第 10 页;图 5(c) hdim 128 无因果、图 5(e) hdim 256 无因果)
子图实现5121k2k4k8k16k
(c) hdim 128标准 attention74100119133139OOM
FlashAttention-2309350362368370370
Triton323372389389392395
cuDNN497574*617609600595
FlashAttention-3467565*625638646648
(e) hdim 256FlashAttention-2275313321323324326
cuDNN470546580581580581
FlashAttention-3482627*707736746756

*=标注印在图例框后、部分遮挡的读数(5c 1k 的 cuDNN 574 与 FA3 565;5e 1k 的 FA3 627),引用时注明。I 图 5(e) 的 FA3 最大柱值 756(16k)与正文「up to 740 TFLOPs/s(75%)」为图/文舍入级出入,并排保留两处口径。

图 6 转录:FP16/BF16 反向、无因果(H100 80GB SXM5)(P,PDF 第 11 页)
子图实现5121k2k4k8k16k
(a) hdim 64标准 attention6876889295OOM
FlashAttention-2198238264279287291
cuDNN266348395417432433
FlashAttention-3272363422453472474
(b) hdim 128标准 attention104131159174181OOM
FlashAttention-2214260291310318322
cuDNN305408465499518516
FlashAttention-3316424501542559561

P(第 2、9 页)文字口径:反向对 FA2 加速 1.5-1.75×。I 读图补充:该区间是作者对中长序列的概括;hdim 64 的 512 档单点为 272/198 ≈ 1.37×(读图除法),低于区间下沿——引用区间时应带序列长度条件。

图 7 转录:FP8 前向、hdim 256(H100 80GB SXM5)(P,PDF 第 11 页;(a) 无因果、(b) 有因果;图 7 与图 9 的 (e)/(f) 面板相同)
子图实现5121k2k4k8k16k
(a) 无因果Triton529664766854897903
cuDNN6868781001108711221139
FlashAttention-351074493196611511171
(b) 有因果Triton299425520591628663
cuDNN304449768101510561099
FlashAttention-33295217038569601024

P(第 2 页脚注 2、第 11 页)读法:无因果时 FA3 仅在 8k/16k 反超 cuDNN(1151/1171 vs 1122/1139);有因果时 512/1k 处 FA3 领先(329 vs 304、521 vs 449),2k 起落后,16k 为 1024 vs 1099——与脚注 2「hdim 128/256:无因果打平、有因果落后」的整体口径一致,但「打平/落后」的边界随序列长度移动,引用时应带形状条件。

图 9 转录:FP8 前向、hdim 64(H100 80GB SXM5)(P,PDF 第 22 页;(a) 无因果、(b) 有因果)
子图实现5121k2k4k8k16k
(a) 无因果Triton392444473499506511
cuDNN344398447413431438
FlashAttention-3240396462568596613
(b) 有因果Triton234325393440459481
cuDNN194258317324464483
FlashAttention-3164244369475533572

P(第 2 页脚注 2、第 12 页脚注 10)读法:hdim 64 是 FA3 FP8 相对 cuDNN 优势最稳的形状(16k 无因果 613 vs 438、有因果 572 vs 483,与脚注 2「hdim 64 领先」一致);但短序列+因果掩码端 FA3 落后(512 处 164 vs 194),论文以「FP16 FA3 有 persistent kernel 与负载均衡而 FP8 没有」部分解释(脚注 10)。I 图 9(a) 的 cuDNN 序列在 4k 处(447→413)不单调,为图面印刷标注照录,页面不作解释性修匀。

各结果条件字段完整性(缺项一律显式标注)
实验硬件精度批量/负载基线定位
前向吞吐(图 5)H100 80GB SXM5、1830 MHzFP16/BF16seqlen 512-16k、总 token 16k、hdim 64/128/256、±causal标准/FA2/Triton/cuDNNP 第 10 页
反向吞吐(图 6)同上FP16/BF16同上(图示为无因果)标准/FA2/cuDNNP 第 11 页
FP8 前向(图 7/9)同上FP8 (e4m3)seqlen 512-16896、≥4k 对齐 132;仅前向Triton/cuDNNP 第 11、22 页
消融(表 2)同上FP16 非因果{4, 8448, 16, 128}自身消融P 第 9、11 页
数值误差(表 3)论文未明确披露(GPU 型号未注明)FP16 与 FP8 (e4m3)合成分布 N(0,1)+N(0,100)·Bernoulli(0.001)FP64 参照;FP8 基线为 per-tensorP 第 10-12 页
公平性限制(引用前必读):P ①全部性能数字是单卡 H100 80GB SXM5、attention kernel 级基准(固定 1830 MHz、100 次平均),不可外推为端到端训练/服务收益,不可与本站其他论文的数字直接比较;②基线为 2024 年 5 月库版本(cuDNN 9.1.1.17、FA 2.5.8、PyTorch 2.3.0 等),绝对数字不代表当前软件栈;③「领先/落后 cuDNN」随 hdim、因果掩码、序列长度、精度四个维度变化(脚注 2 + 图 5/7/9),不得摘取单点下总体结论;④图 5/6/7/9 无数据表,数值为柱顶印刷标注转录,三处图例遮挡点已注明;⑤正文 740(75%)与图 5(e) 756 的图文出入已并排保留,引用任一须注明出处口径。

10.5 建议复现步骤(编辑推断)

  1. I 取官方仓库 hopper/ 子目录(flash-attn-3 包;已核验归属/许可,pin commit);基准脚本 benchmark_attn.py 与 benchmark_flash_attention_fp8.py 在仓库内R(2026-09-15 核验)。
  2. I 硬件与软件对齐:H100 80GB SXM5、CUDA ≥ 12.3(README 推荐 12.8 以获最佳性能R);论文口径用固定 1830 MHz 时钟 + 100 次平均P(第 21 页)。
  3. I 复现表 2 消融:非因果 FP16、{batch, seqlen, nheads, hdim} = {4, 8448, 16, 128},分别跑完整版/去流水/去 warp 专化三个配置P(第 9 页)。
  4. I 复现表 3 数值协议:FP64 参照 + N(0,1)+N(0,100)·Bernoulli(0.001) 合成输入,再换业务真实激活分布各测一遍(论文只验证合成分布)P(第 10-11 页)。
  5. I 目标业务实测:以真实 seqlen/hdim/因果组合测「FA2 vs FA3 vs 框架内置」kernel 时间与端到端步时,记录 attention 占比,再决定启用范围(FP16 全量、FP8 按 8.1/9 节条件灰度)。

12. 给架构师的决策清单

I 以下为落地前的勾选项;标注(P)的条目对应论文证据,(R)对应仓库核验项,其余为工程判断。

13. 证据台账

下表为核心结论的证据映射;逐条引文与核验记录见构建文件 sources/flashattention-3.evidence.json(35 条,EV-01~EV-35)。核验日期为

核验范围声明:三轮核验。第一轮:pdftotext -layout 全文提取(22 页)作检索索引。第二轮:渲染第 1-12、17-22 页共 18 页逐页目检,关键数字页以 300-500dpi 局部放大逐柱核对。第三轮(同日,页面交付前):22 页逐页重新提取并逐条核对本台账全部定位与引文;对图 5(c)/5(e)/6(a)/6(b)/7(a)/7(b)/9(a)/9(b) 以 400dpi 逐柱复核柱顶标注,修正了第一轮的四处读图错误(图 6a FA3 476→474、cuDNN 474→433;图 6b cuDNN 510→516;图 9a/9b cuDNN 458→438/483)与一处漏读(图 5e 1k 的 FA3 627,标注印在图例后),并修正两处页码定位(EV-23、EV-31);表 2/表 3 与全部正文/算法/脚注引文经第三轮逐字复核无误。第 13-16 页为参考文献(不承载关键数字),经文本交叉核对。官方仓库与 v2.5.8 tag、CUTLASS 仓库于 2026-09-15 经 GitHub API 只读复核。
关键结论 → 证据级别 → 定位 → 核验状态
关键结论级别定位(PDF 页码)核验状态
题名/作者(共同一作 Shah 与 Bikshandi)/机构/落款 July 16 2024/arXiv v2 水印/22 页;PDF 内无会议归属信息P第 1 页题名块、作者行、脚注、水印;pdfinfo已核验(原页目检,三轮一致)
摘要级结论:FA2 仅 35% 利用率;三项技术;1.5-2.0×、FP16 最高 740 TFLOPs/s(75%)、FP8 接近 1.2 PFLOPs/s、FP8 误差低 2.6×P第 1 页摘要已核验;740 与图 5(e) 756 的图文出入已并排保留
问题背景:35% vs 80-90%;实现层(Ampere→Hopper 指令)与算法层(同步模型)归因;ThunderKittens/cuDNN 9 先例;低精度路线(FP8/FP4)P第 1-2 页引言已核验(原页目检)
三项贡献:warp 专化异步;softmax 藏进异步块级 GEMM(重构算法打断依赖);FP8 张量核适配+块量化/非相干处理P第 2 页贡献列表已核验
验证口径与脚注:前向 1.5-2.0×/反向 1.5-1.75×;脚注 2(FP8 对 cuDNN 按 hdim/因果分情况);脚注 3(仓库 URL);脚注 1(Hopper 语境)P第 2 页末两段与脚注 1/2/3已核验(脚注逐字)
计算定义与反向链(S=αQK⊤ 等);H100 内存层级表 1(GMEM/L2/SMEM/RMEM 四级,含脚注 4 推算);线程层级;TMA/WGMMA/setmaxnreg;FP8 只支持 k-majorP第 2-4 页 §2已核验(表 1 逐格、公式逐项)
算法 1:生产者 TMA 装载+s-stage 环形 SMEM;消费者 SS-GEMM→在线 softmax→RS-GEMM;O/L 写回;MQA/GQA 不复制 K/VP第 4-6 页 §3.1、算法 1已核验(算法逐行)
pingpong:989 vs 3.9 TFLOPS(脚注 5);512×/256×/50%;bar.sync 角色互换;570→620-640(hdim128/8192)P第 5-6 页、图 1、脚注 5已核验
2-stage 流水(算法 2 行 11/13 重叠);S_next 寄存器代价;SASS 四条观察;3-stage 负收益(编译器不配合+寄存器更多)P第 6-7、19-21 页 §3.2、附录 B.2/B.3已核验(四条观察逐字)
FP8 布局改造:k-major 约束与三选项;LDSM/STSM in-kernel 转置;byte permute {d0 d1 d4 d5 d2 d3 d6 d7}≡P 列置换;脚注 8/9P第 7-8 页、图 3/4、脚注 7/8/9已核验(序列与选项逐字)
块量化(Br×d/Bc×d 分块缩放、可融合 RoPE、零计算成本)与非相干处理(正交矩阵不变输出;±1 对角×Hadamard,O(d log d))P第 8-9 页 §3.3已核验
§4 开头:CUTLASS 实现;四方基线;对 FA2 最高 2.0×、对 FA2-Triton 1.5×;740 TFLOPs/s=75%P第 9 页 §4已核验
基准设置:H100 SXM5、1830 MHz 固定时钟、100 次平均;seqlen/batch/hdim 口径;FLOPs 公式(前向 4·s²·d·h、causal÷2、反向×2.5);FP8 序列与 132 对齐P第 9 页 §4.1、第 21 页 C.1/C.2已核验(逐项)
表 2 消融全量(661/582/570 TFLOPs;3.538/4.021/4.105 ms)P第 9 页 §4.2;第 11 页表 2已核验(逐格)
表 3 数值误差全量(FP16 3.2e-4/1.9e-4/1.9e-4;FP8 2.4e-2/9.1e-3/9.3e-3/2.4e-2);合成分布 N(0,1)+N(0,100)·Bernoulli(0.001);1.7×/2.6× 结论P第 10-11 页 §4.3;第 12 页表 3已核验(逐格;页码定位第三轮修正)
图 5(c)/5(e) 前向全系列(含三处图例遮挡读数 565/574/627);图 6(a)/6(b) 反向全系列(16k:474/433/291 与 561/516/322);图 7(a)/(b) 与图 9(a)/(b) FP8 全系列(16k:1171/1139/903、1024/1099/663、613/438/511、572/483/481)P(图面柱顶标注)第 10、11、22 页图 5/6/7/9已核验(400dpi 逐柱;第一轮读图错误已在第三轮修正并记录)
§5 局限与未来工作:LLM 推理优化、FP8 persistent kernel、大规模训练低精度影响;脚注 10(FP8 短序列+因果弱势归因)P第 12 页 §5 与脚注 10已核验
附录 A:MQA/GQA/MLA 不改核心计算、受益于 attention 改进;Ring attention 至 100 万上下文以 FA 为 primitive;SSM/RNN 仍保留 attention;推理 KV 可压至 4/3/2-bit、训练期量化仍难P第 17 页附录 A已核验
附录 B.1 反向算法 3:dQ-writer warp+信号量原子累加;前处理 D=rowsum(dO∘O)P第 18 页已核验
参考文献印明 URL:[15] FA2 arXiv、[38] CUDA Guide、[40] PTX ISA、[57] CUTLASSP第 13-15 页已核验(URL 照录;页码定位第三轮修正)
官方仓库在线现状:Dao-AILab/flash-attention、BSD-3-Clause、main@0dc2cb4、FA3 beta 于 hopper/ 子目录、发布范围 FP16/BF16 前向+反向与 FP8 前向、需 H100/H800 与 CUDA ≥ 12.3;tag v2.5.8 存在;README 已公告 FA4(论文时点之后,不归于论文)R论文出处第 2 页脚注 3、第 21 页 C.1;在线核验 2026-09-15(只读)已核验(可达性、归属、许可、分支、HEAD、目录、tag)
云实例/容器/监控映射示例(Hopper 代际实例、容器镜像、版本矩阵、kernel 级监控)E各云厂商公开实例目录与容器/监控产品文档未逐一在线核验;使用前按当时目录复核
一句话判断/速读归纳、控制面-数据面划分、数据路径图编号与面板编排、FP8 利用率约 59% 推算、图文出入对照说明、基线陈旧性评估、容量/成本公式、复现步骤I本报告 §1-§12 与 sources/flashattention-3.evidence.json编辑标注完成;不含伪精确数字,读图推算单独标注