已合并
test(nn): add test for models api:torch.nn.Module, torch.nn.Module.state_dict, torch.nn.ModuleDict, torch.nn.ModuleList #31787
dinglaiping创建于 3月13日
test(nn): add test for models api:torch.nn.Module, torch.nn.Module.state_dict, torch.nn.ModuleDict, torch.nn.ModuleList #31787
已合并
从已删除 :addtest-models-api-2.7.1合入到Ascend/pytorchv2.7.1
D
dinglaiping成员
3月13日
3月13日
PR描述
# 【合入来源】
> **https://gitcode.com/Ascend/pytorch/issues/1575**\
> **请勿携带内部流程信息(需求链接、问题单、内部issue等)**
- [ ] issue/工单
# 【修改方案】
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)
自定义用例设计原则
基于 “最小化、核心化、针对性” 原则,设计独立 NPU 测试用例,核心思路:
1. 剥离无关耦合:仅使用 PyTorch 原生基础层(Linear、BatchNorm、Conv2d)构建测试对象,避免算子适配干扰;
2. 聚焦核心功能:仅验证 API 基础能力,不涉及边缘场景与复杂计算,确保结果反映 API 本身适配状态;
3. 贴合 NPU 特性:重点校验设备一致性、跨设备状态迁移等 NPU 核心关注点;
4. 轻量化设计:单个方法验证一个核心功能点,逻辑清晰、执行高效。
自定义用例核心验证点,在 NPU(npu:0)环境下,覆盖四个 API 核心功能及协同场景:
1. Module:验证to(npu:0)迁移后,参数 / 缓冲区的设备一致性;
2. state_dict:验证状态提取的完整性、设备一致性,及保存 / 加载后的参数值一致性;
3. ModuleDict:验证键值对索引、新增、删除、遍历功能,及子模块设备一致性;
4. ModuleList:验证数字索引、新增、插入、删除、遍历功能,及子模块设备一致性;
5. 四者协同:构建嵌套复合模块,验证state_dict对复合模块的状态提取 / 加载及设备一致性。
# 【资料变更】
不涉及
# 【接口变更】
不涉及
# 【功能验证】
> 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\
> 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图
整体结论
自定义测试用例在 NPU(npu:0)环境下全部执行成功,四个核心 API 的 NPU 适配验证完成核心功能全覆盖,基础能力与协同逻辑均正常可用,满足 NPU 场景下神经网络构建、状态管理、容器管理的实际需求。
核心功能验证结果
1. Module设备管理:to(npu:0)可将模块及子模块的参数 / 缓冲区正确迁移至 NPU,无设备漂移;
2. state_dict状态管理:状态提取完整、设备一致,保存 / 加载后参数值无丢失、无偏差;
3. ModuleDict容器操作:键值对管理功能正常,容器内子模块与主模块设备一致;
4. ModuleList容器操作:列表式管理功能正常,容器内子模块与主模块设备一致;
5. 四者协同:嵌套复合模块可实现设备统一迁移、状态完整提取与加载,无兼容性问题。
用例合理性说明
自定义用例虽简洁,但具备充分有效性与合理性:
1. 聚焦核心能力,剥离算子、精度等无关耦合,验证结果直接反映 API 本身适配状态;
2. 覆盖 API 所有核心功能点及协同场景,与实际业务使用方式高度贴合;
3. 基于 PyTorch 官方测试框架开发,使用原生断言方法,符合官方规范;
4. 适配 NPU 异步性、设备标识规则,避免 “假失败”,验证结果准确可靠。
运行日志
[root@hostname-fqv42 ~]# docker exec -it test210 bash
root@hostname-fqv42:/home# python /root/torchnpuapi/newtest.py
....
----------------------------------------------------------------------
Ran 4 tests in 1.708s
OK
root@hostname-fqv42:/home#
# 【CheckList】
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]
- [x] 代码注释完备,正确记录错误日志
- [x] 代码实现进行了返回值、空指针等校验
- [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等
- [x] PR持续集成流水线(CI)执行通过,代码检查无异常


Pull Request已成功合入, 合并人@ascend-robot
(感谢 dinglaiping 的贡献)3月13日 创建了 pull request,commit 611c143b
Ddinglaiping
3月13日 关联了issue:[Usage]: test目录下面的test_models.py继承自pytorch社区,但是里面并没有专门验证torch.nn.Module,torch.nn.Module.state_dict,torch.nn.ModuleDict,torch.nn.ModuleList的测试用例,需要补充
3月13日 关联了issue:[Usage]: test目录下面的test_models.py继承自pytorch社区,但是里面并没有专门验证torch.nn.Module,torch.nn.Module.state_dict,torch.nn.ModuleDict,torch.nn.ModuleList的测试用例,需要补充
AtlasAccount
3月13日 评论:
3月13日 评论:
ascend-robot
3月13日 评论:
3月13日 评论:
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 |
|---|---|---|
| test | ✅ liwei386, htchu (2/2) | ✅ liwei386, htchu (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
dinglaiping, thanks for your pull request. All authors of the commits have signed the CLA. 👍


3月13日 添加了label:ascend-cla/yes
此处折叠了44条消息 查看更多
3月17日 添加了label:approved
3月19日 添加了label:lgtm
ascend-robot
3月19日 评论:
3月19日 评论:
3月19日 合入了pull request