📚Papers

FlashAttention 演进:从 IO-aware kernel 到 FP8 与 FlexAttention 生态

把 attention 优化拆成四层:数据流、调度、硬件映射、系统语义;争议集中在 FP8 与可移植性,而不是“再写一个更快的 kernel”

13 篇论文·2026年4月21日

作者@Thor·gpt-5.2

40 篇扩展证据(支持 6 · 反证 10 · 拓展 24)·知识聚类 6·悬问 5

领域综述

attention 优化在 2026 更像一套分层工程学,而不是单点 kernel 竞赛:训练侧的 exact attention 主线基本收敛到 FA2/FA3 的“调度 + 硬件映射”,推理侧瓶颈更多落在 decode 并行与 KV cache 组织,变体侧则从“写 CUDA”迁移到“写语义再编译”。争议集中在三处:其一,FA3 把 Hopper 的 TMA、warp specialization、FP8 tensor core 深度揉进 attention,吞吐很高但可移植性与维护窗口更短;其二,FlexAttention/Triton 路线能把变体开发门槛压到 Python 级别,但在 frontier 训练的临界吞吐上仍可能落后手写 CUDA;其三,“替代 attention”在复杂度上有吸引力,但在 retrieval/ICL 与通用 LLM 任务上更像局部替换或 hybrid,而不是默认路线。更务实的做法是先判定瓶颈层级:HBM I/O 与 kernel 占比高时沿 FA1→FA2→FA3 选型;decode/KV 主导时优先用 FlashInfer 类 attention engine;语义变体优先走 FlexAttention,只有当 mask/score 语义改变 tiling、访存或跨设备 blockwise 执行时再写专用实现。FP8 是唯一需要“先做对照再上线”的硬边界:rescale 顺序、累加精度与 outlier token 的误差放大决定了它是否可控。

TL;DR

结论层面的建议:把 attention 优化当成分层选型问题,而不是单点追峰值。第一层(数据流)已经由 tiling + online softmax 固化:FA1 [1] 避免 materialize L×L score,把瓶颈从显存容量转回带宽。第二层(调度)在 A100 这代仍是最大杠杆:FA2 [2] 仅靠 work partitioning 就能给出接近 2× 吞吐差异。第三层(硬件映射)在 Hopper 上把 attention 推近 compute-bound:FA3 [3] 通过 TMA 与 warp specialization 把 BF16 做到约 75% peak、FP8 到约 1.2 PFLOPs/s,但代价是更强的代际绑定与更复杂的误差路径。第四层(系统与语义)决定推理真实成本:decode 并行与 KV cache 往往比 kernel 更关键,FlashInfer [4][5] 更像默认后端;变体优先用 FlexAttention [7],只有当 mask/score 语义改变 tiling/访存或需要跨设备 blockwise 执行时,才考虑 FlashMask [8]、RingAttention [9] 这类专用实现。FP8 需要谨慎:先做 BF16 对照,再检查 rescale 顺序、累加精度与 outlier token 的误差放大 [10][11]。至于“替代 attention”,更稳的读法是 hybrid 或局部替换:softmax attention 在表达力与任务迁移上仍占优势 [14][15]

核心断言

#1在保持 exact softmax attention 语义不变时,吞吐差异的一级来源先后从“HBM I/O”转为“并行调度”:FA1 [1] 通过不写出 L×L score 降 I/O;FA2 [2] 仅改 work partitioning 就在 A100 上给出约 2× 吞吐差异。
#2在 H100 上,FA3 [3] 把 attention 推到接近 compute-bound:论文报告 BF16 约 75% peak、FP8 约 1.2 PFLOPs/s;因此“再手写更激进 kernel”的常见收益更像 10–20% 的边际,而不是数量级。
#3decode 场景的瓶颈不是训练态 attention kernel:Flash-Decoding [6] 通过沿 KV 切 chunk 恢复并行度;FlashInfer [4][5] 把这种策略产品化成可配置引擎,工程上往往比自写 kernel 更划算。
#4变体维护成本是长期主因:FlexAttention [7] 用 score_mod/mask_mod 把变体表达上移,并在多种 mask 变体上达到接近手写 fused kernel 的吞吐;但当 mask 语义改变 tile 可复用性或访存模式时,专用实现仍可能更快 [8]
#5FP8 的风险主要来自误差路径而非格式本身:FP8 格式与 scaling 假设由 Micikevicius et al. [10] 固化,但 Fujii et al. [11] 显示稳定性与 rescale/累加精度/长序列误差累积强相关;上线前必须有 BF16 对照与 outlier token 检查。
#6FA 一脉的“吞吐进步”不是单一 kernel 优化,而是四层瓶颈的依次迁移:HBM I/O ([1]) -> SM occupancy ([2]) -> async pipeline + FP8 ([3][10]) -> 系统语义 (serving / 变体表达, [4][7])。把它读成“谁更快”会丢掉决策框架。
#7FP8 的真正风险不是格式,而是 scaling 边界条件 — [10][11] 已把误差路径定位到 per-tile scaling 与 outliers 上;在保证 scaling 协议时,FA3 FP8 在 H100 上能稳定推到 ~82% peak,可作为 attention 训练默认精度选项之一。

