泉源 :量子位
时隔一年,FlashAttention-3已经全方位升级。练习 速率 提拔 1.5-2倍,FP16下盘算 吞吐量高达740TFLOPs/s,达理论最大吞吐量75%,更充实 利用 盘算 资源,此前只能做到35%。FP8下速率 靠近 1.2PFLOPs/s!同时偏差 也进一步减小,FP8下的偏差 比标准 Attention镌汰 2.6倍。
大模子 练习 推理神作,又更新了!
主流大模子 都在用的FlashAttention,刚刚升级第三代。
时隔一年,FlashAttention-3已经全方位升级。
练习 速率 提拔 1.5-2倍,FP16下盘算 吞吐量高达740TFLOPs/s,达理论最大吞吐量75%,更充实 利用 盘算 资源,此前只能做到35%。
FP8下速率 靠近 1.2PFLOPs/s!
同时偏差 也进一步减小,FP8下的偏差 比标准 Attention镌汰 2.6倍。
而且这一次,不再是一作Tri Dao单打独斗,FlashAttention-3直接和英伟达、Meta、谷歌等相助 ,针对最强芯片H100专门做优化。
英伟达CUTLASS团队和cuDNN团队,都直接为该研究提供支持。
同时和前作一样,FlashAttention-3也将开源,PyTorch和Hugging Face中都集成。
作者之一Vijay Thakkar冲动 表现 :
曾经在FA2发布时,我就说过这句话。本日 ,我想再说一次:
看到CUTLASS和CuTe被用来开让Tensor Core大显技艺 的新算法,真的泰裤辣。
前Stable Diffusion老板Emad也非常关注这一盼望 ,他推测利用 FlashAttention-3,能将4090的FP8盘算 吞吐量推升到700+TFLOPs。
充实 利用 Hopper架构特点
自初代发布以来,FlashAttention已经使大模子 速率 进步 了4-8倍,但尚有 一个遗憾:尚未充实 利用 当代 GPU。
针对英伟达H100倍后的Hopper架构新特性,三代举行 了专门优化。
整个系列的核心 思绪 ,是IO感知优化和分块处理 惩罚 。
作者以为 ,传统的留意 力机礼服 从 低的缘故起因 ,在处理 惩罚 长序列时,会出现内存访问操纵 频仍 ,以及算法复杂度指数级暴增这两大题目 。
FlashAttention通过IO感知优化将数据从较大但迟钝 的高带宽内存(HBM)加载到较小但更快的片上内存(SRAM),在SRAM中实行 盘算 ,镌汰 了内存读写操纵 的次数。
分块处理 惩罚 则是将输入序列分成多少 小块,每次只处理 惩罚 一个小块的数据。这种方法使得每次处理 惩罚 的数据量镌汰 ,从而低落 了内存利用 和盘算 复杂度。
如许 一来,两个关键题目 就得到了办理 ,这两大核心 头脑 也在本次的FlashAttention-3中得到了继承 。
但是,第一代的FlashAttention也遗留下了并行性不敷 强、工作分区分别 不公道 ,以及非矩阵乘法较多(GPU盘算 单位 处理 惩罚 矩阵乘法比非矩阵速率 更快)的题目 。
针对这一题目 ,第二代FlashAttention通过重写softmax,镌汰 了重新缩放操纵 、边界 查抄 和因果屏蔽操纵 的次数,使得大部分 盘算 会合 在矩阵乘法上。
别的 ,FlashAttention-2引入了序列长度维度上的并行化,并针对工作在线程块之间的分配举行 了优化,GPU利用 服从 更高了。
可以说前两代当中,作者不停 对峙 着充实 利用 硬件特点这一思绪 ,但站在本日 的视角来看,对硬件的发掘 仍旧 不敷 充实 。
到了这次的FlashAttention-3,由于是直接和英伟达官方相助 ,对英伟达Hopper架构特点的明白 更加透彻,软硬件之间的协同进一步加强 了。
FlashAttention-3的技能 陈诉 表现 ,为了充实 匹配Hopper架构,团队重要 做了三方面的技能 升级。
起首 ,Hopper架构的一个紧张 特点是Tensor Core的异步性,FlashAttention-3针对性地提出了一种异步方式。
具体 来说,FlashAttention-3引入了一种“生产者(Producer)-斲丧 者(Consumer)”的编程模子 ,将留意 力的盘算 分别 为两个脚色 。
“生产者”负责将数据从HBM异步加载到片上共享内存(SMEM)。这个过程重要 利用 了Hopper GPU的张量内存加快 器(TMA),可以在不壅闭 CUDA核心 的环境 下举行 数据传输。
斲丧 者直接从共享内存读取数据,并利用 Tensor Core实行 矩阵乘法等盘算 麋集 型任务 。由于共享内存的访问耽误 远低于全局内存,斲丧 者可以快速获取所需数据,提拔 盘算 服从 。
为了实现脚色 的分别 ,作者引入了warp专门化技能 ,用差别 的warp分别匹配生产者和斲丧 者,让两者可以并行实行 。
这此中 利用 了Hopper架构的动态warp寄存器分配特性,通过setmaxnreg指令优化了寄存器资源的利用 。
为了进一步进步 GPU的利用 率,作者又提出了一种“乒乓调治 ”战略 ,让一个warp组实行 矩阵乘法时,另一个warp组实行 softmax,从而实现盘算 的重叠。
具体 讲,FlashAttention-3利用 CUDA的同步原语控制差别 warp组之间的实行 次序 ,让差别 warp组分别实行 两种运算,然后像乒乓球一样瓜代 运行。
第二大技能 特点,是warp组内部GEMMs和softmax的重叠,核心 奥义是重新安排盘算 的实行 次序 以进步 GPU利用 率。
与乒乓调治 差别 ,这里的盘算 重排处理 惩罚 的是warp组内部的重叠,而乒乓调治 更关注组间和谐 。
实现方式上,FlashAttention-3提出了一种两阶段GEMM-softmax流水线方案,以冲破 差别 操纵 之间的数据依靠 。
第一阶段,当前迭代(iteration)的softmax操纵 与下一个迭代的Q·K^T矩阵乘法重叠实行 。
第二阶段,当前迭代的P·V矩阵乘法与下一个迭代的softmax操纵 重叠实行 。
通过引入额外的寄存器和共享内存缓冲区,FlashAttention-3实现了跨迭代的数据转达 和重用。
在每个迭代中,Q·K^T的结果 起首 存储在名为S_cur的缓冲区中,用于当前迭代的softmax盘算 ,同时异步实行 下一个迭代的Q·K^T矩阵乘法,结果 存储在名为S_next的缓冲区中。
在实行 当前迭代的P·V矩阵乘法时,异步实行 下一个迭代的softmax操纵 ,并更新S_cur和S_next缓冲区。
第三项更新,是用更低的FP8精度更换 FP16。
实际 上,低落 数值精度是一种常见的优化战略 ,可以明显 进步 GPU的盘算 吞吐量和能效,Hopper GPU也引入了FP8精度的Tensor Core支持。
但是,直接将留意 力盘算 从FP16转换为FP8大概 会引入较大的精度丧失 。
别的 ,FP8 Tensor Core对输入数据的布局 也有特定的要求(K维度连续 ),不幸的是,留意 力盘算 中的输入数据存储格式(头维度连续 )并不符合如许 的要求。
以是 FlashAttention-3起首 引入了一系列内存布局 转换技能 ,动态转置V矩阵的块,改变其连续 方式,从而适配FP8 Tensor Core的布局 要求。
在此底子 之上,为了得到 更高的盘算 精度,FlashAttention-3又采取 了分块量化和非干系 处理 惩罚 技能 。
传统的量化方法通常对整个矩阵利用 一个同一 的缩放因子(per-tensor quantization),无法很好地顺应 差别 地区 的数值范围。
FlashAttention-3则采取 了分块量化(block-wise quantization)的战略 ,为每个块单独设置缩放因子,更好地捕获 局部的数值分布。
非干系 处理 惩罚 (incoherent processing)技能 则是通过随机正交矩阵对输入数据举行 旋转,粉碎 差别 块之间的干系 性,镌汰 量化偏差 的传播 。
这两项技能 的连合 使得FlashAttention-3在FP8精度下取得了更高的盘算 精度,明显 优于传统的量化方法。
结果 ,与基于传统量化方法的FP8实现相比,FlashAttention-3的使得精度进步 了2.6倍。
比标准 Attention快16倍
以上就是FlashAttention-3在充实 研究Hopper架构特点后做出的三大更新,针对更新后的表现 ,作者重要 举行 了3方面测试。
留意 力基准测试
溶解 实行
FP8留意 力正确 性测试
起首 来看留意 力基准测试。
通过改变序列长度(512、1k、……16k),并设置批巨细 以确保总token数为16k。研究职员 将隐蔽 维度设置为2048,头维度设置为64、128或258,盘算 前向传播 、后向传播 。
对比标准 Attention、FlashAttention-2、Triton、cuDNN和FlashAttention-3,在H100 80GB SXM5上FP16的运行时间。
FlashAttention-3的前向传播 比FlashAttention-2快1.5-2倍,后向传播 快1.5-1.75倍。
与标准 Attention相比,FlashAttention-3的速率 快了3-16倍。
对于中长序列(1k以上),FlashAttention-3乃至 高出 了专门为H100优化的cuDNN。
在溶解 实行 中,通过对非因果FP16 FlashAttention-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、Together AI和普林斯顿大学为研究提供了盘算 支持。
本文泉源 :量子位,原文标题:《H100利用 率飙升至75%!英伟达亲身 了局 FlashAttention三代升级,比标准 留意 力快16倍》
风险提示及免责条款
市场有风险,投资需审慎 。本文不构成个人投资发起 ,也未思量 到个别用户特别 的投资目标 、财务 状态 或必要 。用户应思量 本文中的任何意见、观点或结论是否符合其特定状态 。据此投资,责任自负 。
0 评论