| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
test(fx): add tests for graph codegen api Co-authored-by: nannan-2026<1794949109@qq.com> # message auto-generated for no-merge-commit merge: !34465 merge test-fx-codegen-api-master into master test(fx): add tests for graph codegen api Created-by: nannan-2026 Commit-by: nannan-2026 Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联 issue:https://gitcode.com/Ascend/pytorch/issues/1637 # 【修改方案】 本 PR 新增 torch.fx 代码生成相关 API 的单元测试,覆盖如下 API: - torch.fx.Graph.python_code - torch.fx.graph.PythonCode - torch.fx.Graph.set_codegen 具体修改内容: 1. 新增 test/test_fx_codegen_api.py 测试文件。 2. 增加 test_graph_python_code_returns_python_code 用例,验证 Graph.python_code("self") 返回对象类型为 PythonCode,并校验返回对象包含 src、globals 字段。 3. 增加 test_graph_set_codegen 用例,验证 Graph.set_codegen 设置自定义 CodeGen 后,GraphModule 可重新编译并正常执行。 4. 该组 API 属于 torch.fx Python 层代码生成接口,不涉及新增 NPU 算子实现。 # 【资料变更】 不涉及。 本 PR 仅新增测试用例,不修改资料文档。如后续确认 torch.fx.graph.PythonCode 在 native_apis 文档中缺失,将单独提交 docs PR 补充。 # 【接口变更】 不涉及。 本 PR 不修改客户可见接口,不修改 API 行为,仅新增测试用例验证现有 API 兼容性。 # 【功能验证】 测试场景: 1. 验证 torch.fx.Graph.python_code 可正常生成 PythonCode。 2. 验证 torch.fx.graph.PythonCode 对象包含 src 和 globals 字段。 3. 验证 torch.fx.Graph.set_codegen 设置自定义 CodeGen 后,GraphModule 可重新编译并正常执行。 测试命令: TORCH_DEVICE_BACKEND_AUTOLOAD=0 python test/test_fx_codegen_api.py -v 测试结果: test_graph_python_code_returns_python_code (__main__.TestFXCodegenAPI.test_graph_python_code_returns_python_code) ... ok test_graph_set_codegen (__main__.TestFXCodegenAPI.test_graph_set_codegen) ... ok Ran 2 tests in 0.168s OK 说明: 该 API 为 torch.fx Python 层代码生成接口,不涉及 NPU 算子计算。本次测试主要验证 API 功能行为与 PyTorch 原生保持一致。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34465 | 3 个月前 | |
| 2 年前 | ||
[test] add tests for torch.fx Graph APIs Co-authored-by: lihaokun-2026<851563813@qq.com> # message auto-generated for no-merge-commit merge: !34399 merge add-fx-graph-api-test-master into master [test] add tests for torch.fx Graph APIs Created-by: lihaokun-2026 Commit-by: lihaokun-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > [【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(30) #1636](https://gitcode.com/Ascend/pytorch/issues/1636) > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 本次提交对应 Torch-NPU API 补齐任务,涉及以下 5 个 API: - torch.fx.Graph.output_node - torch.fx.Graph.placeholder - torch.fx.Graph.print_tabular - torch.fx.Graph.process_inputs - torch.fx.Graph.process_outputs # 【修改方案】 1. 对目标 API 进行现状核查,确认在当前Pytorch环境中已实际支持,不需要补齐底层实现。 2. 补充独立测试文件test/fx/test_fx_graph.py文件。 3. 采用最小化修改方案,不改动已有底层实现,仅补齐测试覆盖。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 测试场景: 1. torch.fx.Graph的5个API进行验证 2. NPU 设备下 tensor shape 场景验证 测试方法: cd /data TORCH_DEVICE_BACKEND_AUTOLOAD=1 /usr/local/python3.11.14/bin/python3 /data/pytorch/test/fx/test_fx_graph.py -v # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(30) [#1636](https://gitcode.com/Ascend/pytorch/issues/1636) See merge request: Ascend/pytorch!34399 | 3 个月前 | |
Add test_fx_graph_pickler for NPU adapter validation Co-authored-by: yuhongming-2026<moshui_1@qq.com> # message auto-generated for no-merge-commit merge: !34855 merge add-fx-graph-api-test-master into master test: 新增 GraphPickler NPU 适配验证与统一运行脚本 Created-by: yuhongming-2026 Commit-by: yuhongming-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**#1607**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 1. 新增统一验证脚本 run_graphpickler_npu_unified.py,用于自动选择可用后端并验证 torch.fx._graph_pickler 三大 API 在 CPU/NPU 环境中的适配性。 2. 支持的目标 API 包括 GraphPickler.dumps、GraphPickler.loads 以及 Option/Options 配置项,兼容 torch.fx._graph_pickler、torch_npu.fx._graph_pickler 与 graphpickler_npu_adapter 三种后端。 3. 在验证逻辑中实现:API 存在性检查、CPU round-trip 序列化/反序列化验证、NPU round-trip 验证、Option/Options 参数测试和输出一致性对比。 4. 参考已有验证结果文档和报告,确认 graphpickler_npu_validation_report.json 中三大 API 均通过验证,Option 配置测试 7/7 通过,NPU 功能测试通过且输出完全匹配。 5. PR 文档内容已基于目录下现有 NPU_ADAPTER_FULL_REPORT.md、NPU_ADAPTER_2100_REPORT.md、ADAPTATION_REPORT.md 等验证报告进行整理。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 - 通过统一验证脚本 run_graphpickler_npu_unified.py 运行结果确认: - NPU 可用:torch.npu.is_available() 返回 true。 - API 存在性:GraphPickler.dumps、GraphPickler.loads、Option 均存在且可调用。 - CPU round-trip:序列化成功,反序列化成功,输出与原始模型一致。 - NPU round-trip:NPU 模型序列化/反序列化成功,NPU 输出完全匹配。 - Option 配置测试:默认/压缩/保留设备信息/包含元数据/完整性校验/二进制格式/全部选项均通过,7/7 通过率 100%。 - 参考验证报告:graphpickler_npu_validation_report.json、NPU_ADAPTER_FULL_REPORT.md、NPU_ADAPTER_2100_REPORT.md 等。 - 已补充 PR 文档,便于 reviewer 直接确认适配结果。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34855 | 3 个月前 | |
| 2 年前 | ||
| 2 年前 | ||
test(fx): add tests for Tracer and Transformer APIs Co-authored-by: xiemingda1002<xiemingda1002@163.com> # message auto-generated for no-merge-commit merge: !33979 merge add-fx-tracer-api-tests into master test(fx): add tests for Tracer and Transformer APIs Created-by: xiemingda1002 Commit-by: xiemingda1002 Merged-by: ascend-robot Description: # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/1699**</font>\ - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 一、API 功能说明 torch.fx 是 PyTorch 官方提供的纯 Python 层模型符号追踪、计算图捕获与图变换工具链,核心用于模型结构解析、图编辑、自动化优化与硬件适配。本次验证的 API 分为两大类: torch.fx.Tracer 相关 API(符号追踪核心) - Tracer.trace:对函数/Module 进行符号执行,捕获并生成静态计算图 Graph,是 FX 的核心入口。 - Tracer.path_of_module:获取子模块在模型中的完整限定名路径,用于图中模块定位与 call_module 节点构建。 - Tracer.iter:对 Proxy 对象进行迭代操作时的拦截,默认抛出 TraceError 防止动态控制流破坏静态图捕获。 - Tracer.keys:字典类型 Proxy 的键访问拦截,用于复杂结构追踪与 **kwargs 解包场景。 - Tracer.proxy:将计算图 Node 包装为 Proxy 对象,实现符号执行与算子捕获的核心机制。 - Tracer.to_bool:对 Proxy 进行布尔判断时的拦截,默认抛出 TraceError 防止动态条件分支破坏静态图。 torch.fx.Transformer 相关 API(图变换核心) - Transformer.call_function:处理计算图中调用函数(如 torch.relu、torch.add)类型的节点,执行函数调用并返回结果。 - Transformer.call_module:处理图中调用子模块(如 nn.Linear、nn.Conv)类型的节点,获取子模块并执行 forward。 - Transformer.get_attr:处理图中获取参数/常量(如 weight、bias)类型的节点,返回模块属性值。 - Transformer.placeholder:处理图中模型输入占位符节点,对应模型 forward 参数,从输入迭代器获取实际值。 上述 API 均为纯 Python 实现,不执行真实张量计算,仅负责模型结构捕获、图构建与图编辑。 二、测试文件 test_fx_tracer_transformer_api.py 完整验证该 API 的原因 本测试文件针对 PyTorch 社区原生 test/test_fx.py 覆盖不足的 torch.fx.Tracer / Transformer 核心 API 进行补充验证,确保昇腾 NPU 环境下功能完整可用: Tracer API 验证 - test_trace_function / test_trace_module:验证 trace 可正确捕获普通函数与 nn.Module 并生成合法计算图,Graph 可通过 lint 检查。 - test_path_of_module:验证子模块路径查找功能正常,返回路径与预期一致(如 "sub"),支持图中模块定位。 - test_iter_raises_trace_error:验证动态控制流拦截逻辑,对 Proxy 执行迭代时抛出标准 TraceError,符合符号追踪设计约束。 - test_keys_method_callable:验证 keys 方法存在且可调用,保证字典类 Proxy 正常工作。 - test_proxy_creates_proxy_object:验证 proxy 方法可正确将 Node 包装为 Proxy,Proxy.node 与传入 Node 一致,支撑符号追踪流程。 - test_to_bool_raises_trace_error:验证布尔判断拦截逻辑,对 Proxy 执行布尔判断时抛出 TraceError,防止动态条件分支。 Transformer API 验证 - test_call_function:验证图变换可正确处理函数调用类节点,变换后模块在 NPU 上可正常推理,输出形状一致。 - test_call_module:验证图变换可正确处理子模块调用类节点,支持嵌套模块结构,NPU 推理正常。 - test_get_attr:验证图变换可正确处理参数/常量获取类节点,变换后模块可访问参数(weight、bias)。 - test_placeholder:验证图变换可正确处理多输入占位符节点,多参数函数符号追踪与转换正常。 测试完整性 所有用例覆盖 API 的基础功能、异常行为、接口存在性、图合法性校验,以及变换后模型在 NPU 上的前向推理验证,完整覆盖昇腾 NPU 适配所需的最小功能集合。 三、昇腾 NPU 适配说明(解释为什么大部分不用跑在 NPU 上) 本次 torch.fx 相关 API 在昇腾 NPU 上的验证采用"纯逻辑验证 + 设备端前向校验"的标准方式,完全符合硬件适配要求,合理且充分: torch.fx 核心 API 100% 硬件无关 - Tracer、Transformer、Proxy、Graph 等所有图捕获与图变换逻辑均为纯 Python 层实现,只做代码结构解析、符号执行、图构建与图编辑,不执行任何张量计算、不调用底层算子、不依赖 NPU/CUDA 驱动。 - 因此,Tracer.trace / path_of_module / iter / keys / proxy / to_bool 等 API 只需在 CPU 上验证逻辑正确性,即可保证在 NPU 上行为完全一致。 NPU 上仅需验证"生成后的模型可运行" - Transformer.call_function / call_module / get_attr / placeholder 测试中,仅在图变换完成后的最终前向推理阶段,将模型与张量放到 NPU 上执行,目的是验证: 1. FX 捕获/变换后的模型可正常在 NPU 上加载运行 2. 设备无关的图结构不会影响 NPU 推理 3. 输入输出形状、计算流程正确 - 这是昇腾 NPU 适配 FX 类硬件无关 API 的标准、最简、最稳定的验证方式。 结论 本测试文件"CPU 验证 API 逻辑 + NPU 验证前向兼容性"的设计完全合理,无需将所有 API 放到 NPU 上运行,即可充分保证 torch.fx.Tracer/Transformer 在昇腾 NPU 环境下的功能正确性与可用性。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 测试文件路径:test/fx/test_fx_tracer_transformer_api.py 本地验证结果: root@hostname:/tmp# python3 test_fx_tracer_transformer_api.py -v test_iter_raises_trace_error (__main__.TestTracerIter) Verify iter raises TraceError for Proxy objects. ... ok test_keys_method_callable (__main__.TestTracerKeys) Verify keys method exists and is callable on Tracer. ... ok test_path_of_module (__main__.TestTracerPathOfModule) Verify path_of_module can get submodule qualified path. ... ok test_proxy_creates_proxy_object (__main__.TestTracerProxy) Verify proxy wraps Node into a Proxy object. ... ok test_to_bool_raises_trace_error (__main__.TestTracerToBool) Verify to_bool raises TraceError for Proxy objects. ... ok test_trace_function (__main__.TestTracerTrace) Verify trace can symbolically trace a function. ... ok test_trace_module (__main__.TestTracerTrace) Verify trace can symbolically trace a Module. ... ok test_call_function (__main__.TestTransformerCallFunction) Verify Transformer handles call_function nodes correctly. ... ok test_call_module (__main__.TestTransformerCallModule) Verify Transformer handles call_module nodes correctly. ... ok test_get_attr (__main__.TestTransformerGetAttr) Verify Transformer handles get_attr nodes correctly. ... ok test_placeholder (__main__.TestTransformerPlaceholder) Verify Transformer handles placeholder nodes correctly. ... ok ---------------------------------------------------------------------- Ran 11 tests in 2.041s OK 结果说明:执行测试用例后,11 passed,所有测试用例执行通过。torch.fx.Tracer/Transformer 核心 API 逻辑验证正确,变换后模型在 NPU 上前向推理正常 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签:test(fx) - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!33979 | 4 个月前 | |
| 2 年前 | ||
[test] add fx graph api coverage Co-authored-by: baoxuebin_2026<xuebin@isrc.iscas.ac.cn> # message auto-generated for no-merge-commit merge: !34556 merge codex/fx-graph-apis-master into master [test] add fx graph api coverage Created-by: baoxuebin_2026 Commit-by: baoxuebin_2026 Merged-by: ascend-robot Description: # 【合入来源】 > 如有社区issue,请关联issue链接 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 公开issue:暂无单独公开 issue 链接,本次提交对应 Torch-NPU API 补齐任务,涉及以下 5 个 API: - torch.fx.graph.map_arg - torch.fx.Graph.node_copy - torch.fx.Graph.nodes - torch.fx.Graph.on_generate_code - torch.fx.Graph.output # 【修改方案】 1. 对目标 API 进行现状核查,确认在当前 PyTorch 2.9.0 + torch_npu 2.9.0rc1 环境中已实际支持,不需要补齐底层实现。 2. 补充独立测试文件 test/fx/test_graph_api.py,覆盖以下场景: - map_arg 对嵌套参数结构的映射行为 - Graph.node_copy 的图节点复制行为 - Graph.nodes 的拓扑顺序遍历行为 - Graph.on_generate_code 对生成代码的 hook 行为 - Graph.output 在 NPU 输入场景下的实际执行验证 3. 采用最小化修改方案,不改动已有底层实现,仅补齐测试覆盖。 # 【资料变更】 不涉及。本文 PR 仅补测试,不包含资料修改。 # 【接口变更】 不涉及。未修改跨仓接口,也未修改用户可见接口行为。 # 【功能验证】 测试场景: 1. torch.fx 图相关 API 的核心行为验证 2. NPU 设备下 Graph.output 的实际运行验证 测试方法: ```bash cd /data/pytorch TORCH_DEVICE_BACKEND_AUTOLOAD=1 python3.11 test/fx/test_graph_api.py -v [#1635](https://gitcode.com/Ascend/pytorch/issues/1635) See merge request: Ascend/pytorch!34556 | 3 个月前 | |
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
[test] add symbolic_shapes coverage under fx tests Co-authored-by: baoxuebin_2026<xuebin@isrc.iscas.ac.cn> # message auto-generated for no-merge-commit merge: !33905 merge codex/symbolic-shapes-tests-master into master [test] add symbolic_shapes coverage under fx tests Created-by: baoxuebin_2026 Commit-by: baoxuebin_2026 Merged-by: ascend-robot Description: # 【合入来源】 > 如有社区issue,请关联issue链接 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 公开issue:暂无单独公开issue链接,本次提交对应 Torch-NPU API 补齐任务,涉及以下 5 个 API: - torch.fx.experimental.symbolic_shapes.is_accessor_node - torch.fx.experimental.symbolic_shapes.is_concrete_bool - torch.fx.experimental.symbolic_shapes.is_concrete_float - torch.fx.experimental.symbolic_shapes.is_concrete_int - torch.fx.experimental.symbolic_shapes.is_symbolic # 【修改方案】 1. 对目标 API 进行现状核查,确认在当前 PyTorch 2.9.0 + torch_npu 2.9.0rc1 环境中已实际支持,不需要补齐底层实现。 2. 补充独立测试文件 test/npu/test_symbolic_shapes.py,覆盖以下场景: - is_accessor_node 对 call_method / call_function 两类 accessor node 的识别 - is_concrete_int / is_concrete_float / is_concrete_bool 对字面量输入的判定 - ShapeEnv 生成的 SymInt / SymFloat / SymBool 的 symbolic 判定 - NPU tensor shape 场景下的实际验证 3. 采用最小化修改方案,不改动已有底层实现,仅补齐测试覆盖。 # 【资料变更】 不涉及。资料补齐已单独提交文档 PR。 # 【接口变更】 不涉及。未修改跨仓接口,也未修改客户面可见接口行为。 # 【功能验证】 测试场景: 1. symbolic_shapes 相关 API 的 accessor / concrete / symbolic 核心行为验证 2. NPU 设备下 tensor shape 场景验证 测试方法: ```bash cd /data TORCH_DEVICE_BACKEND_AUTOLOAD=1 /usr/local/python3.11.14/bin/python3 /data/pytorch/test/npu/test_symbolic_shapes.py -v See merge request: Ascend/pytorch!33905 | 4 个月前 | |
| 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 |