跳到正文
RadarAI· MarkTechPost(RSS)·· 3 小时前AI 评分38

Zyphra 开源 ZYFA:面向 AMD MI355X 的 FP8 FlashAttention,最高提速 1.76 倍

AI 导读

Zyphra 以 Apache 2.0 许可开源 ZYFA,一套面向 AMD Instinct MI355X 的 FP8/BF16 prefill 注意力 kernel,在真实模型激活上比 AMD 默认的 AITER 快 1.16-1.76 倍。

正文 · AI 翻译

MarkTechPost· Michal Sutter·2026-11-07 01:28· 1 小时前AI 评分46

Zyphra ZYFA:面向 AMD MI355X 的 FP8 FlashAttention,最高提速 1.76 倍

AI 导读

Zyphra 开源了 ZYFA,一套面向 AMD Instinct MI355X 的 FP8/BF16 prefill 注意力 kernel,采用 Apache 2.0 许可。

正文 · 原文

Zyphra 发布了 ZYFA(Zyphra FlashAttention on AMD),这是一套面向 AMD Instinct MI355X GPU 的 FP8 和 BF16 prefill 注意力 kernel。ZYFA 是 Zyphra 面向长上下文 prefill 的 FP8 注意力引擎,代码以 Apache 2.0 许可开源。在真实模型激活值上,其 FP8 kernel 比 AMD 默认 kernel 库 AITER 快 1.16-1.76 倍。在 head dimension 为 128 时,ZYFA 的 FP8 误差比 AITER 低 62-78%。

TL;DR

  • 框架:这是一个 kernel 库。支持 FP8 e4m3 和 BF16 的因果前向(prefill)注意力,head dim 为 128,以及 MLA 形状(192/128)。
  • 运行平台:仅限 AMD Instinct MI355X(CDNA4,gfx950)、ROCm 7.2.3、PyTorch 2.12。可直接替换 flash_attn_func 接口。
  • 性能:在真实激活值上,FP8 吞吐量是 AITER 的 1.16-1.76 倍;BF16 大致持平(1.01-1.02 倍)。
  • 最佳:32K tokens 时达到 2,672 TFLOP/s FP8,为 FP8 规格峰值的 53%(AITER:39%)。
  • 最差:在 Mistral-7B 激活值上仅快 1.16 倍;FP8 时钟降至 1,628 MHz,而 AITER 为 2,108 MHz。

什么是 ZYFA?

ZYFA 以技术论文和 Zyphra 代码的形式发布。它为运行 Zyphra Cloud 的 Zyphra Optimization Engine (ZOE) 提供注意力引擎。BF16 kernel 用 HIP 编写。FP8 kernel 是由 Python 生成器生成的手工调度汇编。

为什么 FP8 注意力在 MI355X 上表现不佳?

FP8 矩阵指令的运行速度是 BF16 峰值的 2 倍。但 FP8 只能加速 QKᵀ 和 PV 这 2 个矩阵乘法。两者之间的 softmax 在向量单元上运行,两种精度的速度相同。

对于 32 个 query 对 128 个 key,FP8 矩阵运算需要 1,024 个周期。精确 FP8 softmax 需要 896 个向量周期。因此 kernel 需要近乎完美的重叠才能让矩阵单元保持忙碌。Zyphra 的线程跟踪显示,AITER 的矩阵流水线有 31.7% 的周期处于空闲状态。

MI355X 不在硬件层面跟踪矩阵指令的完成情况,因此必须通过指令顺序来创造这种重叠。

ZYFA 如何工作?

ZYFA 使用 3 项技术:

Lean P:用一次乘加代替指数运算

e4m3 位模式按整数读取时,值每翻倍一次就增加 8。因此 2^x 的编码大致是 8x 加一个常数。Lean P 用 1 次乘加和 1 次整数转换写出每个 FP8 概率。这将每个块的 softmax 向量周期从 896 减少到 384。

双波乒乓调度

2 个波共享每个 SIMD。一个波发出矩阵指令,另一个波计算概率,然后两者交换。使用 lean P 时,矩阵流水线在稳态周期中有 86% 的时间处于忙碌状态,而使用精确 P 时为 60%。

逐块缩放与舍入行和

