已关闭
test: adapt ShapeEnv proxy tensor upstream tests #36418
小辉懂编程创建于 5月21日关闭于 5月22日
test: adapt ShapeEnv proxy tensor upstream tests #36418
已关闭
当前Pull Request已关闭, 关闭人@小辉懂编程
test_upstream/test/test_proxy_tensor.py.patch
@@ -0,0 +27,2 @@
27+ from torch._dynamo.source import LocalSource
28+ self.assertExpectedInline(
29+ str(fx_g.shape_env.produce_guards(fx_placeholder_vals(fx_g), [LocalSource("a"), LocalSource("b")], ignore_static=False)), # noqa: B950
【openlibing.ci】识别到代码检查告警抑制注释,匹配工具:flake8,请Committer检视其合理性。


ascend-robot
5月21日 评论:
5月21日 评论:
ascend-robot
5月21日 评论:
5月21日 评论:
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
⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| test_upstream | ❌ (0/2)(You can also ask: wangqiang160, liujunzhu, pengjingyou, wasd1111222, suhaibo) | ❌ (0/1)(You can also ask: wangqiang160, 李伟, wasd1111222, medivh-x, htchu) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
gehui-2026, thanks for your pull request. All authors of the commits have signed the CLA. 👍


5月21日 添加了label:ascend-cla/yes
ascend-robot
5月21日 评论:
5月21日 评论:
当前仓库存在以下 保护分支 :
| Protected Branch | Version | Release |
|---|---|---|
| master | ||
| v2.9.0 | ||
| v2.11.0 | ||
| v2.10.0 | ||
| v2.7.1 | ||
| v2.12.0 |
评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作
注意:
- /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
- 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭


小辉懂编程
5月21日 评论:
5月21日 评论:
compile


5月21日 添加了label:ci-pipeline-running
ascend-robot
5月21日 评论:
5月21日 评论:
Ascend docs pipeline is running...


5月21日 添加了label:docs-ci-pipeline-running
ascend-robot
5月21日 评论:
5月21日 评论:
Ascend docs pipeline is running...


ascend-robot
5月21日 评论:
5月21日 评论:
✅ 跳过 docs ci 检查,没有需要检查的文档文件


5月21日 删除了label:docs-ci-pipeline-running
5月21日 添加了label:docs-ci-pipeline-success
ascend-robot
5月21日 评论:
5月21日 评论:
✅ 跳过 docs ci 检查,没有需要检查的文档文件


5月21日 删除了label:ci-pipeline-running
5月21日 添加了label:ci-pipeline-passed
ascend-robot
5月21日 评论:
5月21日 评论:
流水线 PR-pipeline_pytorch#24935 [ commitID:d79602db ] 已完成
| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | Build_X86 | ✅ | >>> |
| Build_ARM | ✅ | >>> | |
| Build_LibTorch_x86 | ✅ | >>> | |
| Build_LibTorch_ARM | ✅ | >>> | |
| Build_X86_torchair | 🛑 | >>> | |
| Build_ARM_torchair | 🛑 | >>> | |
| patch_test | ✅ | >>> | |
| 恶意代码检查 | Antipoison | ✅ | >>> |
| 编码安全与规范检查 | CodeCheck | ✅ | >>> |
| check_error | ✅ | >>> | |
| CodeCheck_lintrunner | ✅ | >>> | |
| 开源片段检查 | SCA | ✅ | >>> |
| 开发者测试 | UT_X86_Part_01 | 🛑 | >>> |
| UT_X86_Part_02 | 🛑 | >>> | |
| UT_ARM_A3_Part_01 | 🛑 | >>> | |
| UT_ARM_A3_Part_02 | 🛑 | >>> | |
| UT_ARM_A2_Part_01 | ✅ | >>> | |
| UT_ARM_A2_Part_02 | ✅ | >>> | |
| UT_ARM_A2_Part_03 | ✅ | >>> | |
| UT_inductor_Part_01 | 🛑 | >>> | |
| UT_inductor_Part_02 | 🛑 | >>> | |
| UT_inductor_Part_03 | 🛑 | >>> | |
| UT_inductor_Part_04 | 🛑 | >>> | |
| UT_DIST_ARM_Part_01 | 🛑 | >>> | |
| UT_DIST_ARM_Part_02 | 🛑 | >>> | |
| UT_DIST_ARM_Part_03 | 🛑 | >>> | |
| UT_DIST_ARM_Part_04 | 🛑 | >>> | |
| 流水线 | PR-pipeline_pytorch | ✅ | >>> |
- compile : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


5月22日 关闭了 pull request
Torch-NPU ShapeEnv API 补齐任务。
PyTorch v2.11.0 官方社区在
test/test_proxy_tensor.py中已有相关测试用例,覆盖以下 ShapeEnv API:torch.fx.experimental.symbolic_shapes.ShapeEnv.produce_guardstorch.fx.experimental.symbolic_shapes.ShapeEnv.get_nontrivial_guardsTorch-NPU 当前
v2.11.0分支下test_upstream/test/目录中没有对应的test_proxy_tensor.py.patch,因此本 PR 新增 upstream patch 文件,将 PyTorch 官方社区已有用例适配到 Torch-NPU 的 NPU 测试场景。本 PR 属于:
【修改方案】
本 PR 新增文件:
具体修改内容如下:
test/test_proxy_tensor.py中补充import torch_npu。_tracehelper 中构造的输入 Tensor 从 CPU Tensor 改为 NPU Tensor:torch.randn(arg)->torch.randn(arg).npu()TestSymbolicTracing.test_mega_guard中的输入 Tensor 改为 NPU Tensor:torch.randn(16)->torch.randn(16).npu()torch.randn(8)->torch.randn(8).npu()ShapeEnv.produce_guards和ShapeEnv.get_nontrivial_guards在 NPU Tensor 输入场景下的行为。一、API 功能
1.
torch.fx.experimental.symbolic_shapes.ShapeEnv.produce_guards该 API 用于根据
ShapeEnv中记录的符号形状约束生成 guards 表达式,用于保证后续运行时输入形状满足 tracing 阶段建立的符号约束。在 symbolic tracing 场景下,当输入 Tensor 的 shape 被符号化后,
produce_guards会根据符号变量、输入来源以及约束关系生成运行时检查条件。2.
torch.fx.experimental.symbolic_shapes.ShapeEnv.get_nontrivial_guards该 API 用于获取
ShapeEnv中非平凡的 guards,用于判断当前符号形状环境中是否存在需要保留的动态形状约束。在部分 shape 等价或可化简场景下,如果所有 guards 都可以被消除或证明为平凡条件,则
get_nontrivial_guards应返回空结果。二、官方测试用例完整性分析
PyTorch v2.11.0 官方测试文件:
已经包含对上述 API 的测试覆盖。
1.
ShapeEnv.produce_guards官方用例:
该用例通过 symbolic tracing 构造动态 shape 约束:
if a.shape[0] != b.shape[0] * 2: raise AssertionError("a.shape[0] should equal b.shape[0] * 2")随后调用:
并通过
assertExpectedInline验证生成的 guards 内容符合预期。因此,该用例可以覆盖
ShapeEnv.produce_guards的核心功能,即根据 symbolic shape 约束生成运行时 guards。2.
ShapeEnv.get_nontrivial_guards官方 helper:
其中调用:
并断言当前场景下不存在非平凡 guards。
官方用例:
该用例通过多个 symbolic tracing 场景调用
_assert_no_guards,包括:torch.cat组合 shape 场景。view/sum等 shape 传播场景。这些场景验证了在 shape 约束可以被化简或无需保留非平凡 guards 时,
ShapeEnv.get_nontrivial_guards能正确返回空 guards。3. 完整性结论
综上,PyTorch v2.11.0 官方用例已经覆盖:
ShapeEnv.produce_guardsTestSymbolicTracing.test_mega_guardShapeEnv.get_nontrivial_guards_assert_no_guards/TestSymbolicTracing.test_guards_equal因此,本 PR 不重复新增自写测试,而是按照 Torch-NPU 的
test_upstream机制,对 PyTorch 官方已有用例进行 NPU 适配。三、NPU 适配
3.1 API 适配
不需要修改 API 实现。
ShapeEnv.produce_guards和ShapeEnv.get_nontrivial_guards属于 symbolic shape / guard 管理相关的 Python 层逻辑,主要负责符号形状约束生成、查询和化简。这两个 API 不涉及:
因此,本次不需要修改 API 源码实现。
3.2 测试用例适配
需要适配测试输入 Tensor 的设备。
PyTorch 官方用例默认使用 CPU Tensor,例如:
torch.randn(arg) torch.randn(16) torch.randn(8)为了在 Torch-NPU 场景下验证 symbolic tracing 和 ShapeEnv guards 行为,本 PR 将相关输入 Tensor 改为 NPU Tensor:
torch.randn(arg).npu() torch.randn(16).npu() torch.randn(8).npu()同时补充:
import torch_npu以确保 NPU 后端可用。
【资料变更】
不涉及。
本 PR 仅新增 upstream 测试适配 patch,不修改文档资料。
【接口变更】
不涉及。
本 PR 不新增、不删除、不修改 Python API 或 C++ 接口,仅新增测试适配 patch。
【功能验证】
1. patch dry-run 验证
已执行以下命令验证 patch 可以正确应用到 PyTorch v2.11.0 官方测试文件:
验证结果:
验证结论:
2. 关联测试覆盖
本 PR 适配 PyTorch 官方已有测试:
【CheckList】
关联 PR
v2.11.0 自写测试 PR:
v2.10.0 同类 upstream patch PR:
v2.9.0 同类 upstream patch PR: