FlashAttention 分块运算可视化
步骤 0 / 25
初始化:设置 N=12, d=4, Br=3, Bc=2。SRAM 大小为 M。在 HBM 中初始化 O=0, ℓ=0, m=-∞。
Q 矩阵 (N×d)
K 矩阵 (N×d)
O 输出 (N×d)
V 矩阵 (N×d)
m 向量(行最大值,按 Br=3 分组)
ℓ 向量(行和,按 Br=3 分组)
注意力分数 S 矩阵 (N×N),每个色块 = Br×Bc = 3×2,显示计算值
未计算
当前块
已完成
on-chip SRAM 计算
Qi
3×4
×
Kjᵀ
4×2
=
Sij
3×2
P̃ij
exp(S−m̃)
×
Vj
2×4
Oi
3×4
FlashAttention 前向传播公式
Sij = Qi · KjT
ij = rowmax(Sij),   ij = exp(Sij − m̃ij),   ℓ̃ij = rowsum(P̃ij)
mnew = max(mi, m̃ij),   new = emi−mnew·ℓi + eij−mnew·ℓ̃ij
Oi ← diag(ℓnew)−1 · (diag(ℓi)·emi−mnew·Oi + eij−mnew·P̃ij·Vj)