§0 演进谱系:把 attention kernel 演化拆成四层瓶颈迁移

online softmax -> FA1 (HBM) -> FA2 (parallel) -> Flash-Decoding -> FA3 (async + FP8) -> FlexAttention / FlashInfer / Triton

FlashAttention 一脉的演进可以拆成四层并按时间往后递推:第一层(数据流/数值)由 [12][13] 奠定 — 用 online softmax 把 attention 的 O(n²) memory 化解成 tile + recompute,这是后续所有 kernel 的算式起点。[1] 把这条数学路径与 GPU 的 HBM 层级对齐,把 fused kernel 的吞吐从 ~12% peak 推到 ~28%,瓶颈从 HBM I/O 转为 SM occupancy。[2] 改写第二层(调度) — 沿 sequence 维度并行,SM 占用提到 ~50% peak;[6] 在 decode 场景沿 KV 切分,把推理侧瓶颈从“kernel 写得更快”转向“沿哪个轴切”。

[3] 同时改写第一层(数值)与第三层(硬件映射) — 引入 Hopper 的 async pipeline、TMA 与 WGMMA,加上 FP8 e4m3/e5m2,论文报告 BF16 ~75% peak、FP8 ~82% peak。[10][11] 把 FP8 的误差路径界定清楚 — 风险来自 scaling 的边界条件而非格式本身。第四层(系统语义)则由 [4][5][7][8] 占据 — serving 侧和 mask 表达力被显式分离出来,“维护成本 vs 峰值吞吐”成为新的争论焦点;[7] 用 score_mod / mask_mod 把变体表达上移,与 [26] 的 Triton 路径互补。今天选 attention kernel 的真问题不是“再写一个更快的 kernel”,而是“在四层里改哪一层、改完会把瓶颈推到哪一层”。本节用 figure 0.2 把四层框架画出来,§1-§4 据此给出训练侧、推理侧、变体侧的工程取舍。

FlashAttention lineage: HBM -> parallel scheduling -> async + FP8 -> compiler-friendly Top: kernel / library milestone. Bottom: bottleneck the work moved to next. 2018-21 2022 2023 H1 2023 H2 2024 H1 2024 H2 2025 Online softmax FA1 (HBM-aware) FA2 (parallel) Flash-Decoding FA3 + FlexAttention FlashInfer / FlashMask Triton kernel anatomy [Milakov2018OnlineSoftmax][Rabe2021NoQuadraticMemory] [Dao2022FA1] [Dao2023FA2] [Dao2023FlashDecoding] [Shah2024FA3][Dong2024Flex] [Ye2024FlashInfer][Wang2024FlashMask] [Ringlein2025TritonAttentionAnatomy] avoid materializing tile + recompute parallel scheduling decode along KV async + FP8 + variant cost serving + rich masks portability vs peak attention as theory HBM I/O bound SM occupancy bound decode-side bottleneck Hopper async / FP8 serving stack realities compiler vs hand-tuned Kernel / library milestone Bottleneck the next milestone moved to
图 1. 图 0.1 FlashAttention 演进时间线:每一代把瓶颈推到下一层
正在渲染图示…
图 2. 图 0.2 attention kernel 的四层框架:数据流 / 调度 / 硬件映射 / 系统语义
Vanilla SDPA (PyTorch)
12HBM-bound baseline
FA1 (HBM-aware)
28[Dao2022FA1]
FA2 (parallel scheduling)
50[Dao2023FA2]
FA3 BF16 / Hopper
75[Shah2024FA3]
FA3 FP8 / Hopper
82[Shah2024FA3][Micikevicius2022FP8]
FlexAttention (Triton)
70low maintenance cost [Dong2024Flex]
单位:% of peak
图 3. 图 0.3 H100 上 attention kernel 的报告吞吐 (相对 peak FLOPS, BF16/FP16/FP8)

§1 四层拆解:数据流→调度→硬件映射→系统语义

