FlashQLA – 通义实验室开源的 GDN 算子融合加速库

AI工具2天前更新 老高
9 0

FlashQLA 是一款由通义实验室于 2026 年 6 月发布首个公开版本的线性注意力算子加速库,主要用于加速 GDN 分块预填的前向与反向计算,支持算子融合与门控驱动的卡内序列并行,适用于长上下文预训练、端侧智能体推理与注意力算子优化等场景。

基础信息内容
产品定位面向 GDN 的线性注意力算子库
出品方通义实验室
发布时间2026 年 6 月 30 日(首个公开版本)
开源协议MIT
实现基础基于 TileLang 编写
加速幅度前向约 2 至 3 倍、反向约 2 倍(对 FLA Triton 实现)
适用硬件NVIDIA SM90、SM100、SM103、SM120、SM121
FlashQLA 官方架构示意图

FlashQLA 的核心能力

FlashQLA 只做一件事:把 GDN 的分块预填算得更快。它的三条优化都围绕同一个瓶颈——算子之间的搬运与空闲,而不是改数学。

按门控特性自动开并行

GDN 的门控带指数衰减特性,作者据此把序列切成卡内可并行的段,在张量并行、长序列与小头数场景下自动生效。好处是不需要人工调切分策略,可提高 GPU SM 利用率。 同属推理侧加速的站内项目 DSpark 走的是解码阶段的另一条路。

重写代数形式减少搬运

前向与反向的计算流做了代数层面的重排,减少 Tensor Core、CUDA Core 与 SFU 之间的往返。官方强调这一步不牺牲数值精度,但代数重排不等于与原始实现逐位完全一致,替换后仍应针对前向输出与反向梯度做数值比对。

融合 kernel 取代拆解实现

既没有把流程拆成一串独立 kernel,也没有硬融成单个巨 kernel,而是按序列并行与反向的需求做 Warp-Specialized 融合。这个折中点是它相对通用实现的主要差距来源。 若关注的是整条推理链路的调度而非单个算子,站内 DeepInfer 是另一个层面的参照。

跟着接口演进的版本节奏

从 v0.1.1 到 v0.1.3,项目逐步补齐反向卡内上下文并行、SM100 支持、SM120 前向、双层上下文并行与 SM120 反向,并引入 AutoCP v2 自动分区策略。对使用者来说,升级前先看目标 GPU 架构是否已在支持列表里。同属长文本加速方向的站内项目 RedKnot 可以做横向参照。

FlashQLA 与同类算子实现的对比

下表从形态、实现基础、加速幅度与接入方式等维度,把 FlashQLA 与它的参照实现放在一起对照。

对比维度FlashQLAFLA(Triton 实现)TileLang
形态线性注意力算子库线性注意力参考实现kernel 编写语言与编译器
实现基础TileLangTritonTileLang 自身的编译与调度
加速幅度官方报告前向约 2 至 3 倍、反向约 2 倍作为比较基线不直接提供加速比
适用硬件SM90、SM100、SM103、SM120、SM121支持面更广以编译目标为准
接入方式FLA 接口后端或框架内替换作为库直接调用作为底层被调用
开源协议MIT开源开源
主要用途预训练与端侧推理的 GDN 加速通用线性注意力计算编写自定义注意力 kernel
  • 表格内数据来源:FlashQLA 取仓库 README 的 News、安装要求与描述;FLA(Triton 实现)作为官方对比基线,倍数取 FlashQLA README 所列数值;TileLang 取项目官方说明;未公开的项不作推测。
  • 产品对比简述:FlashQLA 在实现基础上选 TileLang 并给出明确加速幅度;FLA(Triton 实现)在接入方式上作为库直接调用、是通用参照;TileLang 在形态上是 kernel 编写语言与编译器,本身不提供加速比。三者作用层面不同,不可直接换算式比较。

如果关心的是推理链路上的整体加速而不是单个算子,站内的 DeepInfer 从推理框架的角度给了另一套做法。

FlashQLA 的应用场景与适用人群

