已合并
test: adapt debug_set_autodiff_subgraph_inlining for NPU #41603
yulin520创建于 7月14日
test: adapt debug_set_autodiff_subgraph_inlining for NPU #41603
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 yulin520 的贡献)7月14日 关联了issue:[Usage]: API一致性说明:torch._C._debug_set_autodiff_subgraph_inlining
atomgit-bot
7月14日 评论:
7月14日 评论:
变更摘要
本 PR 为 test/jit/test_autodiff_subgraph_slicing.py 测试用例补充 NPU 适配 patch,主要将原有在 CPU 上运行的 torch._C._debug_set_autodiff_subgraph_inlining 相关测试逻辑迁移至 NPU 设备,通过添加 import torch_npu 导入并将所有 Tensor 创建或迁移到 NPU(使用 .npu() 方法或 device="npu" 参数),确保自动微分子图内联行为在 NPU 环境下同样可验证。
主要改动
- 添加
torch_npu导入:在测试文件中新增import torch_npu,为后续 NPU 设备操作提供必要的模块支持。 - 输入张量迁移至 NPU:将
_perform_ad_subgraph_slicing辅助方法中的torch.randn创建的输入列表,以及test_autodiff_subgraph_slicing_serial中torch.rand创建的输入,均通过.npu()方法迁移到 NPU 设备。 - 工厂函数指定 NPU 设备:将多处测试函数(如
fn)中的torch.zeros和torch.ones创建改为显式指定device="npu",确保这些零/一张量直接在 NPU 上分配。


不准确?
ascend-robot
7月14日 评论:
7月14日 评论:
atomgit-bot
7月14日 评论:
7月14日 评论:
代码审查
经过对 patch 文件的逐行审查,我来确认以下几点:
- 导入
torch_npu(第9行):放置在import torch之后,在后续.npu()调用和device="npu"参数使用之前,位置正确。 _perform_ad_subgraph_slicing方法的输入张量适配(第18行):.npu()将输入张量移动到 NPU,requires_grad=True被保留。- 独立测试用例的输入适配(第27行):
.npu()同样正确。 - 内部工厂函数适配(第36/45/54/63行):
torch.zeros和torch.ones添加device="npu",与输入 NPU 张量保持一致设备,避免了设备不匹配。 - 已移除
transfer_to_npu导入:符合 PR 描述中的"未引入 transfer_to_npu 自动迁移"。
关于正确性的关键验证点:
- 设备一致性:所有输入张量通过
.npu()放置在 NPU 上;所有内部创建的张量通过device="npu"显式放置在 NPU 上。计算图中的所有操作数在同一设备上,不存在设备混用问题。 int(y)在 TorchScript 中的行为:aten::Int.Tensor操作从张量提取标量值,与设备无关,不需要额外的 NPU kernel 支持。- JIT profiling 兼容性:
profile_and_replay=True与 NPU 张量的交互已在验证环境中通过。
审查结论:该 patch 更改均为 NPU 适配所需的机械性修改,逻辑一致、设备放置正确、没有引入正确性或安全性问题。
关闭摘要
- 审查了 1 个文件:
test_upstream/test/jit/test_autodiff_subgraph_slicing.py.patch - 发现问题数:0(P0: 0, P1: 0, P2: 0, P3: 0)
- 整体风险判断:低风险。所有变更均为 NPU 适配的标准模板操作(添加导入、指定设备),各张量设备放置一致,无逻辑错误或安全隐患。
⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。


不准确?
此处折叠了256条消息 查看更多
梁松伟
8月15日 评论:
8月15日 评论:
/approve


8月15日 添加了label:approvedlgtm
8月15日 合入了pull request
ascend-robot
8月15日 评论:
8月15日 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


ascend-robot
8月15日 评论:
8月15日 评论:
流水线 pytorch_gitcode_PR_multiVersion#14065 [ commitID:afab36ae ] 已完成