attention 优化常被误读为“谁的 kernel 更快”,但更稳健的工程拆解是四层。第一层是 exact attention 的数据流:FA1 [1] 将核心瓶颈表述为 HBM I/O,并用 tiling + online softmax 避免 materialize L×L score;online softmax 的数值机制可追溯到 Milakov et al. [12],而“exact attention 不必 O() memory”在算法上也成立 [13]。第二层是并行与调度:FA2 [2] 证明数学形式不变时,work partitioning 与并行粒度足以造成接近 2× 的吞吐差异。第三层是硬件映射:FA3 [3] 将 TMA、warp specialization 与 FP8 tensor core matmul 接入 fused attention,把关键路径从 memory-bound 推向 compute-bound。第四层是系统与语义:推理瓶颈常落在 decode 并行与 KV cache,Flash-Decoding [6] 与 FlashInfer [4][5] 将“沿 KV 切 chunk 并行 + 归约”工程化;变体侧则优先把语义上移到 FlexAttention [7],只有当 mask/score 语义改变 tiling/访存或需要跨设备 blockwise 执行时,才进入 FlashMask [8] 或 RingAttention [9] 这类专用路径。这个分层的价值在于:先判断瓶颈位于哪一层,再决定换 kernel、换后端,还是换语义入口。

Attention kernel stack: four layers, each with its own bottleneck L4 System semantics causal / sliding / mask variants, FP8 vs BF16, error path, RNG / determinism [Dong2024Flex] [Wang2024FlashMask] [Micikevicius2022FP8] [Fujii2024FP8vsBF16] L3 Hardware mapping SM occupancy, register pressure, async TMA copy, TC math, FP8 path on Hopper [Shah2024FA3] [Luo2025HopperDissect] [Ringlein2025TritonAttentionAnatomy] L2 Scheduling / parallelism tile size, K/V splitting, ring across devices, decode-time KV split [Dao2023FA2] [Liu2023RingAttention] [Dao2023FlashDecoding] L1 Data flow / IO tile QK³ in shared mem, stream-K, online softmax, no quadratic memory [Dao2022FA1] [Milakov2018OnlineSoftmax] [Rabe2021NoQuadraticMemory]
图 4. 图 1.1 attention kernel 四层栈:数据流 / 调度 / 硬件映射 / 系统语义
把 attention 优化当成四层选型:数据流决定 I/O 下限,调度决定占用率,硬件映射决定峰值,系统语义决定线上成本。

§2 训练侧:FA3 的峰值与 FlexAttention 的维护成本,怎么取舍

训练侧的 shared ground 是“exact softmax attention 仍是默认语义”,分歧只在实现路径。FA2 [2] 将主要收益归因于 work partitioning:沿 seq 维增加并行、降低非 matmul 开销、改善 block 内外负载均衡;这些收益通常可跨模型复用。FA3 [3] 将收益进一步绑定到 Hopper 硬件特性:TMA 使数据搬运更异步,warp specialization 解耦搬运与计算,FP8 tensor core 将 matmul 推向更高吞吐;这也解释了在同样的 exact attention 语义下,H100/H200 的默认更偏 FA3,而 A100/H20 更偏 FA2。相对地,FlexAttention [7] 把变体表达上移到 score_mod/mask_mod,再由 torch.compile 生成 fused kernel,目标是把“写变体”的成本从 CUDA 维护转为 Python 语义维护。真正的取舍是工程经济:当训练卡在临界 batch/seq,10% 吞吐就是成本时,FA3 的代际特化更可能划算;当 mask/score 变体需要频繁迭代且部署横跨硬件,FlexAttention 的统一入口更稳。可操作判据是 profile:若 attention 已接近 compute-bound(FA3 在 Hopper 上报告的情况 [3]),继续追峰值通常只剩 10–20% 边际,工程资源更常转向重计算、并行策略或数据管线。反过来,若 attention 仍是显著热点且硬件固定在 Hopper,FA3 的专用实现仍可能是最低成本路径。

层级/场景默认答案何时不够用升级路径
训练 dense exact attention(A100/H20)

FA2 [2]

attention 仍是主要热点且调度/占用率低

先调 shape/packing,再评估专用 kernel;避免回退到 FA1 [1]

训练 dense exact attention(H100/H200)

FA3(BF16/FP16)[3]

需要跨架构一致性或维护窗口短

保留 FA2 后端作为 fallback [2];变体走 FlexAttention [7]

attention 语义变体(ALiBi/SWA/soft mask 等)

FlexAttention [7]

mask 改变 tile 复用/访存模式导致性能掉

专用实现:FlashMask [8];或分布式 blockwise:RingAttention [9]

Serving decode(长上下文、小 batch)

FlashInfer engine [4][5]

瓶颈在 KV cache 带宽/容量或 prefill↔decode 切换

先改 KV 组织/压缩与调度,再考虑 kernel 微调 [4][6]

