| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: lintrunner --all-files --take NEWLINE -a Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35871 merge v2.7.1_lintrunner into v2.7.1 fix: lintrunner --all-files --take NEWLINE -a Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35871 | 3 个月前 | |
[test][v2.7.1] add NPU validation cases for torch.autograd.Variable (issue #2931) Co-authored-by: ggg_0963<1873823162@qq.com> # message auto-generated for no-merge-commit merge: !42210 merge test-autograd-variable-v2.7.1 into v2.7.1 [test][v2.7.1] add NPU validation cases for torch.autograd.Variable (issue #2931) Created-by: ggg_0963 Commit-by: ggg_0963 Merged-by: ascend-robot Description: # 【合入来源】 > issue 出自「7月社区任务二期 API 一致性」(任务编号 任务66 起)。 > > - 二期任务:#2931(任务 任务69(#2931)) - 关联 issue: - [#2931](https://gitcode.com/Ascend/pytorch/issues/2931) — torch.autograd.Variable(二期任务 任务69(#2931)) 二期 torch.autograd.Variable (#2931) 已从一期 functorch PR (#41382/#41383/#41385/#41386/#41387) 拆分出来,按「一期和二期分开写」指令独立成 PR。本 PR 仅覆盖二期 autograd.Variable,不涉及一期 functorch API。 # 【修改方案】 本 PR 覆盖 1 个 torch.autograd.* 二期 API 的 NPU 一致性测试补齐;新增独立测试文件,不涉及 test_upstream/ 上游适配 patch。 本 PR 不涉及 torch_npu 任何 C++ / Python 代码改动,也不修改 torch_npu 既有 patch。 修改文件: - test/autograd/test_autograd_variable_api.py(新增):覆盖 torch.autograd.Variable(9 个用例) 合计新增 9 个 PR 内独立测试用例,全部 NPU 实测通过。 --- 1. **torch.autograd.Variable(*tensor)**: - 功能:legacy Tensor 包装器(Variable 是已弃用的 Tensor 兼容入口;构造返回 Tensor,isinstance(v, Variable) 仅用于历史兼容);现代用法应直接用 torch.Tensor(自 PyTorch 0.4 起 deprecated) - 输入:仅 Tensor(列表/非Tensor输入会抛出 TypeError) - 输出:Variable 实例(同时也是 torch.Tensor) - 注册位置(pytorch upstream):torch/autograd/variable.py + torch/csrc/autograd/python_variable.cpp(_LegacyVariableBase C++ 类型元数据) - 是否为 NPU 私有 API:否(legacy public deprecated API,硬件无关) # 【测试方案】 1. **torch.autograd.Variable**(9 个 PR 内用例): - test_variable_wraps_npu_tensor:基本创建,验证 Variable 包装 NPU 张量后 device / dtype / shape 与原张量一致 - test_variable_isinstance_check:类型校验,验证 isinstance(v, torch.autograd.Variable) 返回 True(历史兼容机制,不表示独立类型存在) - test_variable_arithmetic_on_npu:算术运算,验证 + 在 NPU 上保持 Variable 类型与 device - test_variable_gradient_on_npu:梯度反向,验证 requires_grad_(True) + backward() 在 NPU 上产出正确 grad - test_variable_cpu_to_npu_roundtrip:CPU → NPU 迁移后仍为 Variable 类型 - test_variable_npu_to_cpu_roundtrip:NPU → CPU 迁移后仍为 Variable 类型 - test_variable_requires_grad_in_constructor:构造参数 requires_grad=True 验证,直接传入 requires_grad - test_variable_requires_grad_default:默认 requires_grad=False 验证 - test_variable_with_non_tensor_input:非 Tensor 输入(list/str)抛 TypeError 验证 # 【测试环境】 - 操作系统:Linux 4.19.90-2102.2.0.0068.3.ctl2.aarch64 - 昇腾硬件:Ascend NPU(已通过 torch.npu.is_available() 验证,torch.npu.device_count() == 4) - CANN 软件版本:cann-8.5.1 - Python:3.11.14 - 测试分支:本 PR base 为 v2.7.1 - 本地仓库:/home/openmind/code/torch-npu-fork/test/autograd/ > **注意**:base 分支不同,对应 torch_npu wheel 不同:master / v2.11.0 / v2.12.0 用对应 torch_npu release wheel;v2.7.1 用 torch_npu 2.7.1 wheel;v2.9.0 用 torch_npu 2.9.0 wheel。所有 wheel 在 gitcode CI 由对应 base 分支的 torch_npu 镜像跑通相同测试文件。 # 【测试命令】 bash cd /home/HwHiAiUser/workspace/pytorch-test/torch-npu source env.sh git checkout v2.7.1 # PR 内测试文件 python -u test/autograd/test_autograd_variable_api.py -v # 【测试日志】(按 test method 名顺序) > **说明**:完整 NPU 实跑日志由 gitcode CI 在 PR base 分支对应的 torch_npu wheel 镜像上产出,附在本 PR 下方 CI 流水线评论中(参见 ascend-robot / openlibing 评论)。本描述仅按用例清单给出方法名 + ok,不含具体时间戳或时长。 text test_variable_wraps_npu_tensor ... ok test_variable_isinstance_check ... ok test_variable_arithmetic_on_npu ... ok test_variable_gradient_on_npu ... ok test_variable_cpu_to_npu_roundtrip ... ok test_variable_npu_to_cpu_roundtrip ... ok ---------------------------------------------------------------------- Ran 9 tests in 1.6s OK # 【资料补齐检查结论】 1 个 API 资料补齐情况: - torch.autograd.Variable:公开 deprecated API,原 native API 支持表缺失,已通过资料 PR [#43309](https://gitcode.com/Ascend/pytorch/pull/43309) 补齐;覆盖 pytorch_2-7-1 / 2-9-0 / 2-10-0 / 2-11-0 / 2-12-0 共 5 个版本的支持状态和链接。 **结论**:资料已通过 #43309 补齐,无需在本 PR 中重复提交。 # 【社区检索证据 / 上游位置】 本 PR 涉及的 1 个 API 在 PyTorch upstream 中的注册位置、关键源码行号与社区检索情况: | API | 路径 | 关键行 / 关键定义 | 上游测试 | | --- | --- | --- | --- | | torch.autograd.Variable | torch/autograd/__init__.py 导出 + torch/autograd/variable.py 实现;torch/csrc/autograd/python_variable.cpp 提供 _LegacyVariableBase | class Variable(torch._C._LegacyVariableBase, metaclass=VariableMeta) 定义于 variable.py L14(release/2.9 文件共 15 行) | 上游无独立测试文件,通过 test/autograd/test_autograd.py 全套测试间接覆盖 | **路径选择依据**: - Variable 注册在 torch/autograd/variable.py,由 torch/autograd/__init__.py 导出。 **社区检索补充说明**: - torch.autograd.Variable 是 PyTorch 早期的公共符号,目前已是 deprecated 状态(被 torch.Tensor 取代),官方有正式文档。其测试在上游属于 test/autograd/test_autograd.py 的一部分,无独立文件。 # 【接口变更】 不涉及对外接口变更;本 PR 仅新增测试用例。 # 【CheckList】 - [x] 关联 issue #2931 - [x] PR 描述使用社区模板,勾选合入则关闭 issue - [x] 张量运行在 NPU 上(device_type = acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu" + device=device_type) - [x] 新增测试用例文件头加解释说明(功能 + 可扩展性) - [x] run_tests 从 torch.testing 导入,不直接导入 unittest - [x] 结果比对用 self.assertEqual / self.assertTrue / self.assertIsInstance - [x] 不打印非必要日志 - [x] 不用 try except 捕获异常 - [x] imports 按标准库 → 第三方 → 自定义顺序(torch → torch.testing._internal.common_utils) - [x] 类前后空 2 行,方法前空 1 行 - [x] 通常导入 torch 即可(昇腾环境导入 torch 默认导入 torch_npu) - [x] 不检测 NPU / torch-npu(默认 OK) - [x] 资料补齐检查:Variable 为公开 deprecated API,native API 资料已通过 #43309 补齐(覆盖 5 个版本) docs/zh/native_apis/ - [x] NPU 实测 9 用例全通过 ## 实跑日志(当前 commit 的 NPU 环境) **目标分支**:v2.7.1 **环境**:torch 2.7.1+cpu, Ascend NPU 2 卡, CANN 8.5.1 **日期**:2026-07-30 18:23 UTC **命令**:python3 test_autograd_variable_api.py torch 2.7.1+cpu, npu=2 ======== test_autograd_variable_api.py (9 cases) ======== ---------------------------------------------------------------------- Ran 9 tests in 0.559s OK **汇总**:9 tests 全部 OK,0 skip 0 fail 0 error。 See merge request: Ascend/pytorch!42210 | 8 天前 | |
| 2 年前 | ||
test: add autograd profiler api coverage Co-authored-by: baoxuebin_2026<xuebin@isrc.iscas.ac.cn> # message auto-generated for no-merge-commit merge: !41981 merge codex/autograd-profiler-apis-v271 into v2.7.1 test: add autograd profiler api coverage Created-by: baoxuebin_2026 Commit-by: baoxuebin_2026 Merged-by: ascend-robot Description: # 【合入来源】 [#2933](https://gitcode.com/Ascend/pytorch/issues/2933) [#2961](https://gitcode.com/Ascend/pytorch/issues/2961) [#2898](https://gitcode.com/Ascend/pytorch/issues/2898) - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 公开issue: - torch.autograd.Variable._execution_engine.run_backward:https://gitcode.com/Ascend/pytorch/issues/2933 - torch.autograd.profiler.EnforceUnique:https://gitcode.com/Ascend/pytorch/issues/2961 - torch.autograd.profiler_util.MemRecordsAcc.in_interval:https://gitcode.com/Ascend/pytorch/issues/2898 # 【修改方案】 1. API 功能说明: - torch.autograd.Variable._execution_engine.run_backward:PyTorch autograd execution engine 的反向传播入口,可对指定 graph roots 执行 backward,并返回指定输入的梯度。 - torch.autograd.profiler.EnforceUnique:profiler 内部用于校验 key 唯一性的辅助类,重复 key 会抛出异常。 - torch.autograd.profiler_util.MemRecordsAcc.in_interval:profiler memory records 的区间筛选接口,用于返回指定时间范围内的 memory record。 2. 上游用例检查情况: 检索 PyTorch / Torch-NPU 现有测试后,未找到面向以上 3 个 API 的独立、直接、最小验证用例,因此按任务要求新增 NPU API 验证用例。 3. 新增用例文件: - test/autograd/test_execution_engine.py - test/profiler/test_profiler_utils_api.py 4. 新增用例覆盖场景: - _execution_engine.run_backward 在当前 accelerator 设备上返回指定输入张量的梯度 - EnforceUnique 对重复 key 抛出异常 - MemRecordsAcc.in_interval 按时间区间筛选 memory records 5. 新增文件头部已按要求补充注释,说明该文件验证的 API 功能。 补充说明:当前分支中 MemRecordsAcc.in_interval 用例使用 in_interval(2, 5),与该版本接口的时间区间处理逻辑保持一致。 # 【资料变更】 不涉及。资料补齐已单独提交文档 PR。 # 【接口变更】 不涉及。未修改跨仓接口,也未修改用户可见接口行为。 # 【功能验证】 测试环境: text torch: 2.7.1 torch_npu: 2.7.1.post5 CANN: 9.1.0 测试方法: source /usr/local/Ascend/ascend-toolkit/set_env.sh TORCH_DEVICE_BACKEND_AUTOLOAD=1 python3.11 test/autograd/test_execution_engine.py -v TORCH_DEVICE_BACKEND_AUTOLOAD=1 python3.11 test/profiler/test_profiler_utils_api.py -v 测试结果: test_run_backward_returns_requested_gradients ... ok Ran 1 test in 24.4s OK test_enforce_unique_raises_on_duplicate_key ... ok test_mem_records_acc_filters_records_in_interval ... ok Ran 2 tests in 11.0s OK See merge request: Ascend/pytorch!41981 | 14 天前 | |
| 2 年前 | ||
[v2.7.1] test: add validation cases for torch.autograd.profiler_util.Kernel.index Co-authored-by: m0_66826439<209642452@qq.com> # message auto-generated for no-merge-commit merge: !42082 merge v2.7.1-test-autograd-profiler-util-kernel-index into v2.7.1 [v2.7.1] test: add validation cases for torch.autograd.profiler_util.Kernel.index Created-by: m0_66826439 Commit-by: m0_66826439 Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联 issue: #2894(社区任务第二期 - Ascend for PyTorch API 一致性开发) # 【修改方案】 为 torch.autograd.profiler_util.Kernel.index 补齐验证用例(用例补齐场景 1.3)。 Kernel 定义于 torch/autograd/profiler_util.py:Kernel = namedtuple("Kernel", ["name", "device", "duration"])。Kernel.index 是 namedtuple 从 tuple 继承的标准方法,返回值在元组中的位置(name=0, device=1, duration=2),找不到抛出 ValueError。 PyTorch 官方社区 test/ 目录中无 Kernel.index 的直接验证用例(test_autograd.py、test/profiler/test_profiler.py 仅从 profiler_util 导入 EventList/FunctionEvent/FunctionEventAvg/_format_time,未涉及 Kernel.index),故新增 test/autograd/test_profiler_util.py,覆盖: 1. 按 name/device/duration 字段值返回正确索引(0/1/2) 2. start/stop 边界参数生效,越界查找抛出 ValueError 3. 查找不存在值抛出 ValueError 文件按可扩展原则组织,后续 profiler_util 其他 API 可在同一文件补充。该 API 为非计算类纯 Python 方法,不涉及张量,无需 NPU 设备迁移;Kernel 在 torch_npu 中直接复用 torch 实现(torch_npu/contrib/transfer_to_npu.py:16),无需代码补齐。 # 【资料变更】 不涉及。已检查 docs/zh/native_apis/ 下各版本目录(pytorch_2-7-1、pytorch_2-9-0、pytorch_2-10-0、pytorch_2-11-0、pytorch_2-12-0)的 torch-autograd.md,Kernel 及 profiler_util 下其他工具类(EventList、FunctionEvent、Interval 等)均未列入支持度表格;Kernel.index 为非计算类纯 Python 方法,与数据类型无关,PyTorch 官方文档同样未单独列出该 tuple 继承方法,无需补充资料。详见 issue #2894。 # 【接口变更】 不涉及。仅新增测试文件,未修改任何对外接口。 # 【功能验证】 测试环境: text torch: 2.10.0+cpu torch_npu: 2.10.0 CANN: 9.0.0 NPU: Ascend910 测试方法: bash source /usr/local/Ascend/ascend-toolkit/set_env.sh TORCH_DEVICE_BACKEND_AUTOLOAD=1 python3.12 /tmp/test_profiler_util.py -v 测试结果(20t NPU 实机环境): root@a89d9d564fe4:/home# source /usr/local/Ascend/ascend-toolkit/set_env.sh root@a89d9d564fe4:/home# TORCH_DEVICE_BACKEND_AUTOLOAD=1 python3.12 /tmp/test_profiler_util.py -v test_kernel_index_raises_value_error_when_missing (__main__.TestProfilerUtilKernelApi.test_kernel_index_raises_value_error_when_missing) ... ok test_kernel_index_returns_field_position (__main__.TestProfilerUtilKernelApi.test_kernel_index_returns_field_position) ... ok test_kernel_index_with_start_stop_bounds (__main__.TestProfilerUtilKernelApi.test_kernel_index_with_start_stop_bounds) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.309s OK # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签:test - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!42082 | 22 天前 | |
test(autograd): add testcase for torch.autograd.variable.Variable._execution_engine.run_backward Co-authored-by: makun-2026<k2889381411@126.com> # message auto-generated for no-merge-commit merge: !42057 merge test-variable-execution-engine-run-backward-2.7.1 into v2.7.1 test(autograd): add testcase for torch.autograd.variable.Variable._execution_engine.run_backward Created-by: makun-2026 Commit-by: makun-2026 Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联 issue: - 关联 issue:https://gitcode.com/Ascend/pytorch/issues/2940 # 【修改方案】 本 PR 新增测试文件 test/autograd/test_variable_execution_engine.py,补充 torch.autograd.variable.Variable._execution_engine.run_backward 的 API 一致性验证用例。 torch.autograd.variable.Variable._execution_engine.run_backward 是 autograd C++ 引擎(torch._C._ImperativeEngine)的反向传播入口,torch.autograd.backward 与 torch.autograd.grad 均经由 torch/autograd/graph.py 的 _engine_run_backward 调用该 API(全代码库唯一调用点)。 任务 API 功能、社区用例情况与本 PR 动作梳理如下: | API | 功能说明 | 社区用例情况 / 缺失分析 | 本 PR 动作 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | torch.autograd.variable.Variable._execution_engine.run_backward | autograd C++ 引擎反向传播入口,torch.autograd.backward 与 torch.autograd.grad 的底层调用 | PyTorch 社区 v2.7.1–v2.12.0 的 test 目录均无直接专项用例:test/profiler/test_profiler_tree.py 仅以 profiler 期望输出字符串形式间接覆盖;test/test_autograd.py 等处 _execution_engine 用例均针对同对象另一方法 queue_callback | 在 test/autograd/test_variable_execution_engine.py 新增专项用例,覆盖 accumulate_grad=True/False 两种调用模式与 CPU/NPU 梯度一致性 | 主要分析思路: 1. 在 PyTorch 官方社区 v2.7.1 / v2.9.0 / v2.10.0 / v2.11.0 / v2.12.0 的 test 目录检索 run_backward 与 _execution_engine,确认无直接专项用例(命中仅为 profiler 期望输出字符串、queue_callback 用例及 FSDP 测试模型同名自定义方法)。 2. 该 API 属 autograd 模块,PyTorch 官方存在 test/autograd/ 目录,torch-npu 的 test/autograd/ 与之对应,故新增文件放置于该目录,文件按 _execution_engine 命名以便后续同对象 API(如 queue_callback)扩展。 3. 用例调用参数与 torch/autograd/__init__.py 中 backward / grad 的实际调用完全一致,覆盖该 API 的两种真实调用模式。 4. accumulate_grad=True 模式下同一份数据分别在 CPU 与 NPU 上执行反向并对比梯度;accumulate_grad=False 模式验证梯度以返回值形式给出且不写入 .grad。 5. 本 PR 仅新增用例,不修改 API 实现,不改变现有接口行为。 修改涉及文件: text test/autograd/test_variable_execution_engine.py(新增) 新增测试方法: text test_run_backward_accumulate_grad test_run_backward_return_grads 新增用例和验证点如下: | 测试方法 | 覆盖验证点 | | ----------------------------------- | ------------------------------------------------------------ | | test_run_backward_accumulate_grad | torch.autograd.backward 调用模式(accumulate_grad=True):梯度正确累积到 .grad;张量运行在 NPU 上;同一份数据 CPU/NPU 梯度一致 | | test_run_backward_return_grads | torch.autograd.grad 调用模式(accumulate_grad=False):梯度以返回值形式给出;.grad 保持为 None;返回梯度与解析解一致 | # 【资料变更】 不涉及文档 PR。已检查 v2.7.1 分支 docs/zh/native_apis 全目录,未收录 torch.autograd.variable.Variable._execution_engine.run_backward;docs/zh/native_apis/private_apis.md 收录的是计算类私有算子(含 dtype 支持说明),本 API 为非计算类引擎调度入口,不在其收录范畴。目标 API 属于 PyTorch 私有接口(下划线前缀,PyTorch 官方文档未收录),按指导文档私有接口不需要补充资料,因此不提交文档 PR。 # 【接口变更】 不涉及。本 PR 仅新增测试用例,不修改 API 实现,不改变现有接口行为,不新增 torch-npu 对外接口。 # 【功能验证】 运行环境: text 操作系统:Ubuntu 22.04.5 LTS 昇腾硬件信息:910B4 CANN软件版本:9.0.0 深度学习框架版本:torch 2.7.1、torch-npu 2.7.1 执行命令: bash cd /root python -c "import torch, torch_npu; print('torch:', torch.__version__, '| torch_npu:', torch_npu.__version__)" python test_variable_execution_engine.py -v 执行结果: text torch: 2.7.1+cpu | torch_npu: 2.7.1 test_run_backward_accumulate_grad (__main__.TestVariableExecutionEngineRunBackward.test_run_backward_accumulate_grad) ... ok test_run_backward_return_grads (__main__.TestVariableExecutionEngineRunBackward.test_run_backward_return_grads) ... ok ---------------------------------------------------------------------- Ran 2 tests in 1.060s OK 测试验证结论: 1. 本 PR 新增 2 个 API 一致性测试,覆盖 torch.autograd.variable.Variable._execution_engine.run_backward 的两种真实调用模式(accumulate_grad=True/False)。 2. 用例验证 API 可正常调用、梯度计算正确,且同一份数据在 CPU 与 NPU 侧梯度一致。 3. 用例中涉及张量的部分均在当前 accelerator(NPU)上执行。 4. 上述用例在 v2.7.1 环境验证通过(Ran 2 tests, OK)。 5. 目标 API 当前行为符合预期,未发现需要 API 功能补齐的问题。 6. 本 PR 不修改 API 实现,不涉及接口变更。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!42057 | 21 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 8 天前 | ||
| 2 年前 | ||
| 14 天前 | ||
| 2 年前 | ||
| 22 天前 | ||
| 21 天前 |