【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,只在最后一个迭代计算。
相关推荐
老鱼说AI1 天前
CUDA架构与高性能程序设计:多维网格与数据
c++·人工智能·深度学习·神经网络·机器学习·语言模型·cuda
70asunflower2 天前
CUDA基础知识巩固检验练习题【附有参考答案】(8)
c++·人工智能·cuda
被制作时长两年半的个人练习生2 天前
blackwell和warp specialization的背景下如何理解CTA
gpu·cuda
70asunflower2 天前
CUDA基础知识巩固检验练习题【附有参考答案】(7)
c++·人工智能·cuda
money05343 天前
CUDA C++ Best Practices Guide读书笔记
cuda
老鱼说AI3 天前
CUDA架构与高性能程序设计:异构数据并行计算
开发语言·c++·人工智能·算法·架构·cuda
superior tigre6 天前
权威指南 第四章
c++·cuda·ai infra
ouliten8 天前
[CUTLASS笔记2]host端工具类
c++·笔记·cuda·cutlass
70asunflower10 天前
CUDA编程指南基础知识点总结(5)
c++·人工智能·cuda
70asunflower10 天前
CUDA基础知识巩固检验练习题【附有参考答案】(5)
人工智能·cuda·cpp