【FlashAttention】 FA2与FA1算法区别辨析

看了几篇关于FlashAttention2的文章,对于其中移除冗余的CUDA操作这个算法优化进行了一个综合梳理。

https://zhuanlan.zhihu.com/p/1993815603383902344

https://zhuanlan.zhihu.com/p/668888063

https://zhuanlan.zhihu.com/p/665170554

注意,第10行在部分文章中错写成了diag的逆,应该根据这篇文章的伪代码为准(推测是之前存在笔误,改了之后又重新上传了)。

这里FlashAttention2与FlashAttention1看起来有很大差别,推导如下;

  1. 首先比较重要的一点是,在FA2里,关于m, P的计算都没有mijm_{ij}mij, pijp_{ij}pij的概念,而是直接计算mim_imi和minewm_i^{new}minew,pip_ipi和pinewp_i^{new}pinew。因此此处的mijm_i^jmij就是FA1中的mijm_{ij}mij - minewm_i^{new}minew。另外此处的P也就是FA1中的emij−minew∗Pe^{m_{ij} - m_i^{new}} * Pemij−minew∗P。
  2. 另外第二个点,就是在中间的迭代中不计算L,只在最后一个迭代计算。
相关推荐
starvapour1 天前
CUDA_VISIBLE_DEVICES与nvidia-smi显卡序号不一致的问题
python·ai·cuda
西西弗Sisyphus2 天前
从零实现Transformer:第 2 部分 - 缩放点积注意力(Scaled Dot-Product Attention)
transformer·attention·注意力机制·注意力
大数据在线2 天前
AI计算新生态:旧地图找不到新大陆
cuda·昇腾·cann·英伟达·deepseek
西西弗Sisyphus3 天前
Transformer 架构里关于 Attention 概念的澄清
transformer·attention·注意力机制·注意力·self-attention
qq762118224 天前
windows10 升级cuda 版本
cuda
yx868xy7 天前
Cuda加速直线拟合
c++·cuda
lizz317 天前
使用 nsys + gdb 寻找阻塞 API (cuKernelSetAttribute) 并解决
linux·cuda·sglang
ouliten9 天前
cuda编程笔记(41)--异步数据拷贝
笔记·cuda
ouliten10 天前
cuda编程笔记(40)--Pipelines(流水线)
笔记·cuda
liuyunshengsir10 天前
掌握CUDA 编程中四个核心的内建变量threadIdx、blockIdx、blockDim 和 gridDim
cuda