news 2026/5/30 19:57:06

CANN/ops-transformer MoE门控Top-K反向算子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ops-transformer MoE门控Top-K反向算子

MoeGatingTopKBackward

【免费下载链接】ops-transformer本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-transformer

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT×
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品×
Atlas 推理系列产品×
Atlas 训练系列产品×

功能说明

  • 算子功能:完成MoE(Mixture of Experts)门控Top-K选择的反向梯度计算。该算子是MoeGatingTopK的反向算子,根据前向算子输出的归一化得分(xNorm)、上游梯度(gradY)和专家索引(expertIdx),计算输入得分矩阵的梯度(gradX)。支持sigmoid模式(normType=1)。

  • 计算公式(sigmoid模式,normType=1):

    1. 缩放梯度

    $$ gradYScaled_{ip} = routedScalingFactor \cdot gradY_{ip} $$

    1. 正向renorm的反向传播

    $$ wPrime_{ip} = xNorm_{i,\ expertIdx_{ip}} $$

    $$ D_i = \sum_{p} wPrime_{ip} + eps $$

    $$ w_{ip} = \frac{wPrime_{ip}}{D_i} $$

    $$ beta_i = \sum_{p} w_{ip} \cdot gradYScaled_{ip} $$

    $$ gradWPrime_{ip} = \frac{gradYScaled_{ip} - beta_i}{D_i} $$

    1. 散射到完整维度

    $$ gradNormX_{ij} = \sum_{p:\ expertIdx_{ip}=j} gradWPrime_{ip} $$

    1. Sigmoid反向传播

    $$ gradX_{ij} = xNorm_{ij} \cdot (1 - xNorm_{ij}) \cdot gradNormX_{ij} $$

参数说明

参数名输入/输出/属性描述数据类型数据格式
x_norm输入计算的输入,对应公式中的xNorm。要求是一个2D的Tensor,维度为[M,N]。最后一维(专家数N)要求大于等于2,并小于等于2048。FLOAT32ND
grad_y输入表示前向算子输出yOut的上游梯度,对应公式中的gradY。要求是一个2D的Tensor,维度为[M,K],K的范围要求大于等于1,并小于等于N。FLOAT16、BFLOAT16、FLOAT32ND
expert_idx输入表示前向算子输出的top-k专家索引,对应公式中的expertIdx。shape要求与grad_y一致,维度为[M,K]。INT32ND
renorm可选属性表示前向算子在softmax模式下renorm标记。0:不做renorm;1:需要做renorm;预留参数,当前仅支持sigmoid模式。INT64-
norm_type可选属性表示norm函数类型。1表示使用Sigmoid函数,0表示Softmax函数。当前仅支持1。INT64-
routed_scaling_factor可选属性表示前向计算中使用的routed_scaling_factor系数,对应公式中的routedScalingFactor。默认值为1.0。FLOAT32-
eps可选属性表示前向计算使用的防除零常数,对应公式中的eps。默认值为1e-20。FLOAT32-
grad_x输出表示前向算子输入参数x的梯度,对应公式中的gradX。数据类型与grad_y需要保持一致。shape与x_norm需要一致,维度为[M,N]。FLOAT16、BFLOAT16、FLOAT32ND

约束说明

调用说明

调用方式样例代码说明
aclnn APItest_aclnn_moe_gating_top_k_backward通过aclnnMoeGatingTopKBackward接口方式调用MoeGatingTopKBackward算子。

【免费下载链接】ops-transformer本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-transformer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 19:57:06

Baichuan-M1-14B-Base常见问题解决方案:7个部署陷阱与避坑指南

Baichuan-M1-14B-Base常见问题解决方案:7个部署陷阱与避坑指南 【免费下载链接】Baichuan-M1-14B-Base 项目地址: https://ai.gitcode.com/hf_mirrors/MindIE/Baichuan-M1-14B-Base Baichuan-M1-14B-Base作为昇腾平台上的大型语言模型,在部署过程…

作者头像 李华
网站建设 2026/5/30 19:56:30

VieTable Donut DocVQA API参考手册:完整接口文档与调用示例

VieTable Donut DocVQA API参考手册:完整接口文档与调用示例 【免费下载链接】VieTable-donut-docvqa-demo 项目地址: https://ai.gitcode.com/hf_mirrors/YuukiAsuna/VieTable-donut-docvqa-demo VieTable Donut DocVQA 是一个基于Donut模型的越南语文档问…

作者头像 李华
网站建设 2026/5/29 17:47:57

终极BLOOM-3B模型调优指南:5个实用技巧从提示工程到LoRA微调

终极BLOOM-3B模型调优指南:5个实用技巧从提示工程到LoRA微调 【免费下载链接】bloom_3b 项目地址: https://ai.gitcode.com/hf_mirrors/wuhaicc/bloom_3b 想要让BLOOM-3B模型在您的特定任务上表现更出色吗?这份完整的调优指南将带您从基础提示工…

作者头像 李华
网站建设 2026/5/30 19:57:06

突破嵌入式限制:zapret交叉编译MIPS架构全指南

突破嵌入式限制:zapret交叉编译MIPS架构全指南 zapret是一款在Linux系统中突破DPI限制的实用工具,本指南将详细介绍如何为MIPS架构嵌入式设备交叉编译zapret,帮助用户在资源受限的嵌入式环境中顺利部署这一强大工具。 一、准备交叉编译环境…

作者头像 李华
网站建设 2026/5/29 17:44:31

LibreVNA开源矢量网络分析仪深度解析:从硬件架构到专业测量实战

LibreVNA开源矢量网络分析仪深度解析:从硬件架构到专业测量实战 【免费下载链接】LibreVNA 100kHz to 6GHz 2 port USB based VNA 项目地址: https://gitcode.com/gh_mirrors/li/LibreVNA LibreVNA是一款基于USB接口的双端口开源矢量网络分析仪,覆…

作者头像 李华