每个 64-key 的概率块在舍入前按 2 的幂缩放。CDNA4 的缩放矩阵指令可以零成本消除该因子。ZYFA 还除以舍入后概率之和,每个块用 1 条额外矩阵指令计算。

ZYFA 有多快?

在 16K 和持续时钟下,真实激活的 FP8 加速比为 1.16x(Mistral-7B)、1.17x(Qwen3-8B)和 1.76x(DeepSeek-V2-Lite)。在 32K 的高斯基准测试中,head-dim-128 FP8 内核达到 2,672 TFLOP/s,而 AITER 为 1,944。在 MLA 形状下,它达到 2,464,而 AITER 为 1,237,比值为 1.99x。

在捕获的 Mistral-7B 和 Qwen3-8B 层上,ZYFA 分别达到 1.94 和 1.91 TFLOP/J。AITER 分别为 1.60 和 1.56。

为什么真实模型的增益小于基准测试增益?

MI355X 的时钟取决于有多少操作数位发生翻转。AITER 让更多小概率变成零或次正规数。这些切换的位更少,因此其时钟运行得更高。在 Mistral-7B 层上,ZYFA 运行在 1,628 MHz,而 AITER 运行在 2,108 MHz。ZYFA 总体上仍然需要更少的周期。Zyphra 团队建议在持续时钟下对真实激活进行基准测试。

ZYFA 的 FP8 注意力有多准确?

与 fp64 注意力相比,ZYFA 的 FP8 误差在 Mistral-7B 上是 AITER 的 0.22x,在 Qwen3-8B 上是 0.38x。它与 Composable Kernel 和 Triton 相差在几个百分点以内。在完整的 Mistral-7B 中,与 fp64 的 KL 散度在 ZYFA 下为 3.4×10⁻³,在 AITER 下为 5.9×10⁻³。ZYFA 的输出在 7,200 次启动中也逐位相同。

大多数全模型 FP8 误差来自对 Q、K 和 V 的量化。对 Q 和 K 进行 Hadamard 旋转可将该输入误差大约减半。在 Mistral-7B 上,它使注意力时间增加约 0.1%。

ZYFA 与其他注意力内核相比如何?

特性ZYFA FP8AITER FP8FlashAttention-3FlashAttention-4
开发者ZyphraAMDDao-AILab 等Dao-AILab 等
目标 GPUAMD MI355XAMD MI300X 至 MI355XNVIDIA H100/H800NVIDIA B200(外加 Hopper)
标志性吞吐量2,672 TFLOP/s FP81,944 TFLOP/s FP8(Zyphra 测量)接近 1.2 PFLOP/s FP81,613 TFLOP/s BF16
峰值占比53% FP839% FP8(Zyphra 测量)未披露(FP8)71% BF16
Softmax 方法Lean P,无指数硬件指数通过异步 Tensor Cores 重叠软件模拟指数
FP8 准确率声明误差比 AITER 低 62-78%基线误差比基线 FP8 低 2.6x未披露
范围仅因果预填充前向预填充、解码、MLA、分页前向和反向,FP8 前向前向和反向
许可证Apache 2.0MITBSD-3-ClauseBSD-3-Clause

跨厂商数字来自不同的输入和时钟。Zyphra 未测量 NVIDIA GPU。

关键要点

  • MI355X 上的 FP8 注意力受 softmax 限制,而非矩阵限制。
  • Lean P 用 1 次乘加替换指数。
  • 真实模型增益为 1.16-1.76x,小于基准测试显示的水平。
  • 在 head dim 128 下,FP8 误差比 AITER 降低 62-78%。
  • 仅预填充:无解码、无分页 KV,仅 MI355X。

查看论文、Zyphra 博客文章和 GitHub 仓库。另外,欢迎在 Twitter 上关注我们,别忘了加入我们的 150k+ML SubReddit 并订阅我们的 Newsletter。等等!你在 Telegram 上吗?现在你也可以在 Telegram 上加入我们。

需要与我们合作推广您的 GitHub 仓库或 Hugging Face 页面或产品发布或网络研讨会等?联系我们

文章 Zyphra ZYFA:面向 AMD MI355X 的 FP8 FlashAttention,最高提速 1.76 倍 首次发布于 MarkTechPost。

来源:MarkTechPost · marktechpost.com

来源:RadarAI · aihot.news