尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
FlashQLA 反向传播全解:fused_gdr_bwd 与 dh 梯度 Kernel 的设计取舍
【免费下载链接】FlashQLAhigh-performance linear attention kernel library built on TileLang项目地址https://gitcode.com/gh_mirrors/fl/FlashQLA点击查看免费下载FlashQLA 是基于 TileLang 构建的高性能线性注意力 Kernel 库为 Qwen 系列 GDNGated DeltaNetChunked Prefill 提供前向/反向加速反向路径较 FLA Triton 内核快约 2 倍。本文面向想读懂 FlashQLA 反向传播机制的新手完整拆解 GDN 反向传播的两块核心拼图主反向 Kernelfused_gdr_bwd一次性算出 dq/dk/dv/dg/db/dh0 六个梯度与 CP 场景专用的 dh 梯度 Kernel状态梯度递推并解释两者在流水线组织、内存布局和调度粒度上的设计取舍帮助你快速定位反向 Kernel 源码。一、先看全景FlashQLA 反向传播链路反向入口是chunk_gated_delta_rule_bwd它与前向一样按 GPU 架构分发SM90 → hopper、SM100/103 → blackwell、SM120/121 → blackwell_sm120分发逻辑见 chunk/init.py。一次反向调用实际是预处理 两个主 Kernel的组合步骤函数职责① CP 预处理cp_preprocess_bwd仅在开启 Context Parallelism 时生效负责跨分区梯度修正内部会调用 dh 梯度 Kernel② 重算 hfused_gdr_h重新计算前向的 chunk 内状态 h反向需要它③ 主反向fused_gdr_bwd单次 Kernel 输出 dq、dk、dv、dg、db、dh0 六个梯度④ 后处理Python 端GQA 分组归约、dg 的 reverse cumsum 等轻量收尾调用顺序可参考 chunk_gated_delta_rule_bwdPyTorch autograd 封装在 ChunkGatedDeltaRuleFunction。三个值得注意的入口约定输入 g 是 chunk 内 cumsum 之后的版本前向阶段算好并保存反向结束后 Python 端再做一次 reverse cumsum 还原成原始 gate 梯度见 chunk_gated_delta_rule_bwd 尾部。dh0 始终用 fp32 累加、以 fp32 返回状态梯度的误差对训练影响敏感dq/dk/dv 则回到 bf16 存储。dht 可选不提供时视为零Kernel 内部通过use_dht标志跳过加载见 fused_gdr_bwd。二、fused_gdr_bwd一个 CTA 里 512 线程的四组流水线主反向 Kernel 的 TileLang 源码在 fused_bwd.pyHopper 版。它的组织方式是每个 batch×head 分配一个 CTA512 线程整个序列从最后一个 chunk 往前逐块递推512 个线程被手动划分成 4 个 warp group各自专职寄存器配额见 fused_bwd.pyWarp Group线程范围寄存器配额职责Consumer_S0–127160状态梯度 S 的跨 chunk 递推dS ← g_last·dS Qᵀ(dO·g) Kᵀ(dVg)并累出 dh0Consumer_K128–255144计算 dK、dV 及相关的 dg 分量Consumer_A256–383184计算 dQ、dA、db 及剩余的 dg 分量Producer384–51124用 TMA 异步搬运数据另负责把 dq/dk/dv/dg/db 写回全局内存几个关键设计点状态递推与其余梯度解耦。GDN 反向的核心难点是 dS 只能从后往前逐 chunk 递推数学参考实现见 torch_chunk_gdr_bwd。Consumer_S 独占dh_fragment累加器其他两组只通过共享内存和它交换中间量避免了寄存器在 group 间反复搬运。16 个 barrier 排出的细粒度流水。Kernel 内声明了bar_00…bar_15共 16 个命名 barrierfused_bwd.py对应一个 chunk 内约 13 步计算让数据搬运TMA、Tensor Core GEMM、CUDA Core 逐元素运算三类工作在时间上重叠。单缓冲 提前一块预取。共享内存只保留一份 chunk 数据但 Producer 按领先一个 chunk的节奏提前发起 TMA 预取fused_bwd.py——因为主反向是计算密集型的多留一份缓冲区换不来多少重叠收益。dg/db 的原子累加放在 shared 里完成。三个 Consumer 都把各自负责的 dg 分量写入dg_shared由 Producer 的 store 组统一写回避免多个 warp group 对全局内存做原子操作。三、dh 梯度 Kernel为什么要把状态梯度单独拆一个 Kernelfused_gdr_dh的实现是各架构下的fused_gdr_dh_ws如 Hopper 版 cp_bwd.py它只在CP 开启时由 cp_preprocess_bwd 触发做一件事从 dht 出发只递推状态梯度输出每个 CP 分区头部应有的 dhtoutput_dh0True, output_dhFalse。拆开这个 Kernel 的取舍是本文的重点让 CP 逻辑与主 Kernel 隔离。CP 下每个分区只需处理num_warmup_chunks个预热 chunkgate 指数衰减后远端影响可忽略这个裁剪逻辑全部收敛在 dh Kernel 内主fused_gdr_bwd不需要感知 CP。为跨卡聚合留出独立接口。dh Kernel 输出的分区级 dh0 可以直接被aggregate_card_state/correct_terminal_states做 all-gather 修正见 _inter_correct_bwd修好后再作为dht喂给主 Kernel。warmup 提前量可被 gate 感知。Auto CP 用 gate 的衰减特性估计预热深度决策模型的说明见 autocp/README.md拟合系数在 coefs/。在 CP 场景下它同样采用 Producer/Consumer 结构但流水线风格与主 Kernel 完全不同维度fused_gdr_bwdfused_gdr_dhCP 版共享内存缓冲单缓冲2-stage 双缓冲num_stages2流水粒度16 个细粒度 barrier13 步/chunk6 个计算 stage 数据 ready/free 双 barrier预取节奏Producer 提前 1 个 chunkProducer 提前 1 个 stage 写入下一 stage典型负载计算密集整条序列都要算满只跑 warmup 的少量 chunk访存调度开销占比更高dh Kernel 的三类 Consumer 分别负责dh 组持有dh_fragment累加器执行dh ← g_last·dh RgᵀdO XᵀY递推PR 组计算修正后的 QR Q − Lower(P)·X再乘 gateXY 组计算X Ab·K、Y K·dh分工注释见 cp_bwd.py。四、两个 Kernel 的取舍总结与实测收益一句话总结主反向 Kernel 用单缓冲 细粒度 barrier榨干计算重叠dh Kernel 用双缓冲 粗粒度 stage换取 CP 预热循环的调度弹性——两者的 warp group 专门化、寄存器配额set_max_nreg手法一致差异只在流水深度。性能上反向路径的实测数据可参考 benchmark_results_H200.txtH200 上hk16_hv16配置 32k 序列单次更新步flash_qla 反向 1.135ms vs FLA 3.418ms约 3.01×hk32_hv32约 2.56×。跑分脚本为 bench_gated_delta_rule.pyCP 场景另见 bench_gated_delta_rule_cp.py。正确性验证方面单测用 float64 参考实现逐元素对比 bf16 输出相对误差容忍 2%覆盖 dense/varlen/GQA/长序列等场景见 tests/test_gdr_unit.py 与参考实现 tests/ref_gdr.pyCP 端到端验证在 tests/test_cp_e2e.py。想深入阅读建议的路径先看 chunk/init.py 的调用编排 → 再读 fused_bwd.py 四个 warp group 的循环体 → 最后对照 cp_bwd.py 理解 CP 下 dh 递推如何被 warmup 裁剪。赞分享【免费下载链接】FlashQLAhigh-performance linear attention kernel library built on TileLang项目地址https://gitcode.com/gh_mirrors/fl/FlashQLA点击查看免费下载相关推荐OpenProject 开源项目管理软件实战导读免费自托管甘特图与团队协作一次配齐OpenProject 开源项目管理软件实战导读免费自托管甘特图与团队协作一次配齐 当你同时盯多个版本迭代任务散落在群聊和表格里没人说得清哪个里程碑会延后端前端企业应用研发协作协同办公手动梯度计算完全指南掌握反向传播的本质与实现技巧手动梯度计算完全指南掌握反向传播的本质与实现技巧 在深度学习中反向传播算法是训练神经网络的核心技术而理解梯度计算则是掌握这一技术的关键。GitHub 加速示例工程深度学习dia反向传播考量模型训练中的梯度计算dia反向传播考量模型训练中的梯度计算 在dia模型1.6B参数TTS模型的训练过程中梯度计算是影响模型性能与训练效率的核心环节。本文从Transfor人工智能大模型语音音频媒体生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