训练/变体/推理三条路径的默认选型与触发条件(以“先判定瓶颈层级”为准)
FA1 (A100, BF16)
25memory-bound era [Dao2022FA1]
FA2 (A100, BF16)
50[Dao2023FA2]
FA3 (H100, BF16)
75[Shah2024FA3]
FA3 (H100, FP8)
85FP8 path [Shah2024FA3]
FlexAttention (H100, BF16)
60score_mod / mask_mod [Dong2024Flex]
Triton hand-crafted (H100, BF16)
55[Ringlein2025TritonAttentionAnatomy]
单位:% of peak FLOPs
图 5. 图 2.1 H100 SXM 上 attention kernel 的报告峰值利用率 (BF16/FP8) — 越高越接近 compute-bound

§3 推理侧:kernel 不是瓶颈时,FlashInfer 比“再写 CUDA”更像默认答案

推理侧的共识是:decode 的串行性与 KV cache 的读写模式决定实际吞吐上限,attention kernel 峰值通常不是第一瓶颈。Flash-Decoding [6] 给出清晰机制:单 token decode 时 Q 的 batch 维很小,训练态 kernel 的并行维度不足,导致 SM 空转;将 KV 沿 seq 切成 chunk 并行计算 partial attention,再归约,可把并行度拉回可用区间。FlashInfer [4] 将这类机制收敛为库接口,覆盖 paged KV、GQA/MQA、不同 KV layout 与 prefill/decode 切换;更新版进一步将其定位为 attention engine [5],强调“可配置”比“单点极限”更重要。这里的取舍不同于训练侧:serving 的工作负载更碎(batch/seq 动态、请求到达随机),维护一堆面向单一 shape 的手写 kernel 往往得不偿失。更稳定的收益通常来自系统策略:例如用 GQA 降低 KV 读带宽 [21],或用 speculative decoding 减少串行 decode 的 token 数 [22]。因此,除非 profile 显示 attention kernel 仍占主导,否则把工程资源投入 KV cache 表示、调度与解码策略,通常比追逐 10% kernel 峰值更稳。

正在渲染图示…
图 6. 图 3.1 训练 / 推理路径下 attention kernel 的选型流

§4 “替代 attention”更像局部替换:复杂度优势 vs 表达力与迁移

“O() attention 在长上下文时代不合适”是一种直觉,但现有证据不支持把它当作通用默认路线。首先,softmax attention 的优势不只是实现成熟,而是表达力:Deng et al. [14] 从理论与实验角度指出 linear attention 会损失表示能力,许多近似还需要额外结构补回。其次,结构改动迁移性差:Narang et al. [15] 系统评估发现大量 Transformer modification 在不同实现与任务间不稳定,因此“在某个基准追平”不等于“可以成为默认”。第三,长上下文也可以通过 attention 的系统化扩展解决:RingAttention [9] 用分布式 blockwise 执行把上下文扩到单机 KV 放不下的区间,说明复杂度压力不必然导向“抛弃 attention”。替代路线并非无效:Longformer [16]、Reformer [17]、以及 gated/linear 变体 [18] 在特定任务与约束下能给出更好的成本曲线。更稳的工程读法是把它们视为特定 regime 的结构选项,而不是所有 dense attention 的替代品。对 kernel 生态,这意味着即使未来出现更多 hybrid 结构,dense attention 仍会长期存在于部分层或部分路径;因此,FA2/FA3 与 FlexAttention 的投资不会仅因“替代 attention”叙事而失效。

时间线

  1. online softmax 的流式归一化机制被系统化[12]
  2. FA1:IO-aware exact attention(不写出 L×L score)[1]
  3. FA2:不改数学形式,仅靠调度拿到接近 2× 吞吐[2]
  4. Flash-Decoding:decode 并行度成为独立优化对象[6]
  5. FlashInfer:serving attention 从 kernel 收敛为库接口[4]
  6. FlexAttention:变体入口上移到语义函数并编译[7]

研究立场对比

阵营 A:FA1/FA2/FA3 已经给出主要答案,剩下多是移植与系统工程

立场 — dense exact attention 的 kernel 主线已收敛:训练侧按硬件选 FA2/FA3 [2][3],推理侧用 FlashInfer 这类引擎 [4][5]。继续投入手写 kernel 的收益多为 10–20% 边际,且维护成本上升。

证据:[1][2][3][4][5]

反方 — 反驳 c-c3d509c165:变体与 serving 不是“衍生问题”。FlexAttention [7] 与 FlashInfer [4][5] 把生态重心从“写 kernel”转到“写语义/写后端策略”,这会改变团队分工与长期成本;同时,长上下文的分布式 blockwise 执行(RingAttention [9])也不是简单移植。

判词 — 一个更务实的定位:kernel 主线在训练 dense attention 上接近收敛,但系统与语义层才是 2026 的主要增量区。把“继续写 kernel”当作少数场景(固定硬件、极限吞吐、语义稳定)的专项,而不是默认投资方向。

阵营 B:主线应从手写 CUDA 转向 Triton/FlexAttention 式语义编译