〖合入来源〗
Issue:
〖修改方案〗
本 PR 针对
v2.7.1分支,补充以下 PyTorch 官方社区测试用例的 NPU 适配 patch:提交文件:
涉及 API:
该接口用于控制 PyTorch JIT 自动微分子图的内联行为,属于 PyTorch 内部调试接口。
PyTorch 官方社区已经提供相关测试,因此本 PR 不新增独立测试文件,仅对现有官方测试进行必要的 NPU 设备适配,不修改 API 实现代码。
相关测试及适配位置主要位于 PyTorch
v2.7.1官方测试文件约:本次主要修改内容如下:
.npu()迁移至 NPU;zeros/onesTensor,使用已有输入 Tensor 的device创建,避免 CPU/NPU Tensor 混用;import torch_npu # noqa: F401按项目导入顺序放置在全部torch.testing相关导入之后;device_type;transfer_to_npu自动迁移;torch.jit.script或torch.jit.script_method;v2.7.1官方源码修改后通过git diff生成。本次实际设备适配方式包括:
inputs = [torch.randn(size).npu().requires_grad_() for size in input_sizes]input = torch.rand(6, 10).npu().requires_grad_()以及根据已有 Tensor 派生 device,例如:
v2.7.1分支原已存在该测试文件的相关 patch。本 PR 基于对应版本 PyTorch 官方源码重新整理该 patch,在保留原有测试语义的基础上完成显式 NPU 设备适配。具体提交内容以当前 PR 最新 commit 为准。
〖资料变更〗
不涉及。
该 API 完整名称为:
该接口位于 PyTorch 内部
torch._C模块,属于 PyTorch 私有调试接口。本 PR 未新增公开 API,也未修改用户可见接口,因此无需补充 torch-npu 公共 API 资料。
〖接口变更〗
不涉及。
本 PR 仅补充 PyTorch 官方社区测试用例的 NPU 适配 patch,不修改:
〖功能验证〗
验证环境
已在以下匹配环境完成当前 PR 最新提交对应的 NPU Runtime 验证:
本次 Runtime 验证对应提交:
NPU Runtime 验证
已在真实 Ascend NPU 环境中执行与以下 API 相关的 PyTorch 官方测试:
运行前检查结果:
本次连续执行与目标 API 相关的 11 个 PyTorch 官方测试场景:
测试完成后检查结果:
本次 Runtime 验证确认:
v2.7.1与 torch_npu2.7.1.post2匹配环境中可正常调用;npu:0;_debug_set_autodiff_subgraph_inlining(True);torch.npu.synchronize()检查通过,未发现异步 NPU 错误;afab36ae0d3367eb2e99e800371ac30180544a0c。最新 commit 静态检查
对当前最新 patch 已重新完成以下检查:
当前 patch 设备适配检查结果:
其中:
torch_npu导入顺序检查结果:已确认:
patch 应用检查
已在对应版本 PyTorch 官方源码上执行:
结果:
同时已将 patch 应用到对应 PyTorch 官方源码,并完成:
〖修改范围审计〗
本 PR 当前仅包含以下一个文件:
最新检查结果:
审计结论:
同时确认:
〖验证结论〗
torch._C._debug_set_autodiff_subgraph_inlining已在 PyTorchv2.7.1与 torch_npu2.7.1.post2匹配环境中完成一致性验证。当前结论如下:
v2.7.1中已存在该 API;.npu()迁移至 NPU;device;import torch_npu # noqa: F401已位于全部torch.testing导入之后;device_type;transfer_to_npu;git diff生成;git apply --check;npu:0;NPU_SYNCHRONIZE=PASS;API24_RUNTIME_RESULT=PASS;〖CheckList〗
〖验证截图〗
NPU Runtime 验证
以下截图为当前 PR 提交对应的 Ascend 910B4 NPU Runtime 验证结果。
截图关键信息:
以下截图为此前在匹配 Ascend 910B4 NPU 环境中的实际运行验证记录。