主要面向使用 GDN 分块预填的模型训练与推理场景,且需按 GPU 架构编译 kernel:

  • 长上下文预训练:分块预填的前向耗时占比高,融合后训练步时间下降。
  • 端侧智能体推理:小头数与长序列并存,卡内并行能救回利用率。
  • 算子基线对比:作为 Triton 实现之外的第二个参照,验证加速是否真实。
  • 模型规模不是适配门槛:官方基准基于 Qwen3.5 与 Qwen3.6 系列的头配置,是否适用取决于模型结构与运行配置,而非参数量区间。

适用人群:适合在做线性注意力模型训练或推理优化的算法与工程团队,也适合需要给内部训练框架换算子的平台组;只调 API 做应用的开发者用不上这一层。同门模型侧的实例可对照站内 Qwen-Image-2.1。

FlashQLA 的使用方法

只有本机安装这一条路,从编译到替换再到验证,是一条连续流程。

  1. 在 仓库 按说明安装,确认目标 GPU 架构已在支持列表内。
  2. 跑一遍仓库内置的基准脚本,记录前向与反向耗时的基线。
  3. 换不同序列长度与头数各跑一轮,找出收益最明显的配置区间。
  4. 通过 flash-linear-attention 的标准接口把 GDN 后端指向 FlashQLA,其余代码不动。
  5. 用同一批输入对比前后耗时,同时校验输出数值与原实现一致。
  6. 定位自有框架里 GDN 分块预填的实现位置,按仓库接口替换。
  7. 先在单卡小模型上完成一个训练步,确认梯度与损失曲线无异常。
  8. 再放大到多卡与长序列,观察通信开销是否抵消了算子层面的收益。

三点要留意:加速幅度是在 Hopper 与 Blackwell 架构上、相较 FLA Triton 实现测得,其他架构需自行验证;算子级加速不等于端到端加速,通信与数据加载可能吃掉收益;替换后务必做数值比对,避免精度问题被性能提升掩盖。

FlashQLA 的项目地址

  • GitHub 仓库:https://github.com/QwenLM/FlashQLA
  • 官方博客:https://qwen.ai/blog?id=flashqla

FlashQLA 的价格方案

软件本身采用 MIT 开源协议,可免费使用与商用;落地成本在编译、调优与算力上:要按目标 GPU 架构编译 kernel,还要在自家训练框架里改一处调用。

它省的是算力时间。前向 2 至 3 倍、反向 2 倍的加速,直接对应训练步时间的下降;换算成钱就是同样任务占用 GPU 小时数减少。具体能省多少取决于 GDN 在整体计算中的占比,占比低时收益有限。

评估时建议先算一笔账:GDN 算子在单步耗时中的占比,以及它实际能拿到的加速倍数,共同决定端到端收益。若算子占比 10%、加速 3 倍,按上限整体耗时约减少 6.67%;算子占比很低时,即使局部加速明显,对整体训练效率的改善也有限。同类轻量模型的推理成本口径可对照站内 Naive-N0.5-Flash。

FlashQLA 的常见问题

和 FlashAttention 是一回事吗

不是。FlashAttention 针对标准注意力的 IO 优化,FlashQLA 针对 GDN 这类线性注意力的分块预填,做的是门控驱动并行与算子融合,作用对象不同。

支持哪些 GPU

官方安装要求列出 NVIDIA SM90、SM100、SM103、SM120、SM121,并要求 CUDA 12.8 以上、PyTorch 2.8 以上。版本记录里陆续补上 SM100 与 SM120 的前向、反向支持;不在支持列表内的架构不要直接上生产。

会改变计算精度吗

官方表示代数重排与算子优化不会牺牲数值精度,但这不代表与原始实现逐位完全一致。替换后仍应针对前向输出、反向梯度及长序列场景做数值验证。

必须配合 FLA 用吗

不必须。v0.1.2 起可作为 flash-linear-attention 的后端即插即用;也可以在自己的框架里直接调用对应 kernel,只是接入工作量更大。

适合什么规模的模型

官方没有按参数量划分适配范围。FlashQLA 面向的是 GDN 分块预填算子,能否用取决于模型是否采用该结构与相应头配置;官方基准覆盖 Qwen3.5 与 Qwen3.6 系列的多种头配置,具体收益需自行实测。

© 版权声明

相关文章