Closed
[Bug-Report|缺陷反馈]: MoeGatingTopk融合算子sigmoid计算结果与aclnnSigmoid小算子计算结果存在舍入偏差 #6944
Orange_JZAdd on 10 days agoClosed at 9 days ago
Orange_JZ
10 days ago Comments:
10 days ago Comments:
10 days ago Assign ZhouChuping as responsible person
9 days ago Close issue
9 days ago Added label: resolved


Describe the current behavior / 问题描述 (Mandatory / 必填)
在模型网络中,npu_moe_gating_top_k融合算子接入后,相较基线,模型训练首步grad_norm误差变大。
Environment Information / 环境信息 (Mandatory / 必填)
Ascend 950PR
CANN 9.2.0
Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
从整网中收集该case下的算子输入,构造 融合算子vs小算子 对比示例,复现该问题
初步分析:在某些特殊输入下,aclnnSigmoid小算子计算结果 和 gating_topk融合算子中的sigmoid计算 有1ulp差异,导致在后续topk选择上,选择了两个不同的专家,误差放大至整网。
npu_moe_gating_top_k的融合计算与模型接入前的torch.sigmoid + bias + torch.topk + gather路径不是 bitwise 等价。当前用例中,融合算子
norm_out的一个 FP32 sigmoid 结果比torch.sigmoid小 1 ULP:对于一般连续计算,这个绝对误差通常很小;但 MoE top-k 是离散决策。
该元素恰好位于 top-10 边界,1 ULP 误差打破了原有平局,使第 10 个
expert 从 122 翻转为 472。路由变化随后被放大为不同的 expert dispatch、
路由权重、前向结果和反向梯度。
Describe the expected behavior / 预期结果 (Mandatory / 必填)
融合算子计算结果与小算子一致
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
测试环境:
当前算子输出:
Special notes for this issue/备注 (Optional / 选填)