GNU Radio消息工具:结构化数据收发实战指南

GNU Radio消息工具:结构化数据收发实战指南

简介:本资源是面向GNU Radio开发者与SDR通信系统学习者的消息机制实践工具包,聚焦于GNU Radio 3.7版本下的模块间异步通信核心能力。它提供了完整可编译的消息工具库源码,涵盖消息定义、队列管理、泵送调度、序列化及调试支持等关键功能&…

📅 2026/10/30 19:14:56
kernel-aodv_v2.2.2 内核态 AODV 编译、调优与避坑指南

kernel-aodv_v2.2.2 内核态 AODV 编译、调优与避坑指南

简介:kernel-aodv_v2.2.2 是 Linux 内核环境下 AODV 按需距离矢量路由协议的实现源码包,面向具备一定 Linux 内核基础、从事无线自组织网络(Ad Hoc)研究与开发的工程师和高校师生,用于理解并部署无基础设施网络中的路由…

📅 2026/10/30 19:14:56
QuickPCB2005终版:Win7/Win10离线抄板实战指南

QuickPCB2005终版:Win7/Win10离线抄板实战指南

简介:本资源是专为电子工程师及硬件逆向学习者提供的QuickPCB2005终版抄板软件,适配Windows 10/7系统,聚焦电路板图像识别与复刻需求,解决老旧PCB无源文件时的逆向设计难题。压缩包共27个文件,含核心可执行文件QuickPc…

