Pull Request has been successfully merged by CANN-robot.
(Thank you for raoliang_sac's contribution.)变更摘要
本 PR 为 Ascend 950 回归测试补充 RmsNormQuant 系列的 golden/TestSpec 资产,将 norm/rms_norm_quant* 下四个 tests/assets/ 文件迁入算子仓,实现测试资产随算子版本管理。各文件通过 __golden__ 注册 ACLNN 或 kernel 入口,并通过显式 __spec__ 绑定对应 TestSpec 类,提供参考计算逻辑与量化比较门限,不涉及 ACLNN、InferShape、tiling、kernel、配置或构建规则的改动。
主要改动
- 迁移
aclnnRmsNormQuantACLNN golden:norm/rms_norm_quant/tests/assets/golden.py新增aclnn_rms_norm_quant_golden,实现最后一维 RMSNorm 归约、[1, H]gamma 展平、dst_type/ydtype 映射,以及_pack_int4_to_int32将 INT4 结果打包为 INT32 存储,并定义AclnnRmsNormQuantTestSpec。 - 新增
rms_norm_quant_v2kernel golden:norm/rms_norm_quant_v2/tests/assets/golden.py注册rms_norm_quant_v2,支持 gamma 后缀维度归约、可选input_beta/input_zero_points1/2、div_mode与单/双量化,输出覆盖 INT8/INT4/FP8/HIFLOAT8 等类型。 - 新增
rms_norm_quant_v3kernel golden:norm/rms_norm_quant_v3/tests/assets/golden.py注册rms_norm_quant_v3,在output_rstd为假时返回None的 rstd,FP32 rstd 使用stat_rel_err比较标准。 - 新增
aclnnRmsNormQuantV3ACLNN golden:norm/rms_norm_quant_v3/tests/assets/aclnn_golden.py按公开 API 参数顺序(epsilon/div_mode/output_rstd排在输出 tensor 之前)实现aclnn_rms_norm_quant_v3_golden,保留div_mode乘除分支与 INT4 打包,output_rstd为真时返回[y, rstd]。 - 统一注册与量化比较配置:四份文件均提供显式
__spec__并保留__golden__兼容注册,比较标准按整数quant、FP8requant、INT4 打包packed_bits: 4及float32stat_rel_err配置。
🧩 本次 Review 已使用自定义 Skill:




Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| */*/README.md | ✅ 陈娇, 陈展熹, 钱泽洪 (3/2) | ✅ 陈娇 (1/1) |
| norm | ✅ 钱泽洪, 陈展熹 (2/2) | ✅ 钱泽洪, 陈展熹 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
raoliang_sac, thanks for your pull request. All authors of the commits have signed the CLA. 👍


您好,pr合入已准备就绪,请尽快联系committer进行检视,谢谢!


描述
将 Ascend 950 的 RmsNormQuant 系列 golden/TestSpec 迁入算子仓
tests/assets/,并修复验证中发现的 native golden 标量处理、多维广播及输出 shape 问题。提交三份 Python 测试资产,并补齐 V2 的 GEIR 示例及 README 入口,不修改 ACLNN、InferShape、tiling、kernel、算子配置或构建规则,不改变任何产品的算子执行行为。逐文件说明:
norm/rms_norm_quant/tests/assets/golden.pyaclnnRmsNormQuant,迁入 V1 ACLNN CPU 参考与量化比较配置。保留最后一维归约、前导1 gamma/beta、INT32 存储的 INT4 输出处理;本轮异常修复未修改此文件。norm/rms_norm_quant_v2/tests/assets/golden.pyrms_norm_quant_v2,供 Kernel/GEIR 使用。旧参考访问 scalar 的shape[0]、把 scale/zero point 展平并广播到 gamma,会对合法多维形状抛异常或给出错误输出 shape。改为只展平归一化轴、保留量化参数的原始广播轴、量化前恢复 x 的逻辑 shape。norm/rms_norm_quant_v3/tests/assets/golden.pyrms_norm_quant_v3与aclnnRmsNormQuantV3,保留各自函数及 TestSpec。native 同步上述修复,并将 rstd 恢复为未归约维度不变、归约各维大小为1的 shape。ACLNN 参考及其比较配置保持不变;未请求的输出返回 None。norm/rms_norm_quant_v2/examples/test_geir_rms_norm_quant_v2.cppnorm/rms_norm_quant_v2/README.md范围与使用说明:
golden.py。TTK 允许单文件注册多个 TestSpec;两种接口函数不合并,比较门限不放宽。__golden__兼容注册;GEIR 复用 native spec。--plugin可指向tests/assets/或单文件。aclnnRmsNormQuantV2,不迁入历史占位资产;V1 native kernel 不在此次950范围。RmsNormQuant/golden_checks/;对应正常 golden 副本同步修复。raoliang_sac/ops-test-kit的fix/rms_norm_quant-packed-int4-comparison或同提交任务分支fix/rms_norm_quant-empty-tensor-testing,提交db23e879adcd942c9ff2c34ff2139c7ac1a794b2。依赖其 FP8 requant、INT32 打包 INT4 与 HIFLOAT8 比较支持。c34f3373111b523cec91f64518a95833a8015687不接受 Spec 中的standard="requant"。本 PR 未修改 TTK,不宣称适配该原版 master。关联的Issue
https://gitcode.com/cann/ops-nn/issues/6688
测试
本轮使用修复后的仓内 golden,Ascend 950 实机、TTK 单进程;不同模式是执行次数,不合并为不重复用例总数:
新探针覆盖 scalar scales1/scales2、[1,1]量化参数、多维 gamma、量化/归一化维度不同、单量化、div_mode 双取值,及输入 FP16/FP32/BF16、五类量化输出。采用固定输入回灌,比较标准不变,未请求输出明确 SUPPRESSED。
本地 CI 已于2026-10-15重新执行并通过:受测提交
c82ca0f65f5567eda12fe12a5fedc778b6eac7b0,官方 master 快照dfeee933397dc4aa8c567ea26d51aa514d5d90bc。PR保持单提交,rebase前后完整diff一致,本轮三份golden内容未改变。指定/workspace/CI-skills/ci_local_check.sh执行pre-commit、隔离OAT、链接、Python语法、新增的仓内 Check_Example 门禁及 GEIR 示例语法检查;新增 C++ 示例按现有规则完成950/A2定向package和graph UT构建。graph UT在两平台的筛选结果均为0例,不计作UT功能覆盖,也不把构建成功等同于设备功能验证。本轮另用任务内 CANN_Master、仓内golden及TTK--pc=1运行与示例完全相同参数的GEIR binary用例:1/1 PASS,y1/y2精度均100%;示例本体做了C++11 -Wall -Wextra -Werror语法检查,没有执行示例二进制。可复现用例已同步至MyTestCaseaaf7c10。上表保留此前精度验证结果;本地CI通过不代表已知设备广播精度问题已修复。线上CI已对同一受测提交触发,compile评论193937869已回查,机器人确认新流水线已启动;结果尚未返回,不宣称线上通过。异常分类与验证边界:
scales1=[H], scales2=[](H>1)组合不满足当前950要求两组 scale 等形状的校验(scalar 按[1]比较),不是合法精度支持要求。此次改用通过当前 host 校验的 scalar、多轴归一化、量化广播场景,不再将原来的80组人工异常作为遗留 golden 问题。文档更新
无公开接口文档变更;V2 README 增加 GEIR 示例入口。使用依赖、验证结果与已发现的实现缺口在本描述说明;可复现用例及详细记录保存在 MyTestCase。
类型标签
AI/Agent生成声明