已合并
test(fx): add NPU alignment tests for unspecified symbols #35868
m0_53076416创建于 5月16日
test(fx): add NPU alignment tests for unspecified symbols #35868
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 m0_53076416 的贡献)5月16日 创建了 pull request,commit 549feec5
5月16日 关联了issue:【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(17)
ascend-robot
5月16日 评论:
5月16日 评论:
ascend-robot
5月16日 评论:
5月16日 评论:
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 | ✅ 李伟, sunyu-xuan (2/2) | ✅ 李伟 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
litianyu_2026, thanks for your pull request. All authors of the commits have signed the CLA. 👍


5月16日 添加了label:ascend-cla/yes
此处折叠了86条消息 查看更多
5月28日 添加了label:approvedlgtm
5月28日 合入了pull request
ascend-robot
5月28日 评论:
5月28日 评论:
流水线 pytorch_gitcode_PR_multiVersion#9581 [ commitID:ae572f90 ] 已完成


ascend-robot
5月28日 评论:
5月28日 评论:
The repo or branch is not access to PR-cooperate, please check the current repo https://gitcode.com/Ascend/pytorch.git, branch=v2.10.0


【合入来源】
【修改方案】
架构上下文补充说明(CPU vs NPU):
本次任务涉及的ShapeEnv` 系列接口属于 PyTorch Dynamo 编译引擎前端(图追踪阶段)的基础设施。其核心功能是在编译期处理动态形状推导中的逻辑符号对象(如产生SymInt, SymFloat或施加运行时期望断言),而非处理存储实际数据的物理张量(Tensor)。因此,这些接口的逻辑天然且必须在宿主机(CPU)上由 Python/SymPy 解释器完成,物理上无法也不需要迁移至 NPU 设备执行。本次 NPU 一致性对齐的核心目的,是验证昇腾编译后端在接收到前端抛出的这些未确定动态符号时,能否正确解析包装且不发生编译期崩溃。
本PR属于开源实习任务中的功能测试用例补齐。该任务共包含 5 个ShapeEnv相关接口。经客观排查与环境验证:
-torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unbacked_symfloat与torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unbacked_symint官方已具备完善的原生用例覆盖,在 NPU 环境下天然支持。
-torch.fx.experimental.symbolic_shapes.ShapeEnv.defer_runtime_assert接口已在 v2.7.1 跑通官方原生用例,且自 v2.8.0 起被官方重命名为torch.fx.experimental.symbolic_shapes.ShapeEnv.guard_or_defer_runtime_assert,高版本已包含原生覆盖。
上游 PyTorch 官方测试库中,对核心接口torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unspecified_symbol和torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unspecified_symint_and_symbol的测试存在空白。本 PR 专门在test/fx/目录下新增专项测试文件test_unspecified_symbols.py进行看护。
新增测试用例严格根据底层源码逻辑进行设计:
【资料变更】
不涉及。
经核查官方文档目录https://gitcode.com/Ascend/pytorch/tree/v2.7.1/docs/zh/native_apis,本次对齐的torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unspecified_symbol等接口属于torch.fx.experimental下的底层编译期实验性内部接口,非对外暴露的常规 Native API。该文档目录严格记录向外部最终用户开放的稳定核心算子与工具级 API,本内部方法不属于该文档的收录统计范围,故无需在 md 文件中补充登记,当前资料状态已核查闭环。
【接口变更】
不涉及
【功能验证】
步骤一:执行新增看护用例
验证torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unspecified_symbol与torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unspecified_symint_and_symbol接口:
执行命令如下:
步骤二:执行官方原生用例看护
验证torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unbacked_symfloat和torch.fx.experimental.symbolic_shapes.ShapeEnv.create_unbacked_symint接口,这两个接口可同时在test/dynamo/test_misc.py中的test_shape_env_equal_unbacked下一起验证。
由于原生用例test_shape_env_equal_unbacked涉及特殊的图编译验证,在本地执行时需进行以下特殊处理:
1.注释@onlyIfTranslationValidation装饰器:该装饰器限制了用例仅在开启 Translation Validation(翻译验证)的环境下激活。本地测试环境默认未使能 TV 导致用例被跳过(Skipped),为了在本地环境中强制触发并验证该用例在 NPU 底座下的兼容性,需手动注释此行限制。
2. 使用EXPECTTEST_ACCEPT=1环境变量:该用例底层引入了expecttest框架进行符号环境输出的字面量强比对。在本地强制执行该用例时,由于环境差异或输出格式的微调,会导致原硬编码的预期字符串(Expect String)不匹配。通过声明EXPECTTEST_ACCEPT=1,可指示测试框架自动接受当前的实际正确运行输出,并自动覆写/刷新代码中的预期字面量,从而完成校验闭环。
执行命令如下:
步骤三:执行官方原生用例看护
torch.fx.experimental.symbolic_shapes.ShapeEnv.defer_runtime_assert被官方重命名为torch.fx.experimental.symbolic_shapes.ShapeEnv.guard_or_defer_runtime_assert
验证torch.fx.experimental.symbolic_shapes.ShapeEnv.guard_or_defer_runtime_assert接口,该接口可同时在test/test_dynamic_shapes.py中的test_floor_clean_div_axioms下验证。
执行命令如下:
【CheckList】