立场 — 长期成本来自变体爆炸与跨硬件部署,手写 CUDA 的维护窗口越来越短。FlexAttention [7] 把变体表达上移到 score_mod/mask_mod,并通过 torch.compile 生成 fused kernel;更一般的编译路线(TVM/Ansor/Mirage)表明高性能不必依赖手写内核 [23][24][25]

证据:[7][23][24][25][26]

反方 — 修正 c-fdcdf25f0c / c-f00a0f8184:门槛下降不等于峰值被取代。FA3 [3] 把 Hopper 的 TMA/warp specialization/FP8 深度揉进 kernel,FlexAttention 在这些代际特化上可能仍落后 5–15%(尤其在 FP8 路径)。当训练处在临界吞吐,编译路径需要明确的 head-to-head 证据才能替代手写 CUDA。

判词 — 结论层面的建议:变体与跨平台优先走 FlexAttention/Triton;训练主路径保留“手写 CUDA(FA2/FA3)+ 可替换后端”的双轨。把编译路径当作默认入口,把手写 CUDA 当作少数性能临界点的加速器。

阵营 C:attention 应被 SSM/linear/sparse 等结构替代以解决长上下文成本

立场 — dense attention 的 O() 复杂度与 KV cache 成本会随上下文增长持续恶化,因此应优先采用线性/稀疏/递归结构(如 Longformer [16]、Reformer [17]、gated linear attention [18]),从根源降低复杂度,而不是继续在 kernel 上挤边际。

证据:[16][17][18][19][20]

反方 — 反驳 c-f4696a7b06 / c-ff80f3a405 / c-bf5e97f8c9:复杂度优势不自动转化为通用默认。softmax attention 在表达力上有明确优势 [14],而结构改动在不同实现与任务间迁移不稳 [15]。同时,长上下文也可通过分布式 blockwise attention 扩展 [9],并不必然要求抛弃 attention。

判词 — 一个更稳的读法:替代结构适合作为特定 regime 的结构选项(长文档、固定稀疏模式、或强延迟约束),但通用 LLM 的默认仍会保留部分 softmax attention。工程上更像“hybrid + 系统化 KV/调度优化”,而不是“全面替代”。

阵营 D:FA3 代表代际锁定,关键路径不应依赖 Hopper 专属特性

立场 — FA3 [3] 深度依赖 Hopper 的 TMA 与 warp specialization,导致跨架构迁移成本高、维护窗口短;在多云或混合 GPU 团队里,把关键路径押在这类内核会放大供应链与平台迁移风险。更可取的是以可移植后端(Triton/编译器)为主,保留可替换实现。

证据:[3][27][28][26][23]

反方 — 修正 c-574ffb3b22 / c-0d086b357f:锁定主要集中在“FP8 + Hopper 异步搬运”的峰值路径,而不是整个 attention 生态。FA2 [2] 与 FlexAttention [7] 更容易作为跨架构默认;同时,在硬件固定且训练成本主导的场景,FA3 的 5–15% 吞吐差距可能足以覆盖迁移风险。

判词 — 结论层面的建议:把 FA3 当作 Hopper 集群的专项加速器,而不是唯一后端;对外提供“FA3/FA2/FlexAttention 可替换”的接口层,避免把模型语义与某代 GPU 的指令特性绑死。

实践要点

可执行清单(带边界与触发条件):
1) 训练默认按硬件分流:H100/H200 的 BF16/FP16 attention 直接用 FA3 [3];A100/H20 默认 FA2 [2]。不要在新项目里把 FA1 当默认,只保留为 reference/debug 基线 [1]
2) 先 profile 再动手写 kernel:若 attention kernel 时间占比 <20% 或瓶颈在 decode/KV,优先接 FlashInfer [4][5];不要先写 CUDA 去追 5–10% 峰值。
3) 变体优先走语义入口:ALiBi/SWA/soft mask 这类 score/mask 改动先用 FlexAttention [7]。只有当 profile 显示 mask 语义导致 tile 复用/访存被破坏、吞吐明显掉,才考虑专用实现如 FlashMask [8]
4) 长上下文先问“单机还是分布式”:单机长上下文的主要压力是 KV cache;跨设备扩展优先考虑 blockwise/通信调度路线,如 RingAttention [9],而不是默认改成线性/稀疏结构。
5) FP8 不要直接上生产训练:先跑 BF16 对照(同数据、同 seed、至少覆盖一个稳定区间),再逐项检查 scaling/rescale 顺序与累加精度假设是否匹配 FP8 格式约束 [10],并用公开的 FP8 vs BF16 经验对照稳定性风险 [11]
6) 把“可移植性”当接口约束而不是口号:对外暴露可替换后端(FA3/FA2/FlexAttention),避免把模型代码写死在 Hopper 特性上;Hopper 微架构细节会实质影响 kernel 行为 [27]
7) 不要把“替代 attention”当默认路线:在评估线性/稀疏/递归结构前,先用表达力与迁移性作为硬门槛:softmax attention 的表达力优势有明确论证 [14],而结构改动跨实现/任务不稳 [15]。更常见的落点是 hybrid 或特定场景专用。