📅 2026/10/30 19:14:56
MORE NEWS

更多资讯

📰

【亲测可用】中国铁路网 SHP 矢量数据使用指南:从下载到落图的完整流程

【亲测可用】中国铁路网 SHP 矢量数据使用指南:从下载到落图的完整流程 【免费下载链接】中国铁路网矢量shp数据资源 本仓库提供了详细的中国铁路网矢量数据,以SHP格式存储。这份数据集对于地图制作、地理信息系统(GIS)项目、交通…

📰

LeIsaac × Cosmos video2action 数据管线:如何用 1 条演示扩出大规模合成机器人视频动作

【免费下载链接】leisaac LeIsaac provides teleoperation functionality in IsaacLab using the SO101Leader (LeRobot), including data collection, data conversion, and subsequent policy training. 项目地址: https://gitcode.com/gh_mirrors/le/leisaac 点击…

📰

【免费开源】开镜跟枪差半拍?PUBG罗技鼠标宏免费开放,3步导入

【免费开源】开镜跟枪差半拍?PUBG罗技鼠标宏免费开放,3步导入 【免费下载链接】PUBG罗技鼠标宏 欢迎来到《绝地求生》(PlayerUnknowns Battlegrounds,简称PUBG)玩家的专属资源页!这里原是一个收费项目&…

📰

Node构建JSON清单如何做最长连续失败段:用本地脚本建立可复核指标

JSON 解码只能确认格式,不代表字段齐全;把第三方日志转换成本文中间格式时,应另外核对键名、单位和类型。本文从Node构建JSON清单的受控中间格式读取记录,统一使用毫秒和退出码。连续失败能够提示一段相邻异常,但它与失…

📰

Node构建JSON清单如何做重复步骤执行计数:用本地脚本建立可复核指标

JSON 解码只能确认格式,不代表字段齐全;把第三方日志转换成本文中间格式时,应另外核对键名、单位和类型。本文从Node构建JSON清单的受控中间格式读取记录,统一使用毫秒和退出码。同一步骤多次出现时,先统计执行次数比直…

📰

Node构建JSON清单如何做最近秩P90耗时:用本地脚本建立可复核指标

JSON 解码只能确认格式,不代表字段齐全;把第三方日志转换成本文中间格式时,应另外核对键名、单位和类型。本文从Node构建JSON清单的受控中间格式读取记录,统一使用毫秒和退出码。要观察耗时分布的偏慢部分,可以计算百分…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