已合并
test: adapt debug_set_autodiff_subgraph_inlining for NPU #41607
yulin520创建于 7月14日
test: adapt debug_set_autodiff_subgraph_inlining for NPU #41607
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 yulin520 的贡献)7月14日 关联了issue:[Usage]: API一致性说明:torch._C._debug_set_autodiff_subgraph_inlining
atomgit-bot
7月14日 评论:
7月14日 评论:
变更摘要
本 PR 为 v2.12.0 分支新增一个 NPU 适配 patch 文件,针对 PyTorch 官方社区测试用例 test/jit/test_autodiff_subgraph_slicing.py 进行 NPU 设备适配。该 patch 在保留原始 torch._C._debug_set_autodiff_subgraph_inlining 自动微分子图切分和内联行为验证语义的前提下,将测试中的 Tensor 创建或迁移至 NPU 设备,使相关测试能够在昇腾 NPU 上执行。
主要改动
- 导入
torch_npu模块: 在 patch 目标文件中新增import torch_npu,为后续 NPU 设备操作提供支持。 - 通过
.npu()将输入 Tensor 迁移至 NPU: 将_perform_ad_subgraph_slicing方法中的inputs列表生成表达式从torch.randn(size, requires_grad=True)改为torch.randn(size, requires_grad=True).npu(),以及将input变量从torch.rand(6, 10).requires_grad_()改为torch.rand(6, 10).requires_grad_().npu(),确保输入数据位于 NPU 设备。 - 通过
device="npu"指定 Tensor 创建设备: 在多处测试函数(如fn)中,将torch.zeros(...)和torch.ones(...)调用增加device="npu"参数,使这些直接创建的 Tensor 也在 NPU 上生成,避免跨设备操作不匹配。


ascend-robot
7月14日 评论:
7月14日 评论:
atomgit-bot
7月14日 评论:
7月14日 评论:
此处折叠了247条消息 查看更多
4 天前 解决了最后一个问题
4 天前 关闭了关联的issue
4 天前 合入了pull request
ascend-robot
4 天前 评论:
4 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


ascend-robot
4 天前 评论:
4 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14067 [ commitID:812351c8 ] 已完成


〖合入来源〗
Issue:
〖修改方案〗
本 PR 针对
v2.12.0分支,补充以下 PyTorch 官方社区测试用例的 NPU 适配 patch:提交文件:
涉及 API:
该接口用于控制 PyTorch JIT 自动微分子图的内联行为,属于 PyTorch 内部调试接口。
PyTorch 官方社区已经提供相关测试,因此本 PR 不新增独立测试文件,仅对现有官方测试进行必要的 NPU 设备适配,不修改 API 实现代码。
相关测试及适配位置主要位于 PyTorch
v2.12.0官方测试文件约:本次主要修改内容如下:
.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.12.0官方源码修改后通过git diff生成。本次实际设备适配方式包括:
inputs = [torch.randn(size).npu().requires_grad_() for size in input_sizes]以及:
input = torch.rand(6, 10).npu().requires_grad_()对于 JIT 函数内部根据已有 Tensor 创建的新 Tensor,则使用已有 Tensor 的 device,例如:
本 PR 保留 PyTorch 官方测试原有测试语义,仅进行与 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.12.0与 torch_npu2.12.0rc1匹配环境中可正常调用;npu:0;_debug_set_autodiff_subgraph_inlining(True);torch.npu.synchronize()检查通过,未发现异步 NPU 错误;812351c8934f2d5387ee9fed8d91f57cb2fe5e8c。最新 commit 静态检查
本次调整
torch_npuimport 顺序后,对最新 patch 重新完成以下检查:当前 patch 设备适配检查结果:
其中:
torch_npu导入顺序检查结果:已确认:
patch 应用检查
已在对应版本 PyTorch 官方源码上执行:
结果:
同时已将 patch 应用到对应 PyTorch 官方源码,并完成:
〖修改范围审计〗
本 PR 当前仅包含以下一个文件:
最新检查结果:
本 PR 当前远程分支信息:
当前最新远端 commit:
本地与远端 SHA 已完成一致性检查:
修改范围审计结论:
同时确认:
〖验证结论〗
torch._C._debug_set_autodiff_subgraph_inlining已在 PyTorchv2.12.0与 torch_npu2.12.0rc1匹配环境中完成一致性验证。当前结论如下:
v2.12.0中已存在该 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 环境中的实际运行验证记录。