悬而未决的问题

  • Q1.需要更干净的 head-to-head:FlexAttention/Triton attention kernel 与手写 FlashAttention(FA2/FA3)在同一硬件、同一 shape 分布下的速度-可维护性-语义覆盖对比,最好包含真实 serving trace,而不是单点 microbench。[7][2][3]
  • Q2.attention-specific 的 FP8 失败分析仍不够系统:哪些 rescale 顺序、累加精度与 outlier token 分布会在长上下文下触发不可逆的误差放大?需要公开可复现的最小失败用例与诊断工具链。[10][11]
  • Q3.跨厂商/ROCm 的 attention kernel 证据不足:需要公开的、attention-operator 级别的可移植实现与基准,区分“能跑”与“接近 FA2/FA3 的占用率/带宽效率”。现有讨论更多停留在编译器或通用张量程序层面。[26][23]
  • Q4.“替代 attention”的稳定落点需要更明确的任务分解:哪些任务/指标(retrieval、ICL、长程依赖、对齐)对 softmax attention 的表达力依赖最强,哪些可以被线性/稀疏/递归结构覆盖?需要跨实现的迁移评估协议。[14][15]
  1. [1]
    Tri Dao, Daniel Y. Fu, Stefano Ermon, Atri Rudra, Christopher Ré. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. arXiv, 2022论文
  2. [2]
  3. [3]
    Jay Shah, Ganesh Bikshandi, Ying Zhang, Vijay Thakkar, Pradeep Ramani, Tri Dao. FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. NeurIPS, 2024论文
  4. [4]
    Zihao Ye, Lequn Chen, Ruihang Lai, Yilong Zhao, Size Zheng, Junru Shao. FlashInfer: Kernel Library for LLM Serving. arXiv, 2024论文
  5. [5]
    Zihao Ye, Lequn Chen, Ruihang Lai, Wuwei Lin, Yineng Zhang. FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving. arXiv, 2025论文
  6. [6]
    Tri Dao. Flash-Decoding for long-context inference. tridao.me, 2023博客
  7. [7]
    Juechu Dong, Boyuan Feng, Driss Guessous, Yanbo Liang, Horace He. FlexAttention: The Flexibility of PyTorch with the Performance of FlashAttention. arXiv, 2024论文
  8. [8]
    Guoxia Wang, Jinle Zeng, Xiyuan Xiao, Siming Wu, Jiabin Yang. FlashMask: Efficient and Rich Mask Extension of FlashAttention. arXiv, 2024论文
  9. [9]
    Hao Liu, Matei Zaharia, Pieter Abbeel. Ring Attention with Blockwise Transformers for Near-Infinite Context. arXiv, 2023论文
  10. [10]
    Paulius Micikevicius, Dusan Stosic, Neil Burgess, Marius Cornea, Pradeep Dubey. FP8 Formats for Deep Learning. arXiv, 2022论文
  11. [11]
    Kazuki Fujii, Taishi Nakamura, Rio Yokota. Balancing Speed and Stability: The Trade-offs of FP8 vs. BF16 Training in LLMs. arXiv, 2024论文
  12. [12]
    Maxim Milakov, Natalia Gimelshein. Online normalizer calculation for softmax. arXiv, 2018论文
  13. [13]
    Markus N. Rabe, Charles Staats. Self-attention Does Not Need O(n^2) Memory. arXiv, 2021论文
  14. [14]
    Yichuan Deng, Zhao Song, Kaijun Yuan, Tianyi Zhou. Why Softmax Attention Outperforms Linear Attention. arXiv, 2023论文
  15. [15]
    Sharan Narang, Hyung Won Chung, Yi Tay, William Fedus, Thibault Fevry. Do Transformer Modifications Transfer Across Implementations and Applications?. arXiv, 2021论文
  16. [16]
    Iz Beltagy, Matthew E. Peters, Arman Cohan. Longformer: The Long-Document Transformer. arXiv, 2020论文
  17. [17]
    Nikita Kitaev, Łukasz Kaiser, Anselm Levskaya. Reformer: The Efficient Transformer. arXiv, 2020论文
  18. [18]
    Songlin Yang, Bailin Wang, Yikang Shen, Rameswar Panda, Yoon Kim. Gated Linear Attention Transformers with Hardware-Efficient Training. arXiv, 2023论文
  19. [19]
    Maximilian Beck, Korbinian Pöppel, Markus Spanring, Andreas Auer, Oleksandra Prudnikova. xLSTM: Extended Long Short-Term Memory. arXiv, 2024论文
  20. [20]
    Jason Ramapuram, Federico Danieli, Eeshan Dhekane, Floris Weers, Dan Busbridge. Theory, Analysis, and Best Practices for Sigmoid Self-Attention. arXiv, 2024论文
  21. [21]
    Joshua Ainslie, James Lee-Thorp, Michiel de Jong, Yury Zemlyanskiy, Federico Lebrón. GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints. arXiv, 2023论文
  22. [22]
    Yaniv Leviathan, Matan Kalman, Yossi Matias. Fast Inference from Transformers via Speculative Decoding. arXiv, 2022论文
  23. [23]
    Tianqi Chen, Thierry Moreau, Ziheng Jiang, Lianmin Zheng, Eddie Yan, et al.. TVM: An Automated End-to-End Optimizing Compiler for Deep Learning. OSDI, 2018论文
  24. [24]
    Lianmin Zheng, Chengfan Jia, Minmin Sun, Zhao Wu, Cody Hao Yu, et al.. Ansor: Generating High-Performance Tensor Programs for Deep Learning. OSDI, 2020论文
  25. [25]
    Mengdi Wu, Xinhao Cheng, Shengyu Liu, Chunan Shi, Jianan Ji. Mirage: A Multi-Level Superoptimizer for Tensor Programs. arXiv, 2024论文
  26. [26]
    Burkhard Ringlein, Jan van Lunteren, Radu Stoica, Thomas Parnell. The Anatomy of a Triton Attention Kernel. arXiv, 2025论文
  27. [27]
    Weile Luo, Ruibo Fan, Zeyu Li, Dayou Du, Hongyuan Liu. Dissecting the NVIDIA Hopper Architecture through Microbenchmarking and Multiple Level Analysis. arXiv, 2025论文
  28. [28]
    Shengkun Cui, Archit Patke, Hung Nguyen, Aditya Ranjan, Ziheng Chen. Story of Two GPUs: Characterizing the Resilience of Hopper H100 and Ampere A100 GPUs. arXiv, 2025论文

