已合并
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
已合并
dinglaiping创建于 3月13日
已删除 :addtest-models-api-2.7.1合入到Ascend/pytorchv2.7.1
dinglaiping成员
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)执行通过,代码检查无异常
likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 dinglaiping 的贡献)
Ddinglaiping成员
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的测试用例,需要补充
ascend-robot
ascend-robot成员
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 /approve or /lgtm
  • Commenting /approve implies 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. 👍

likedislike
ascend-robotascend-robot成员
3月13日 添加了label:ascend-cla/yes
此处折叠了44条消息 查看更多
ascend-robotascend-robot成员
3月17日 添加了label:approved
htchu成员
3月19日 评论:

/lgtm
/approve

likedislike
ascend-robotascend-robot成员
3月19日 添加了label:lgtm
ascend-robot
ascend-robot成员
3月19日 评论:

Review Guide

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

likedislike
ascend-robotascend-robot成员
3月19日 合入了pull request