PSROIPoolingV2 的 pooling/psroi_pooling_v2/tests/assets/golden.py 在 TTK GEIR cross_check 精度比较中拒绝 Promote 后的 float64 输入,导致 Golden 生成失败,无法完成数值比较。
pooling/psroi_pooling_v2/tests/assets/golden.py
cross_check
Promote
TTK 为获得高精度真值将原 float32 输入提升为 float64;Golden 计算核心本来支持 float64,但入口只允许 float16/float32,提前抛出:
Golden generation failure: x/rois must have the same float16 or float32 dtype precision=GOLDEN_FAILURE / FAIL
这不是已经完成数值比较后的 kernel 精度失败,也不是 CSV 声明错误:设备输入/输出仍为 float32,只有高精度参考输入被 Promote 为 float64。
原始缺陷及附件:https://gitcode.com/wangyueting/changwei_hebaojing/issues/23
46fe46ebdbb60f07a63662a6419cb67c17efc55f
3f80c6707107c5dcd793187fdc0b4dbc0819f8a5
import importlib.util from pathlib import Path import numpy as np path = Path("pooling/psroi_pooling_v2/tests/assets/golden.py") spec = importlib.util.spec_from_file_location("psroi_golden", path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) x = np.array([1, 3, 5, 7], dtype=np.float64).reshape(1, 1, 2, 2) rois = np.array([0, 0, 0, 1, 1], dtype=np.float64).reshape(1, 5, 1) y = module.PsroiPoolingV2TestSpec.golden( x, rois, spatial_scale=1.0, output_dim=1, group_size=1, golden_mode="Promote", )[0] assert y.dtype == np.float64 and y.item() == 4.0
修复前在 dtype 入口校验抛出 TypeError;修复后返回 float64 的 4.0。
PSROIPoolingV2_L0_accuracy_perf_c_s_002
PSROIPoolingV2_L0_accuracy_perf_c_s_008
golden_mode == "Promote"
已完成修复及实际回归:
(48456,93,1,1)
7.947285973752827e-08
(9186,1,127,127)
148160994
每条 NPU 实际执行 3 次,输出 MD5 一致;cst_precision=PASS、precision_status=PASS、deterministic_status=PASS。原 Spec cross_check L1 判据未放宽。
cst_precision=PASS
precision_status=PASS
deterministic_status=PASS
额外公共接口行为测试:三份本地 Golden 36/36 PASS;PR 版本重新执行 12/12 PASS,TTK SpecLoader 的 Promote 调用及 Python 语法检查 PASS。
修复 PR:https://gitcode.com/cann/ops-nn/pull/11830 (已提,尚未合并)。
单提交:a0df562f11027c64824444cf98b7d005bed5f8be;仅修改 Golden 入口的 Promote float64 准入、函数说明和错误信息,共 1 文件,9 行新增、2 行删除。共享计算 core 和 TestSpec 判据保持原样。
a0df562f11027c64824444cf98b7d005bed5f8be
本次只回归上述 002/008,不宣称全量通过。三方仅验证 Torch CPU 功能,未验证 GPU 三方性能,本轮没有可报告的 CST kernel 耗时。不修改已有 OPP 包,也不将原 issue 中历史性能数据当作本轮结果。
Describe the current behavior / 问题描述 (Mandatory / 必填)
PSROIPoolingV2 的
pooling/psroi_pooling_v2/tests/assets/golden.py在 TTK GEIRcross_check精度比较中拒绝Promote后的 float64 输入,导致 Golden 生成失败,无法完成数值比较。TTK 为获得高精度真值将原 float32 输入提升为 float64;Golden 计算核心本来支持 float64,但入口只允许 float16/float32,提前抛出:
这不是已经完成数值比较后的 kernel 精度失败,也不是 CSV 声明错误:设备输入/输出仍为 float32,只有高精度参考输入被 Promote 为 float64。
原始缺陷及附件:https://gitcode.com/wangyueting/changwei_hebaojing/issues/23
Environment Information / 环境信息 (Mandatory / 必填)
46fe46ebdbb60f07a63662a6419cb67c17efc55f。3f80c6707107c5dcd793187fdc0b4dbc0819f8a5。cross_checkL1,第三方为真实 Torch CPU provider。Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
import importlib.util from pathlib import Path import numpy as np path = Path("pooling/psroi_pooling_v2/tests/assets/golden.py") spec = importlib.util.spec_from_file_location("psroi_golden", path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) x = np.array([1, 3, 5, 7], dtype=np.float64).reshape(1, 1, 2, 2) rois = np.array([0, 0, 0, 1, 1], dtype=np.float64).reshape(1, 5, 1) y = module.PsroiPoolingV2TestSpec.golden( x, rois, spatial_scale=1.0, output_dim=1, group_size=1, golden_mode="Promote", )[0] assert y.dtype == np.float64 and y.item() == 4.0修复前在 dtype 入口校验抛出 TypeError;修复后返回 float64 的 4.0。
PSROIPoolingV2_L0_accuracy_perf_c_s_002、PSROIPoolingV2_L0_accuracy_perf_c_s_008回归。Describe the expected behavior / 预期结果 (Mandatory / 必填)
golden_mode == "Promote"时允许 float64,保证高精度真值不被降回 float32。Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
已完成修复及实际回归:
PSROIPoolingV2_L0_accuracy_perf_c_s_002(48456,93,1,1)7.947285973752827e-08,无 NaN/InfPSROIPoolingV2_L0_accuracy_perf_c_s_008(9186,1,127,127)148160994个 +Inf 完全一致;0 NaN、0 -Inf每条 NPU 实际执行 3 次,输出 MD5 一致;
cst_precision=PASS、precision_status=PASS、deterministic_status=PASS。原 Spec cross_check L1 判据未放宽。额外公共接口行为测试:三份本地 Golden 36/36 PASS;PR 版本重新执行 12/12 PASS,TTK SpecLoader 的 Promote 调用及 Python 语法检查 PASS。
Special notes for this issue/备注 (Optional / 选填)
修复 PR:https://gitcode.com/cann/ops-nn/pull/11830 (已提,尚未合并)。
单提交:
a0df562f11027c64824444cf98b7d005bed5f8be;仅修改 Golden 入口的 Promote float64 准入、函数说明和错误信息,共 1 文件,9 行新增、2 行删除。共享计算 core 和 TestSpec 判据保持原样。本次只回归上述 002/008,不宣称全量通过。三方仅验证 Torch CPU 功能,未验证 GPU 三方性能,本轮没有可报告的 CST kernel 耗时。不修改已有 OPP 包,也不将原 issue 中历史性能数据当作本轮结果。