Flash attention 公式解读

4种Flash Attention变体:显存优化与长上下文训练实战指南 注意力机制是Transformer模型的核心,但传统softmax注意力在长序列下引发严重内存带宽瓶颈和显存爆炸。Flash Attention通过块状计算、在线softmax归一化与IO感知调度,在不改变模型数学本质的前提下,显著降低中间态存储与HBM访存开销。其主流变体——Flash Attention v1/v2、PagedAttention与Ring Attention,分别面向训练显存优化、推理KV缓存管理与无限长度序列支持,已广泛应用于Llama、Qwen等主流大模型的微调与部署。本文结合A10 阅读详情

论文链接

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

这个论文解释的挺好,不过不足之处在于对于公式为什么这样推倒没有做解释,对于小白来说可能未必很友好(当然我也是小白,所以开始读的时候有点费劲),所以此处增加几处注释。

以下章节为注释点。

为什么可以从3个循环,变成两个循环(原文2.4)

朴素的softmax方式我们已经知道怎么做了,是一个比较容易理解的三层循环。

我们写个简单的例子

2.4章节里所谓的3个循环,变成两个循环,其实就是把第二个循环里的逻辑和第一个循环里的逻辑进行了融合。

我们可以看到第二个循环里,标红的mN,这个是第二次循环必须存在的理由。

所以出现了如下公式

该公式上来先看第一行,也即红框部分。我们试着写在上面的图里。

我们可以看到,最终红框里两个结果是一模一样的,证明按照变成循环的方式,是可行的,是完全可以把第二层循环融入到第一层循环的。

但是这里出现了新问题,我们这里四个元素,循环四次,按照新的方式,也是每一次都要累加啊,尤其是最后一次循环,累加了三个元素,有点拆东墙补西墙的意思,如果第二次循环逻辑融入到第一次循环里,如下图所示

甲逻辑变成乙逻辑,我们肯定一定有优化,但是甲逻辑变成丙逻辑,我们就有点不确定了。

所以,别急。

红框下面的公式推导,成功的把红框里的累加,变成了一个非累加操作。说白了就是借助最外层的i循环,进行递推。

所以可以清楚的看到

3 层循环变成了2层(图中代码缩进有点问题).

学到的一个重要的形式

如上章节我们知道了三层怎么变成两层的,但是还有一个重要的形式需要记住。

如果我们再碰到这种形式,就能马上联想到上面的第二层循环优化,看看这个xxx逻辑能不能和上面的循环进行融合(方式如上一个章节),后文的attention阶段,把2层循环变成1层循环,用的就是这个解决方式。

attention: 2层循环优化成了1层循环(原文2.5)

正文来啦。

这里写出了2层循环逻辑的attention逻辑。

我们注意到第二层循环用到了mN这个变量。我们想想办法,能不能照葫芦画瓢,把最后一层循环给优化掉呢?

第一步,对公式优化下。

上面的红框优化成了下面的红框,变成了我们刚学到的那个重要的形式。

第二步,

开始改写下面的红框,变成累加形式。

我们推测,这种累加形式,应该和上面一样,可以变成非累加形式,这里推导过程如下。

最终,优化成了一层。

经验

学习东西,最好学完后自己给自己讲一遍,问题上什么,怎么解决的,为什么这么解决,有哪些隐藏的细节自己没有发现,书要越读越厚。

Flash Attention 为什么那么快?原理讲解_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV1aa4y1r7Fb/?spm_id_from=333.337.search-card.all.click&vd_source=e9d2c78cfdedcc7ab55152a4751709a1

论文分享:从Online Softmax到FlashAttention-2_哔哩哔哩_bilibili

