已合并
fix(op-plugin): align native_batch_norm infer save tensors with meta/CUDA shapes. #4972
Margaret_wangrui创建于 5月18日
fix(op-plugin): align native_batch_norm infer save tensors with meta/CUDA shapes. #4972
已合并
Margaret_wangrui创建于 5月18日
Margaret_wangrui
5月18日

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)
https://gitcode.com/Ascend/pytorch/issues/1992

说明: 修复推理模式下 native_batch_normsave_mean / save_invstd 与 PyTorch meta、CUDA 输出形状不一致(原 NPU 为 [0],应为 [num_features])。

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)

  1. op_plugin/config/op_plugin_functions.yaml:调整 native_batch_norm 推理 infer 配置中 out1out2(对应 save_meansave_invstd)的尺寸表达式,由「训练时用 input.size(1)、推理时用 {0}」改为 恒为 input.size(1)(即 num_features),与 ATen / meta 侧对推理分支输出形状的约定一致。

  2. op_plugin/ops/aclops/BatchNormKernelNpu.cpp:在 推理training=False)分支中,将 save_meansave_invstd 的分配由 at::empty({0}, ...) 改为 at::empty({dim_c}, ...)。底层 BN Infer 仍不填充有效统计值,仅保证 张量形状与 meta、CUDA 对齐;补充注释说明设计意图。

  3. test/test_base_ops/test_native_batch_norm.py:新增 TestNativeBatchNormInferSaveShapes,校验 NPU 上 save_meansave_invstd(C,),并与同配置的 CPUmeta native_batch_norm 输出形状一致;顺带整理无关 import。

交互关系简述: PyTorch 调用链 → op-plugin 注册的 native_batch_norm NPU 实现 → ACL 算子执行;本次变更集中在 算子出口张量分配YAML infer 元数据,不涉及 CANN 接口版本升级。

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

不涉及。

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

不涉及

【功能验证】

说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤
新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图

测试场景: 推理 native_batch_normtraining=False)时,save_meansave_invstd 的形状须为 (num_features,),并与 CPU、meta 一致。

测试方法: 运行 test/test_base_ops/test_native_batch_norm.py(需 NPU 可用);其中 TestNativeBatchNormInferSaveShapes 为本次新增 UT;回归 TestNativeBatchNormLegit

UT 看护: 已新增 TestNativeBatchNormInferSaveShapes

image.png

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Margaret_wangrui 的贡献)
Margaret_wangruiMargaret_wangrui
5月18日 创建了 pull request,commit 5b3d054c
ascend-robot
ascend-robot成员
5月18日 评论:

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


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-Ascend/op-plugin htchu, sunyu-xuan (2/2) htchu (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

Margaret_wangrui, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
ascend-robotascend-robot成员
5月18日 添加了label:ascend-cla/yes
Margaret_wangruiMargaret_wangrui
5月18日 修改了pull request 的描述
此处折叠了100条消息 查看更多
sunyu-xuan成员
5月21日 评论:

/lgtm

likedislike
htchu成员
5月21日 评论:

/approve

likedislike
ascend-robotascend-robot成员
5月21日 添加了label:approvedlgtm
ascend-robot
ascend-robot成员
5月21日 评论:

Review Guide

This pull-request passes review.
Committers who wrote a comment of /approve are: htchu.
Reviewers who wrote a comment of /lgtm are: htchu, sunyu-xuan.

likedislike
ascend-robotascend-robot成员
5月21日 合入了pull request