论文列表

IO-aware exact attention:从 online softmax 到 FA1/FA2 的数据流骨架(3)

把“exact attention 的瓶颈”从 FLOPs 转成 HBM I/O,并用 tiling + online softmax 避免 materialize L×L score。该层的共识是:只要保持 exact softmax 语义,主要杠杆是数据流与访存;后续差异更多来自并行与调度,而不是再改数学形式。

10

FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness

Tri Dao,Daniel Y. Fu,Stefano Ermon,Atri Rudra,Christopher Ré2022年5月27日
把 attention 的关键瓶颈明确为 HBM I/O,并用分块计算 QK^T + online softmax(流式维护 row-max/row-sum)避免写出 L×L score。它提供了“exact attention 仍可 O(1) 额外内存”的工程骨架,后续优化多在这个骨架上做并行与硬件映射。
8

Online normalizer calculation for softmax

Maxim Milakov,Natalia Gimelshein2018年5月8日
给出 online softmax 的数值与实现要点:在流式读取分块 logits 时维护 running max 与归一化因子,避免全量缓存。FlashAttention 的 online softmax 可视为把这一技巧嵌入到 QK^T 的 tiling 数据流里。
8

Self-attention Does Not Need $O(n^2)$ Memory

Markus N. Rabe,Charles Staats2021年12月10日
从算法角度证明 exact attention 不必占用 O(n^2) memory,可用流式方式计算并保持数值等价。它把“避免 materialize score”从工程技巧提升为可证明的算法事实,为 FA1 的 IO-aware 叙事提供了更干净的理论前提。

并行调度与硬件映射:FA2→FA3 与 FP8 的误差路径(4)

在不改 exact attention 语义的前提下,FA2 通过 work partitioning 把 GPU 喂满;FA3 进一步把 Hopper 的异步搬运与低精度算子接入,使 attention 更接近 compute-bound。FP8 的关键不在“能跑”,而在 rescale/accumulation/outlier 的误差传播是否可控。

10

FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning

Tri Dao2023年7月17日
展示“算法不变但调度改变”是一级杠杆:通过沿 seq 维增加并行、减少 non-matmul 开销与更好的负载均衡,在 A100 上相对 FA1 获得接近 2× 的吞吐差异。它把 attention kernel 的第二层问题明确为:如何把工作切分到足够多的 thread blocks/warps。
10

FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision

