利用率飙升至%!英伟达亲自下场三代升级
明敏克雷西发自凹非寺
量子位|公众号QbitAI
大模型训练推理神作,又更新了!
主流大模型都在用的FlashAttention
,刚刚升级第三代。
时隔一年,FlashAttention-3已经全方位升级。
训练速度提升1.5-2倍
,FP16下计算吞吐量高达740TFLOPs/s,达理论最大吞吐量75%
,更充分利用计算资源,此前只能做到35%。
FP8下速度接近1.2PFLOPs/s!
同时误差也进一步减小,FP8下的误差比标准Attention减少2.6倍
。
而且这一次,不再是一作TriDao单打独斗,FlashAttention-3直接和英伟达
、Meta、谷歌等合作,针对最强芯片H100专门做优化。
英伟达CUTLASS团队和cuDNN团队,都直接为该研究提供支持。
同时和前作一样,FlashAttention-3也将开源,PyTorch和HuggingFace中都集成。
作者之一VijayThakkar激动表示:
曾经在FA2发布时,我就说过这句话。今天,我想再说一次:
看到CUTLASS和CuTe被用来开让TensorCore大显身手的新算法,真的泰裤辣。
前StableDiffusion老板Emad也非常关注这一进展,他推测使用FlashAttention-3,能将4090的FP8计算吞吐量推升到700 TFLOPs。
充分利用Hopper架构特点
自初代发布以来,FlashAttention已经使大模型速度提高了4-8倍,但还有一个遗憾:尚未充分利用现代GPU。
针对英伟达H100倍后的Hopper架构新特性,三代进行了专门优化。
整个系列的核心思路,是IO感知优化
和分块处理
作者认为,传统的注意力机制效率低的原因,在处理长序列时,会出现内存访问操作频繁,以及算法复杂度指数级暴增这两大问题。
FlashAttention通过IO感知优化将数据从较大但缓慢的高带宽内存(HBM)加载到较小但更快的片上内存(SRAM),在SRAM中执行计算,减少了内存读写操作的次数。
分块处理则是将输入序列分成若干小块,每次只处理一个小块的数据。这种方法使得每次处理的数据量减少,从而降低了内存使用和计算复杂度。
这样一来,两个关键问题就得到了解决,这两大核心思想也在本次的FlashAttention-3中得到了继承。
△第一代FlashAttention原理图
但是,第一代的FlashAttention也遗留下了并行性不够强、工作分区划分不合理,以及非矩阵乘法较多(GPU计算单元处理矩阵乘法比非矩阵速度更快)的问题。
针对这一问题,第二代FlashAttention通过重写softmax,减少了重新缩放操作、边界检查和因果屏蔽操作的次数,使得大部分计算集中在矩阵乘法上。
另外,FlashAttention-2引入了序列长度维度上的并行化,并针对工作在线程块之间的分配进行了优化,GPU利用效率更高了。
可以说前两代当中,作者一直坚持着充分利用硬件特点这一思路,但站在今天的视角来看,对硬件的挖掘仍然不够充分。
到了这次的FlashAttention-3,由于是直接和英伟达官方合作,对英伟达Hopper架构特点的理解更加透彻,软硬件之间的协同进一步增强了。
FlashAttention-3的技术报告显示,为了充分匹配Hopper架构,团队主要做了三方面的技术升级。
首先,Hopper架构的一个重要特点是TensorCore的异步性,FlashAttention-3针对性地提出了一种异步方式。
具体来说,FlashAttention-3引入了一种“生产者(Producer)-消费者(Consumer)”的编程模型,将注意力的计算划分为两个角色。
△Hopper中的张量内存加速器
为了实现角色的划分,作者引入了warp专门化技术,用不同的warp分别匹配生产者和消费者,让两者可以并行执行。
这其中利用了Hopper架构的动态warp寄存器分配特性,通过setmaxnreg指令优化了寄存器资源的利用。
为了进一步提高GPU的利用率,作者又提出了一种“乒乓调度”策略,让一个warp组执行矩阵乘法时,另一个warp组执行softmax,从而实现计算的重叠。
具体讲,FlashAttention-3使用CUDA的同步原语控制不同warp组之间的执行顺序,让不同warp组分别执行两种运算,然后像乒乓球一样交替运行。
第二大技术特点,是warp组内部GEMMs和softmax的重叠,核心奥义是重新安排计算的执行顺序以提高GPU利用率。
与乒乓调度不同,这里的计算重排处理的是warp组内部的重叠,而乒乓调度更关注组间协调。
实现方式上,FlashAttention-3提出了一种两阶段GEMM-softmax流水线方案,以打破不同操作之间的数据依赖。
通过引入额外的寄存器和共享内存缓冲区,FlashAttention-3实现了跨迭代的数据传递和重用。
在每个迭代中,Q·K^T的结果首先存储在名为S_cur的缓冲区中,用于当前迭代的softmax计算,同时异步执行下一个迭代的Q·K^T矩阵乘法,结果存储在名为S_next的缓冲区中。
在执行当前迭代的P·V矩阵乘法时,异步执行下一个迭代的softmax操作,并更新S_cur和S_next缓冲区。
第三项更新,是用更低的FP8精度替代FP16。
实际上,降低数值精度是一种常见的优化策略,可以显著提高GPU的计算吞吐量和能效,HopperGPU也引入了FP8精度的TensorCore支持。
但是,直接将注意力计算从FP16转换为FP8可能会引入较大的精度损失。
另外,FP8TensorCore对输入数据的布局也有特定的要求(K维度连续),不幸的是,注意力计算中的输入数据存储格式(头维度连续)并不符合这样的要求。
所以FlashAttention-3首先引入了一系列内存布局转换技术,动态转置V矩阵的块,改变其连续方式,从而适配FP8TensorCore的布局要求。
在此基础之上,为了获得更高的计算精度,FlashAttention-3又采用了分块量化
和非相干处理
技术。
传统的量化方法通常对整个矩阵使用一个统一的缩放因子(per-tensorquantization),无法很好地适应不同区域的数值范围。
FlashAttention-3则采用了分块量化(block-wisequantization)的策略,为每个块单独设置缩放因子,更好地捕捉局部的数值分布。
非相干处理(incoherentprocessing)技术则是通过随机正交矩阵对输入数据进行旋转,破坏不同块之间的相干性,利用率飙升至%!英伟达亲自下场三代升级减少量化误差的传播。
这两项技术的结合使得FlashAttention-3在FP8精度下取得了更高的计算精度,显著优于传统的量化方法。
结果,与基于传统量化方法的FP8实现相比,FlashAttention-3的使得精度提高了2.6倍。
比标准Attention快16倍
以上就是FlashAttention-3在充分研究Hopper架构特点后做出的三大更新,针对更新后的表现,作者主要进行了3方面测试。
首先来看注意力基准测试。
通过改变序列长度(512、1k、……16k),并设置批大小以确保总token数为16k。研究人员将隐藏维度设置为2048,头维度设置为64、128或258,计算前向传播、后向传播。
对比标准Attention、FlashAttention-2、Triton、cuDNN和FlashAttention-3,在H10080GBSXM5上FP16的运行时间。
FlashAttention-3的前向传播比FlashAttention-2快1.5-2倍,后向传播快1.5-1.75倍。
与标准Attention相比,FlashAttention-3的速度快了3-16倍。
对于中长序列(1k以上),FlashAttention-3甚至超过了专门为H100优化的cuDNN。
在消融实验中,通过对非因果FP16FlashAttention-3进行了2阶段WGMMA-softmax流水线和warp特殊化的消融研究,参数固定为{batch,seqlen,nheads,hdim}={4,8448,16,128}。
结果证实,FlashAttention-3改进带来了显著加速,从570提升到661。
另外,因为对FlashAttention的数值误差感兴趣,研究团队还将FlashAttention-2、FlashAttention-3和标准Attention进行了比较。
为了模拟LLMs中的异常特征和激活,研究团队生成了Q、K、V的条目,分布为:N(0,1) N(0,100)⋅Bernoulli(0.001)
也就是说,每个条目都服从均值为0、标准差为1的正态分布,但对于0.1%的条目,增加了一个独立的项,其标准差为10。然后测量均方根误差(RMSE)。
结果显示,在FP16中,由于中间结果(softmax)保留在FP32中,FlashAttention-2和FlashAttention-3的RMSE比标准Attention减少1.7倍
FP8的标准Attention使用每个张量的缩放,matmul累加器在FP32中,中间softmax结果保留在FP16中。由于块量化和非相干处理,FP8中的FlashAttention-3比这个基线更准确2.6倍
最后,论文还表示目前工作专注于Hopper架构,后续将推广到其他硬件。
除了英伟达为研究提供了技术支持外,Meta、TogetherAI和普林斯顿大学为研究提供了计算支持。
相关文章
-
计算机网络技术及应用,从基础到未来趋势的全面解析详细阅读
在当今信息化时代,计算机网络技术已经成为现代社会的重要支柱之一,无论是日常生活中的社交媒体、在线购物,还是企业中的云计算、大数据分析,都离不开计算机网...
2026-05-09 5
-
轻松掌握LEFT函数,从入门到精通的实用指南详细阅读
什么是LEFT函数?LEFT函数是Excel中的一个文本函数,它的作用是从一个字符串的开头开始提取指定数量的字符,LEFT函数就像是一个“裁缝”,它会...
2026-05-09 5
-
透明Flash模块,数字世界中的隐形魔术师详细阅读
引言:什么是透明Flash模块?在当今数字化时代,技术的每一个细节都像是一块拼图,共同构建了我们所依赖的现代生活,而在这无数的技术组件中,“透明Fla...
2026-05-09 6
-
3GPP播放器全解析,功能、优势与实用指南详细阅读
什么是3GPP播放器?在数字化媒体和移动通信高速发展的今天,视频和音频文件的格式种类繁多,3GPP(Third Generation Partners...
2026-05-09 7
-
Excel变身图片大师!轻松搞定数据展示与分享详细阅读
在日常办公中,Excel无疑是我们的得力助手,它像一个万能的工具箱,无论是财务报表、项目计划表,还是客户名单,都能被整理得井井有条,但你有没有遇到过这...
2026-05-09 4
-
搜狗浏览器主页,高效浏览与个性化定制的完美结合详细阅读
在当今数字化时代,浏览器已经成为我们日常生活中不可或缺的工具,无论是工作、学习还是娱乐,浏览器都扮演着连接我们与互联网的重要角色,而作为国内知名的一款...
2026-05-09 4
-
八爪鱼数据采集器,轻松玩转大数据的秘密武器详细阅读
在当今这个信息爆炸的时代,数据已经成为我们生活和工作中不可或缺的一部分,无论是企业决策、市场分析,还是个人学习与研究,获取准确且丰富的数据都至关重要,...
2026-05-09 6
-
手机流量告急?试试这些最省流量的浏览器,轻松畅游互联网!详细阅读
在这个“流量为王”的时代,手机已经成为我们生活中不可或缺的一部分,无论是刷短视频、看新闻,还是查找资料、在线购物,手机浏览器都是我们的得力助手,每个月...
2026-05-09 5
