【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,只在最后一个迭代计算。
相关推荐
CODER03041 天前
ubuntu24.04:降内核+显卡驱动+cuda+cudnn+pytorch+anaconda+pycharm
人工智能·pytorch·深度学习·自然语言处理·cuda·ubuntu24.04·降内核
Zhu7587 天前
GPU驱动与CUDA安装指南
nvidia·cuda
喜壹LittlePrince8 天前
CUDA 入门第一课:从线程索引到向量加法与朴素矩阵乘法
cuda·hpc
xier_ran11 天前
【infra之路】GPU 执行与存储层次全景关系图
人工智能·深度学习·cuda
椒颜皮皮虾྅15 天前
【TensorRTtSharp v4.0】在 C# 中使用 TensorRT CSharp API v4.0 动态编译并运行 CUDA Kernel
android·开发语言·人工智能·深度学习·c#·cuda
Albart57515 天前
vLLM多卡部署终极踩坑:CUDA error worker进程异常退出 完整定位&生产根治方案
cuda·nccl·vllm·大模型部署·多卡推理·大模型踩坑
帅气的小峰17 天前
pybind11与nanobind可以共存吗?如何迁移?
c++·python·cuda·推理引擎
(initial)20 天前
C-05. Kernel Fusion 代价边界:少写回 vs 寄存器压力与 occupancy
c语言·开发语言·cuda
June`23 天前
并发内核执行
c++·人工智能·算法·cuda
Olafur_zbj24 天前
【AI】CUDA的新编程模型:tile编程模型
人工智能·cuda·tile