GPU · 从分块到输出

FlashAttention:直接看矩阵子块搬运

FlashAttention & FlashAttention-2 · Matrix tile transfers

Q、Kᵀ、V 怎样拆块 → 怎样搬到片上 → 怎样形成 O → 写回哪里。

同一组输入 · 同一个 Attention 输出

索引从 0 开始 · 单 Head · 前向
Q · 查询块 QueryKᵀ · 匹配块 KeyV · 内容块 ValueO · 部分输出 PartialO · 最终输出 Final
执行进度

点击完整 Q 或 Kᵀ 中的子块可切换计算位置。移动的是带原元素值的矩阵子块,源矩阵保留,副本进入片上;O 子块直接落回对应输出行。

标准 Attention

先把大表存下来

QKᵀ → HBM 中的 S → Softmax → HBM 中的 P → PV → O。

FlashAttention

K/V 固定,Q 逐块扫过

当前 Kⱼ、Vⱼ 服务每个 Qᵢ。每轮把 Oᵢ 与 Softmax 状态写回;之后继续更新同一位置。

FlashAttention-2

Q 块独立,汇总留在片上

每个 Qᵢ 对应独立任务,遍历所有 Kⱼ、Vⱼ 后才写回 Oᵢ。不同任务可并行调度。

数学含义、动画口径与原论文 · Model and papers

FlashAttention 原论文 · FlashAttention-2 原论文