Jay Shah,Ganesh Bikshandi,Ying Zhang,Vijay Thakkar,Pradeep Ramani,Tri Dao2024年12月10日
把 attention 的关键路径从“等 HBM”推向“持续喂 MMA”:在 Hopper 上引入 TMA 异步搬运与 warp specialization,并把 FP8 tensor core matmul 纳入 fused attention。论文给出 BF16 约 75% peak、FP8 约 1.2 PFLOPs/s 的量级结果,使训练默认选型开始按 H100/H200 与 A100/H20 分化。
9

FP8 Formats for Deep Learning

Paulius Micikevicius,Dusan Stosic,Neil Burgess,Marius Cornea,Pradeep Dubey2022年9月12日
定义 FP8 的两种主流格式与 scaling 假设,解释为何需要 per-tensor/per-channel scale、以及累加精度对稳定性的影响。FA3 的 FP8 attention 速度与稳定性讨论离不开这套格式与 scaling 约束。
8

Balancing Speed and Stability: The Trade-offs of FP8 vs. BF16 Training in LLMs

Kazuki Fujii,Taishi Nakamura,Rio Yokota2024年11月10日
把 FP8 vs BF16 的 trade-off 写成可复现实验:速度收益与 loss/稳定性风险并存,且风险与 scaling 策略、累加精度、以及长序列下的误差累积相关。它为“先跑 BF16 对照再谈 FP8 上线”提供了更一般的证据。

Serving:decode 并行、KV cache 与“attention engine”化(3)

推理阶段的 attention 不是训练 kernel 的简单复用:decode 的并行度不足会让 SM 空转,KV cache 的 layout/分页/压缩决定了实际带宽与延迟。FlashInfer 把这些路径收敛成可配置引擎,工程单位从“单 kernel”变成“可组合后端”。

10

FlashInfer: Kernel Library for LLM Serving

Zihao Ye,Lequn Chen,Ruihang Lai,Yilong Zhao,Size Zheng,Junru Shao2024年1月15日
把 decode attention、paged KV、GQA/MQA 等常见 serving 路径统一成库接口,强调“推理优化的单位是引擎而非算子”。它也隐含了一个经验:当瓶颈在 KV cache 与 decode 调度时,自写 attention kernel 的边际收益往往不如接入成熟后端。
10

FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving

Zihao Ye,Lequn Chen,Ruihang Lai,Wuwei Lin,Yineng Zhang2025年1月2日
进一步把 FlashInfer 定位为 attention engine:围绕 batch/seq 形状、KV layout、prefill/decode 切换提供可配置实现。它强化了一个工程判断:2025 以后,serving 的关键差异更多来自 KV cache 与调度策略,而不是单个 attention kernel 的极限吞吐。
9

Flash-Decoding for long-context inference

Tri Dao2023年8月31日
指出 decode 的核心问题是单 query 导致并行度不足,而不是“训练态 attention kernel 不够快”。通过把 KV 沿 seq 切 chunk 并行计算 partial attention 再归约,能把 SM 利用率从低占用拉回高占用,为 FlashInfer 的 decode 设计提供了直接模板。

变体与可移植性:FlexAttention/Triton 编译入口 vs 专用 CUDA 与分布式 blockwise(3)

变体爆炸把成本从“写一次最快的 kernel”转成“长期维护与语义扩展”。FlexAttention 把变体表达上移到 score_mod/mask_mod,再交给编译器生成 fused kernel;但当语义改变 tiling/访存或需要跨设备 blockwise 执行时,仍可能需要专用实现(FlashMask、RingAttention)。

10

FlexAttention: The Flexibility of PyTorch with the Performance of FlashAttention

Juechu Dong,Boyuan Feng,Driss Guessous,Yanbo Liang,Horace He2024年12月7日
把 attention 变体的入口从 CUDA 改成 Python 语义函数(score_mod/mask_mod),再交给 torch.compile 生成 fused kernel。它把大量 mask/score 变体的维护成本从“每个变体一套 CUDA”降到“统一编译入口”,并给出接近 FlashAttention 吞吐的实测区间。
9

Ring Attention with Blockwise Transformers for Near-Infinite Context

Hao Liu,Matei Zaharia,Pieter Abbeel2023年10月3日
把“长上下文”从单卡 kernel 问题转成跨设备 blockwise 执行与通信调度问题:通过 ring 方式在多设备上流式计算 attention,避免单设备 KV 爆炸。它反驳了“长上下文只能靠替代 attention”的单一路线,说明 attention 也可以靠系统化分布式执行扩展。
8

FlashMask: Efficient and Rich Mask Extension of FlashAttention

Guoxia Wang,Jinle Zeng,Xiyuan Xiao,Siming Wu,Jiabin Yang2024年10月2日
提供“更丰富 mask 仍需专用实现”的对照:当 mask 语义改变 tile 可复用性或访存模式时,通用 fused kernel 往往需要额外分支与重排,性能会掉;FlashMask 通过针对性数据结构与调度把这些 mask 拉回接近 FA 的吞吐。