『大模型笔记』FlashAttention技术细节介绍! Flash attention 最近变得非常流行,因为它能高效地进行训练。这是一种对 IO 有感知的精确注意力方法。通过减少对 GPU 高带宽内存(HBM)的访问,它避免了在前向和反向传播过程中存储大型注意力矩阵(QKTQK^TQKT。这种方法基于一个简单的原理:softmax 是一种代数运算。该方法具有通用性,适用于包括规范化、块稀疏注意力和 dropout 在内的多种注意力机制变体。作者在 BERT、GPT2 和 Transformer 上展示了显著的性能提升。 阅读详情

相关推荐

SA8155 QNX显示框架与WFD配置实战:从黑屏排查到高可用设计

智能座舱中,车载显示系统的稳定性直接关系到驾驶安全。QNX作为高安全性的操作系统,在座舱仪表、ADAS等关键域中承担着确定性调度与隔离职责,其图形体系Screen与显示输出框架WFD协同工作,构成从应用渲染到面板点亮的完整链路。WFD配置涉及时序、通道映射与行为控制,任何参数偏差或加载异常都可能导致黑屏、花屏等故障。为保障系统可用性,需结合心跳监控、日志采集、通路重试与备份显示切换等策略,构建兼具快速感知与恢复能力的防御体系。本文以SA8155平台为例,深入拆解QNX显示框架的架构与WFD配置要点,结合一次

weixin_29165465的博客 203

大模型训练加速之FlashAttention系列:爆款工作背后的产品观

知乎:方佳瑞原文:https://zhuanlan.zhihu.com/p/664061672纯学术分享,侵删FlashAttention(FA)是一系列针对Transformer模型训练和推理加速方案。自从发布以来,历经了多次迭代,并借着其节省显存、加速计算、使用简单的特性,目前已经是大模型训练必备之良药。FA的论文,一年多就有242个引用,作为一个做底层优化的论文,也是前无古人了。不过仔细研究...

zenRRan的博客 1050

Springboot信息泄露以及heapdump的利用

努力是为了不平庸~安全有些时候是枯燥的,这一次,让我们先人一步,趣学渗透!

LiBai'S BLOG 3万+

【大模型训练】Flash Attention详解

FlashAttention系列工作,是一种加速注意力计算方法,目前已经应用在:GPT-3、Falcon2(阿联酋大模型)、Llama2、Megatron-LM、GPT-4等流行LLM上。并且FlashAttention2已经集成到了pytorch2.0中,可以很便捷的调用。1. FlashAttention动机,可以看出由于Transformer中self-attention 的时间和内存复杂度是序列长度的二次方,所以序列过长时,算法速度会变慢,需要消耗很高的内存,导致低效的。

weixin_43799388的博客 6752

具身智能的建模和方法(具身智能入门一)

本文以机械臂将小红方块移动到目标位置为例对具身智能的建模和方法进行介绍,如下图所示,该例子来自https://ai-workshops.github.io/building-and-working-in-environments-for-embodied-ai-cvpr-2022/。

weixin_39699362的博客 1462

【STM32】STM32F407实现简单的Modbus协议

1.ModBus协议简介 MODBUS协议是一种串行通信协议,由Modicon公司(施耐德公司前身)发表,由于其公开发表且无版权要求,易于部署和维护,在工业界广泛应用。MODBUS采用主从通信(Master/Slave),MODBUS有三种报文格式:ASCII、RTU、TCP,本文主要讨论RTU。 如下图所示,串行通信上的MODBUS协议主要由地址,功能码,数据,CRC校验四部分数据帧构成。主机和从机的串行通信设备要求一致,参数要求一致,即假设使用串口,主从机波特率,奇偶校验...

BadBoyHolly的博客 8183

Flash Attention源码学习之原理(第一篇)

V - Value, 内存张量,Shape是[Batch, Seq_len_kv, Head_num, Hide_dim]K - Key, 索引张量,Shape是[Batch, Seq_len_kv, Head_num, Hide_dim]Q - Query, 查询张量,Shape是[Batch, Seq_len, Head_num, Hide_dim]- 特征维度,主要是为了控制矩阵点乘后的范围,以确保softmax的梯度稳定性,经常取值等于Hide_dim。Self-Attention 公式如下。

PeterPan的博客 1430

微信小程序 - 真机调试调用接口报错{errno: 600001, errMsg: “request:fail -102:net::ERR_CONNECTION_REFUSED},真机运行测试请求异常

微信小程序,真机,调试测试,运行报错,API接口,服务器接口都报错了,小程序报错errno: 600001,小程序报错request:fail -102:net::ERR_CONNECTION_REFUSED,真实手机打开接口全都失效了,微信小程序真机测试失败,微信小程序{errno: 600001, errMsg: "request:fail -102:net::ERR_CONNECTION_REFUSED"},详细解决方法,https,服务器SSL证书,无法解决,服务器更换SSL证书,接口地址改了也不行

🏆 前端领域优质创作者 1万+

大模型高效注意力机制全解析:FlashAttention 与稀疏注意力实战

自定义注意力测试代码的目的是通过对比标准注意力和 FlashAttention 的计算时间和输出差异,直观地展示 FlashAttention 的加速效果和准确性。下面详细解释测试代码的实现逻辑和典型输出的含义,以及如何通过测试对比不同注意力机制的性能。# 生成测试数据n = 4096 # 序列长度d = 128 # 特征维度# 标准计算# FlashAttention计算print(f"标准耗时: {std_time:.3f}s")

zhangzhentiyes的博客 2493

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3436

claude-hub:GitHub上的AI开发助手,让Claude自动帮你写代码、审代码、合代码

代码不再是人写的,而是人引导 AI 写的。在这个时代,GitHub 不再只是一个代码托管平台,而是 AI 开发代理的工作台。每一个 issue、每一条 PR,都可能是一次与 AI 合作的机会。未来属于那些敢于把开发流程交给 AI 来优化的人——他们不是在取代自己,而是在放大自己的影响力。📌关注本系列文章,我们将持续输出关于 AI 编程、GitHub 自动化、AI Agent 产品化的深度分析。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 1370

Gemma-3多模态大模型惊艳效果:图表数据解读、手写公式识别、菜单翻译实例

本文介绍了如何在星图GPU平台上自动化部署💎 Gemma-3 多模态大模型 Pixel Studio镜像,实现多模态AI应用的快速搭建。该镜像具备强大的视觉理解能力,可应用于专业图表数据解读、手写公式识别等场景,显著提升商业分析和教育辅助效率。

weixin_26805451的博客 27

银河麒麟高级服务器V11操作系统安装部署zabbix监控平台的实操保姆级教程

本文详细介绍了在《银河麒麟高级服务器V11上安部署Zabbix监控系统的全过程》涵盖了zabbix监控系统涉及到的所有软件安装、参数优化、服务启动验证及防火墙配置等一系列实操。其中关于安装过程报错undefined symbol: usmAES256CiscoPrivProtocol;ares_reinit等依赖库问题进行了详细记录与分析解决;还提供了Web前端中文显示修复方案和Admin密码修改方法。实现监控平台的100%部署上线,实现对业务系统的实时监控,保证业务的稳定运行。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 531

DeepSeek V4.1 Flash显存精算与四路部署实战指南

大语言模型推理部署的核心挑战在于显存资源的精确建模与动态调度。随着Flash Attention 3、FP8量化和动态KV缓存等关键技术落地,传统显存估算公式已失效——模型权重、KV cache、激活内存与CUDA运行时开销需分项建模并实测校准。DeepSeek V4.1 Flash作为典型代表,其128K上下文与高并发能力高度依赖硬件感知的配置策略,而非通用参数模板。本文从GPU显存占用原理出发,解析FP8 KV cache压缩机制与PagedAttention内存页管理逻辑,阐明vLLM、SGLang、

weixin_30607125的博客 286

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

CANNOpsTransformer Flash Attention示例

1. `csrc/flash_attn_example/op_host` 算子host实现 2. `csrc/flash_attn_example/op_kernel`算子kernel实现 3. `csrc/flash_attn_example/torch_interface.cpp`算子pytorch层和C++实现层接口 4. `csrc/flash_attn_example/CMakeList

gitblog_01191的博客 761

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CANN Flash Attention算子文档

|产品 | 是否支持 | |:----------------------------|:-----------:| |<term>Ascend 950PR/Ascend 950DT</term>| √ | |<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>| × | |<term>Atlas A2 训练系列产品

gitblog_00945的博客 991

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

CANN Flash Attention算子说明

|产品 | 是否支持 | |:----------------------------|:-----------:| |<term>Ascend 950PR/Ascend 950DT</term>| √ | |<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>| × | |<term>Atlas A2 训练系列产品

gitblog_00338的博客 449

cann/ops-transformer 中 kv_quant_sparse_flash_attention 算子 torch API 使用指南:量化稀疏 Flash Attention 计算详解

本文是 `kv_quant_sparse_flash_attention` torch 接口(对应 CANN 算子 `KvQuantSparseFlashAttentionV2`)的完整使用指南,该接口位于本仓库 [attention/kv_quant_sparse_flash_attention_v2](https://link.gitcode.com/i/69aa1fa90b537c42f2c

gitblog_00588的博客 859

CANN/ops-transformer Flash Attention算子

- <term>Ascend 950PR/Ascend 950DT</term>:支持 - <term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:不支持 - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>:不支持 - <term>Atlas 200I/500 A2 推理产品</term>:不支持 - <term>Atla

gitblog_00642的博客 451

Flash-Attention 1&2 论文理解

Flash-Attention 1&2 论文理解

毛财胜的专栏 987

PyPTO-Gym 算子解读:Flash Attention HiFP8 前向 Kernel 的量化域设计与 varlen 实现

本文基于 PyPTO-Gym 仓库中的 [flash_attention_fp8 算子文档](https://link.gitcode.com/i/bf986f46227253270a6d0d78cfbfd5d0),系统讲解基于 PyPTO 框架实现、运行于 Ascend NPU 的 Flash Attention HiFP8(HF8 量化格式)前向传播算子:包括其与 BF16 版本的核心差异、p

gitblog_00877的博客 458

从 Flash Attention 到 Speculative Decoding:大模型推理加速最全解读

大模型生成慢,本质是每生成一个 Token 都要和前面所有 Token 算一遍注意力。本文从底层原理出发,拆解 Flash Attention(优化数据搬运)、KV Cache(空间换时间)、MQA/GQA/MLA(压缩缓存)、Sliding Window(限制注意力范围)、Pruning(丢弃冗余 K/V)和跨对话 Cache(Agent 场景复用)六类方案。核心结论:没有免费的加速,速度、显存、模型效果三者始终需要权衡取舍。

Kstheme的博客 363

TileGym Flash Attention系列:FMHA Prefill/Decode、MLA与Split-KV内核实现深度解读

TileGym 是一个基于 CUDA Tile 的 GPU 内核库,提供面向 tile 编程的内核教程与样例。本文带你深度解读它的 **Flash Attention 内核家族**:FMHA Prefill(长上下文前向)、FMHA Decode(自回归解码)、MLA(Multi-head Latent Attention)以及关键的 **Split-KV** 拆分归约优化,拆解 tile 划分、

gitblog_00042的博客 158

图解大模型计算加速系列:Flash Attention V2,从原理到并行计算

来自:大猿搬砖简记大家好,这就为您献上不知鸽了多久的Flash Attention V2原理解读。在V1的讲解中,我们通过详细的图解和公式推导,一起学习了Flash Attention的整体运作流程。如果大家理解了V1的这块内容,就会发现V2的原理其实非常简单:无非是将V1计算逻辑中的内外循环相互交换,以此减少在shared memory上的读写次数,实现进一步提速。那当你交换了循环位置之后,在c...

zenRRan的博客 5370

CANN / ops-transformer NPU Flash Attention 算子文档

|产品 | 是否支持 | |:----------------------------|:-----------:| |<term>Ascend 950PR/Ascend 950DT</term>| √ | |<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>| × | |<term>Atlas A2 训练系列产品

gitblog_00702的博客 503

Ruflo Dream Cycle 性能 SOTA 报告深度解析:实测基准、Flash Attention 声明审计与 Tier-4 推理优化路线

> 本文围绕 Ruflo 仓库中 `docs/dream-cycle/2026-06-15-performance-sota.md` 这份夜间研究(Dream Cycle)会话报告展开。它讲解 Ruflo 如何以「实测优先」的方式追踪 2026 年大模型推理性能 SOTA:盘点 Ruflo 自身已实测的加速能力(HNSW、Int8、SONA、MoE 门控),审计未经基准验证的 Flash Atte

gitblog_00267的博客 1022
上一篇: c++ move关键字
lycommand
博客等级 码龄14年 31粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值