已开启
8月社区任务第三期-Ascend for PyTorch API 一致性开发(19、22) #4603
nasa___1创建于 9月4日
9月4日 添加了label:triage-review
TorchNPU-Bot
9月4日 评论:
9月4日 评论:
issue待分派,添加triage-review标签


群青世界
28 天前 评论:
28 天前 评论:
社区任务交付件初审结论:✔
1. 现状分析
- 涉及 API:
torch.autograd.forward_ad.enter_dual_level、torch.autograd.forward_ad.unpack_dual - 核心功能:管理 forward AD 层级并解析 dual Tensor 的 primal 与 tangent。
- 用例完整性:官方测试覆盖 enter_dual_level 生命周期和 unpack_dual 多种 forward-mode 场景,NPU Tensor 组合需要适配验证。
- 任务规范:1.1①。
2. 适配方案
- API适配:无需适配,API已支持。
- 用例适配:用例存在硬编码,需要用例解耦跟踪。
- 资料检查:目标 API 官方资料条目已有,其中一个资料支持状态需按 Issue 记录处理。
3. NPU 功能验证
- 验证策略:在 NPU dual Tensor 上验证前向梯度解析及 CPU/NPU 结果一致性。
- 验证环境及版本:正文列出的 PyTorch/Torch-NPU 版本和 NPU 环境。
- 验证结果:官方测试覆盖和 NPU forward AD 验证路径已完成记录。
- 运行日志:正文保留 primal/tangent 结果一致性测试表。
4. 最终结论
- 分类结论:1.1①。
- API适配结论:无需适配,API已支持。
- 用例适配结论:用例存在硬编码,需要用例解耦跟踪。
- 交付结论:本 Issue 已完成 API 功能、用例情况、NPU 验证和资料检查说明。


【合入来源】
1、API功能分析
torch.autograd.forward_ad.enter_dual_level该函数用于开启一个新的前向模式自动微分(Forward-mode AD)计算层级(Dual Level),并返回该层级的唯一整数标识符(level)。在完成相应的前向计算后,必须显式调用对应的
exit_dual_level关闭该层级以释放相关计算上下文。torch.autograd.forward_ad.unpack_dual该函数用于从一个 Dual Tensor 中解包出其原始值(primal)与指定层级下的前向切向量(tangent/derivative),并以具名元组(DualLevel(primal, tangent))的形式返回。
因此这两个API会涉及到torch-npu算子实现,因此需要在torch-npu平台上补充这两个API的测试用例。
2、上游用例检查情况
torch.autograd.forward_ad.enter_dual_leveldual_level()大量间接调用test/test_autograd.py→TestAutogradForwardModetorch.autograd.forward_ad.unpack_dualtest/test_autograd.py→TestAutogradForwardMode、TestAutogradForwardModeBatchedGradforward_ad.enter_dual_levelforward_ad.unpack_dual3. 资料检查
torch.autograd.forward_ad.enter_dual_level这个API在官方都有独立条目,但是当前资料补充缺失,因此需要进行资料补充。
torch.autograd.forward_ad.unpack_dual这个API在官方有独立条目,而且当前资料补充已经覆盖:
4. API功能测试
用例覆盖场景:
用例覆盖场景
enter_dual_level()创建前向AD层级make_dual和unpack_dualexit_dual_level后重新解析原dual tensorNonex * x并解析结果x²,tangent等于2*x*x_tangentfloat16和float32创建NPU dual tensorunpack_dualNone测试方法
测试结果
A2/A3芯片:
v2.7.1
v.2.11.0
v2.12.0
A5芯片
v2.7.1
v2.11.0
v2.12.0
【CheckList】