【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,只在最后一个迭代计算。
相关推荐
王小义笔记1 天前
CUDA 版本下 Transformers 报错排查与解决办法
llm·transformer·cuda
努力的章鱼bro3 天前
CUDA编程模型
c++·cuda
努力的章鱼bro6 天前
CUDA编程入门
c++·人工智能·cuda
一条大祥脚8 天前
【Tilelang入门】Tilelang Puzzles 07
attention·softmax·tilelang·flash-attention·tilelang-puzzle·online-softmax
June`10 天前
并行计算的本质:为何需要它???
人工智能·cuda
西西弗Sisyphus12 天前
构建中文版的 nanoGPT - 断点续训(resume from checkpoint)
transformer·attention·注意力·self-attention·nanogpt
西西弗Sisyphus12 天前
构建中文版的 nanoGPT - 中文版 nanoGPT 的分词(tokenization)
transformer·attention·注意力·self-attention·nanogpt
爱听歌的周童鞋13 天前
YOLO26-Sem推理详解及部署实现
tensorrt·cuda·语义分割·高性能·yolo26-sem
fpcc14 天前
并行编程实战——CUDA基础的知识点
c++·cuda
Together_CZ14 天前
Windows 下 CUDA / cuDNN / PyTorch GPU 训练环境搭建完整指南:虚拟环境与系统级环境两种方案
virtualenv·nvidia·cuda·cudnn·rtx 5060