@nannan-2026 , 感谢您认领此任务, 请及时跟导师沟通, 导师审核通过后才能承担此任务, 否则任务无效.


老师您好,本次 torch.fx.experimental.proxy_tensor API 补齐任务已完成,相关 PR 汇总如下:
一、任务与 PR 汇总
关联 issue:https://gitcode.com/Ascend/pytorch/issues/1609
本次任务覆盖以下 5 个 API:
torch.fx.experimental.proxy_tensor.get_proxy_modetorch.fx.experimental.proxy_tensor.handle_sym_dispatchtorch.fx.experimental.proxy_tensor.make_fxtorch.fx.experimental.proxy_tensor.maybe_disable_thunkifytorch.fx.experimental.proxy_tensor.maybe_enable_thunkify
测试 PR:
- v2.7.1:https://gitcode.com/Ascend/pytorch/pull/34869
- v2.9.0:https://gitcode.com/Ascend/pytorch/pull/34868
- v2.10.0:https://gitcode.com/Ascend/pytorch/pull/34871
- v2.11.0:https://gitcode.com/Ascend/pytorch/pull/34872
- v2.12.0:https://gitcode.com/Ascend/pytorch/pull/35499
- master:https://gitcode.com/Ascend/pytorch/pull/34873
文档 PR:
说明:本次根据当前任务要求提交至 v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0 以及 master 分支,不涉及 v2.8.0 分支。
二、API 功能说明
-
torch.fx.experimental.proxy_tensor.get_proxy_mode用于获取当前活跃的
ProxyTorchDispatchMode。在非 tracing 环境下返回None,在make_fxtracing 过程中可获取到当前 proxy mode。 -
torch.fx.experimental.proxy_tensor.handle_sym_dispatch用于处理 proxy tensor tracing 过程中的 symbolic dispatch 逻辑,依赖当前 proxy mode 环境。该接口属于
proxy_tensortracing 内部调度相关 helper。 -
torch.fx.experimental.proxy_tensor.make_fx用于对 Python 函数进行 tracing,并生成对应的
torch.fx.GraphModule。生成后的GraphModule可用于表示被 trace 函数的 ATen 图结构。 -
torch.fx.experimental.proxy_tensor.maybe_enable_thunkify用于在特定上下文中启用 thunkify 相关逻辑,可作为上下文管理器使用。
-
torch.fx.experimental.proxy_tensor.maybe_disable_thunkify用于在特定上下文中关闭 thunkify 相关逻辑,可作为上下文管理器使用。
三、用例完备性与适配方案说明
经检查,仓库中已有大量 make_fx 相关测试覆盖,例如 test/fx、test/functorch、test/dynamo、test/test_functionalization.py 等文件中均存在 make_fx 使用场景。
但本次任务中的以下 API 未检索到独立、直接的专项验证用例:
torch.fx.experimental.proxy_tensor.get_proxy_modetorch.fx.experimental.proxy_tensor.handle_sym_dispatchtorch.fx.experimental.proxy_tensor.maybe_disable_thunkifytorch.fx.experimental.proxy_tensor.maybe_enable_thunkify
因此本次采用自写轻量 API 兼容性测试的方式进行补齐,新增测试文件:
test/fx/test_proxy_tensor_api.py
该测试文件开头已补充英文说明,说明该文件用于验证 torch.fx.experimental.proxy_tensor 相关 API,便于后续维护和扩展。
新增测试覆盖内容包括:
- 验证
make_fx可正常生成GraphModule; - 验证
make_fx生成的GraphModule执行结果与原函数一致; - 验证
get_proxy_mode在 tracing 外返回None; - 验证
get_proxy_mode在make_fxtracing 过程中可获取到 proxy mode; - 验证
handle_sym_dispatch为可调用对象,并验证其依赖 proxy mode 的行为; - 验证
maybe_enable_thunkify/maybe_disable_thunkify可作为上下文管理器正常使用; - 验证上述逻辑可在
make_fxtracing 中稳定执行。
上述 API 均属于 torch.fx.experimental.proxy_tensor Python 层 tracing / proxy tensor 相关接口,不涉及新增 NPU 算子实现,也不涉及 C++、Kernel 或底层算子逻辑修改。
本次适配方案如下:
- 对 API 进行 import 和签名检查,确认 API 在当前分支中已存在;
- 新增
test/fx/test_proxy_tensor_api.py兼容性测试; - 在测试文件开头补充英文说明,说明该文件用途和覆盖 API,降低后期维护成本;
- 新增
device_type获取逻辑,并将测试中涉及的张量通过.to(device_type)迁移到当前 accelerator / NPU 侧运行; - 测试 PR 分别提交至
v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0和master; - 文档 PR 按任务要求仅提交至
v2.7.1,并刷新该目录下已有版本的 API 支持状态。
四、NPU 适配说明
本次测试用例中涉及张量输入,因此测试张量需要运行在 NPU / 当前 accelerator 侧。
测试文件中使用如下方式获取当前 accelerator:
device_type = acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu"
并通过如下方式将测试张量迁移到当前设备:
x = torch.randn(2, 3).to(device_type)
y = torch.randn(2, 3).to(device_type)
在 Torch-NPU 测试环境中,当前 accelerator 为 NPU,因此测试张量会通过 .to(device_type) 迁移到 NPU 侧运行,满足新增用例涉及张量需在 NPU 侧执行的要求。
五、本地验证与文档补充说明
本地验证命令如下:
python -u test/fx/test_proxy_tensor_api.py -v
本地验证结果如下:
test_get_proxy_mode_during_make_fx (__main__.TestProxyTensorAPI.test_get_proxy_mode_during_make_fx) ... ok
test_handle_sym_dispatch_requires_proxy_mode (__main__.TestProxyTensorAPI.test_handle_sym_dispatch_requires_proxy_mode) ... ok
test_make_fx_returns_graph_module (__main__.TestProxyTensorAPI.test_make_fx_returns_graph_module) ... ok
test_thunkify_context_managers (__main__.TestProxyTensorAPI.test_thunkify_context_managers) ... ok
----------------------------------------------------------------------
Ran 4 tests in 0.333s
OK
经检查,docs/zh/native_apis 中缺少本次任务相关 API 的支持状态记录,因此本次在 docs/zh/native_apis/pytorch_*/torch-fx.md 中补充如下 API:
|torch.fx.experimental.proxy_tensor.get_proxy_mode|是|-|
|torch.fx.experimental.proxy_tensor.handle_sym_dispatch|是|-|
|torch.fx.experimental.proxy_tensor.make_fx|是|-|
|torch.fx.experimental.proxy_tensor.maybe_disable_thunkify|是|-|
|torch.fx.experimental.proxy_tensor.maybe_enable_thunkify|是|-|
文档 PR 仅修改:
docs/zh/native_apis/pytorch_*/torch-fx.md
不涉及测试代码、功能代码、底层算子和客户可见接口修改。
六、当前状态
- 测试 PR 已提交;
- 文档 PR 已提交;
- 已根据 review 意见补充测试文件开头说明;
- 已根据 review 意见将测试中涉及的张量迁移到当前 accelerator / NPU 侧运行;
- 本地验证通过;
- 等待 CI 与老师审核。
请老师审核,谢谢。


