Ascend 950 / regbase 的 AddRmsNorm trans 模板按照 (x1+x2) * gamma * rstd 计算输出。当输入与 gamma 都是有限值、归一化结果也应为有限值时,先乘 gamma 仍可能让 FP32 中间结果提前溢出,最终输出 Inf。InplaceAddRmsNorm 共用该模板,存在相同问题。
(x1+x2) * gamma * rstd
6a974e237106d696582924758b0f16170a0a86b3
--pc=1
x1.shape=x2.shape=[28673,1]
gamma.shape=[1]
epsilon=1e-6
x1=4294967296 (2**32)
x2=0
gamma=1.2676506002282294e30 (2**100)
tilingKey=4000
xSum * gamma = 2**132
关联 PR 已在两个算子的 arch35 ST CSV 中各添加一条上述固定输入的回归用例,Inplace 用例保持 (0, None, 1) 输出别名关系。
(0, None, 1)
先以 FP32 计算 xSum * rstd,再乘 gamma;该输入的 y 应为有限值 2**100。两次乘法间不转回低精度。按规定精度容差验收,不要求逐位一致。
xSum * rstd
2**100
同输入、分别加载基线及修复后 vendor 二进制的上板冒烟结果:
剩余两条失败为未改动的 full-load / SplitD 路径的 FP16 近零精度问题,主线同样复现,未放宽门限。本地定向 CI 已通过。4,024 条完整测试、失败项基线复测和 CannbotHarness 静态审查仍在运行,当前未宣称全量通过。
修复范围仅为 arch35 / 950 trans 的两次乘法顺序,以及两条永久回归用例;golden 和其他芯片实现不变。
关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/11953
Describe the current behavior / 问题描述 (Mandatory / 必填)
Ascend 950 / regbase 的 AddRmsNorm trans 模板按照
(x1+x2) * gamma * rstd计算输出。当输入与 gamma 都是有限值、归一化结果也应为有限值时,先乘 gamma 仍可能让 FP32 中间结果提前溢出,最终输出 Inf。InplaceAddRmsNorm 共用该模板,存在相同问题。Environment Information / 环境信息 (Mandatory / 必填)
6a974e237106d696582924758b0f16170a0a86b3。--pc=1。Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
x1.shape=x2.shape=[28673,1],gamma.shape=[1],epsilon=1e-6。x1=4294967296 (2**32)、x2=0、gamma=1.2676506002282294e30 (2**100),命中 trans 模板tilingKey=4000。xSum * gamma = 2**132,超过 FP32 有限范围,输出 y 为 Inf。关联 PR 已在两个算子的 arch35 ST CSV 中各添加一条上述固定输入的回归用例,Inplace 用例保持
(0, None, 1)输出别名关系。Describe the expected behavior / 预期结果 (Mandatory / 必填)
先以 FP32 计算
xSum * rstd,再乘 gamma;该输入的 y 应为有限值2**100。两次乘法间不转回低精度。按规定精度容差验收,不要求逐位一致。Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
同输入、分别加载基线及修复后 vendor 二进制的上板冒烟结果:
剩余两条失败为未改动的 full-load / SplitD 路径的 FP16 近零精度问题,主线同样复现,未放宽门限。本地定向 CI 已通过。4,024 条完整测试、失败项基线复测和 CannbotHarness 静态审查仍在运行,当前未宣称全量通过。
Special notes for this issue/备注 (Optional / 选填)
修复范围仅为 arch35 / 950 trans 的两次乘法顺序,以及两条永久回归用例;golden 和其他芯片实现不变。
关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/11953