@nannan-2026 , 任务认领者才能提交此任务.


/intern-approve


@VnOcean , 用户已经放弃此任务, 请知晓, 谢谢!


@nannan-2026 , 任务认领者才能提交此任务.


@nannan-2026 , 您已认领过当前任务, 无法再次认领.


@nannan-2026 , 您已认领过当前任务, 无法再次认领.


/intern-approve


@VnOcean , 用户已经放弃此任务, 请知晓, 谢谢!


@nannan-2026 , 您已认领过当前任务, 无法再次认领.


@nannan-2026 , 您已认领过当前任务, 无法再次认领.


@nannan-2026 , 您已认领过当前任务, 无法再次认领.


@nannan-2026 , 任务认领者才能提交此任务.


@nannan-2026 , 感谢您认领此任务, 请及时跟导师沟通, 导师审核通过后才能承担此任务, 否则任务无效.


/intern-approve


@nannan-2026 , 恭喜您已成功领取该任务, 请及时处理任务. 认领任务>导师审核认领资格>处理任务>提交任务>导师审核>pr合入>获得积分.


@nannan-2026 , 请关注您提交的pr审核进度, 跟进相关负责人审核, pr合入后可获得积分. 注: 提交pr时, 请务必在pr描述里添加此issue编号(#issue编号), 谢谢!


/intern-done


@nannan-2026 , 恭喜您提交的任务成果已通过导师审核, 已获得 50 积分, 谢谢您的参与.


【任务分值】50分
Torch-NPU API 补齐 开源实习任务描述
一、任务概览
Torch-NPU 是昇腾 NPU 适配 PyTorch 框架的核心插件,为 PyTorch 提供完整的昇腾硬件算子支持、调度能力与推理优化,保障 PyTorch 模型可在昇腾 NPU 上无缝、高效运行。
当前 PyTorch 官方原生 API 已形成完善体系,但部分API尚未在 Torch-NPU 中完成实现、对齐与验证,导致部分 PyTorch 原生模型 / 代码在昇腾 NPU 上运行时出现接口报错、功能不一致等问题。
本任务邀请开发者参与 Torch-NPU API 补齐与适配验证,完成缺失 API 的开发、调试、测试与文档交付,完善 Torch-NPU 对 PyTorch 原生 API 的兼容性,提升昇腾 NPU 上 PyTorch 框架的易用性与模型适配覆盖率。
二、核心任务范围
1、用例补齐
(1)pytorch官方社区有用例,则做NPU适配,并将patch提交PR到torch-npu的test_upstream目录。
若test_upstream已有相关patch,则需要分析合理性,不合理则修改;进行验证并提供日志。
若NPU适配不需要做任何修改,则直接在issue中进行说明。
提交到2.7.1 2.8.0 2.9.0 2.10.0 2.11.0,后面如果发布了2.12.0版本同样要提交代码,但是master不需要提交。
(2)pytorch官方社区无用例,则自己写用例,并提交PR到torch-npu的test目录。
提交到2.7.1 2.8.0 2.9.0 2.10.0 2.11.0以及master,后面如果发布了2.12.0版本同样要提交代码。
2、API补齐
如果API运行失败,或者API和torch社区不一致,则需要提交PR对API进行功能补齐,并给出补齐思路、运行日志等。
提交到2.7.1 2.8.0 2.9.0 2.10.0 2.11.0以及master,后面如果发布了2.12.0版本同样要提交代码。
3、资料补齐
如果有api实际已经支持,但文档中没有,则在
https://gitcode.com/Ascend/pytorch/tree/v2.7.1/docs/zh/native_apis 中进行补充,注意:只需要提交PR合入2.7.1版本,但是该目录下所有版本的api支持情况都要刷新。
注意:整个补齐过程要在issue或者PR中要详细说明,如API功能、用例完备性(pytorch官方用例或者自写用例)、适配方案(API适配方案、用例适配方案)、运行结果等等。如果需要提交PR(用例、代码、文档等),则在PR中详述即可,可以不提交issue;如果不需要提交PR,则必须提交issue并在issue中详述。
三、交付标准与积分
开发者可认领任务列表中的单个 API / 一组关联 API(torch-npu社区标签为intern的issue中,每个issue中的api数量不等,开发者一次只能认领一个issue)。一个api积分10积分,如果一个issue中有10个api,那完成后即可获得100积分。
四、补充说明
积分规则:任务积分按最终完成结算,不做阶段累积(完整完成issue中各个API,可获得完整积分,否则无法获得积分);
参考资源:
参考指导:https://www.hiascend.com/developer/courses/detail/2016448591740112898
Torch-NPU 代码仓:https://gitcode.com/Ascend/pytorch
开发规范:所有代码、文档、测试用例必须遵循 Torch-NPU 开源社区规范,保证可读性、可维护性与可复现性;
五、任务价值
深度参与昇腾生态 + PyTorch 开源共建,贡献代码合入官方仓库;
掌握 NPU PyTorch 框架适配、异构计算核心技能;
获得开源社区认可,积累工业级实习项目经验,提升简历竞争力。
六、API任务
torch.fx.experimental.proxy_tensor.get_proxy_mode
torch.fx.experimental.proxy_tensor.handle_sym_dispatch
torch.fx.experimental.proxy_tensor.make_fx
torch.fx.experimental.proxy_tensor.maybe_disable_thunkify
torch.fx.experimental.proxy_tensor.maybe_enable_thunkify
总结
任务核心:补齐 Torch-NPU 缺失的 PyTorch 原生 API,保障接口兼容、精度一致、可稳定运行;
交付物统一包含:补齐代码 + 运行日志 + 测试用例 + 资料,实际根据api情况略有区别,如不需要补齐则不需要补齐api代码。