| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
test(utils): adapt torch.utils.checkpoint.checkpoint, torch.utils.checkpoint.checkpoint_sequential and torch.overrides.is_tensor_like on NPU Co-authored-by: yulin520<yutianaoxiang@163.com> # message auto-generated for no-merge-commit merge: !39482 merge test-checkpoint-overrides-npu-v271 into v2.7.1 test(utils): adapt torch.utils.checkpoint.checkpoint, torch.utils.checkpoint.checkpoint_sequential and torch.overrides.is_tensor_like on NPU Created-by: weixin_65332823 Commit-by: yulin520 Merged-by: ascend-robot Description: # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font> <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> * [ ] 需求 * [ ] 问题单 * [x] issue/工单 * [ ] 重构优化 * [ ] 资料更新 关联 Issue:https://gitcode.com/Ascend/pytorch/issues/2529 关联 Issue:#2529 关联任务: torch.overrides.is_tensor_like、torch.utils.checkpoint.checkpoint、torch.utils.checkpoint.checkpoint_sequential API 一致性验证。 本 PR 对 v2.7.1 分支补充上述 API 在 NPU 场景下的上游测试适配。 # 【修改方案】 本 PR 仅涉及 test_upstream 上游测试 patch 适配,不修改 torch_npu 功能实现代码,不改变已有 API 行为。 修改文件: * test_upstream/test/test_autograd.py.patch * test_upstream/test/dynamo/test_misc.py.patch 具体修改如下: 1. 在 test_upstream/test/test_autograd.py.patch 中补充 torch.utils.checkpoint.checkpoint_sequential 相关用例的 NPU 适配: * 将 torch.utils.checkpoint.checkpoint_sequential 相关测试输入 Tensor 从 CPU 放置到 NPU; * 将 torch.utils.checkpoint.checkpoint_sequential 测试中使用的 torch.nn.Linear 模块迁移到 NPU; * 验证 torch.utils.checkpoint.checkpoint_sequential 在 NPU Tensor 输入下能够正常前向、反向传播。 2. 在 test_upstream/test/dynamo/test_misc.py.patch 中补充 torch.overrides.is_tensor_like 相关用例的 NPU 适配: * 将 torch.overrides.is_tensor_like 测试输入 Tensor 放置到 NPU; * 验证 NPU Tensor 场景下 torch.overrides.is_tensor_like 返回结果正确。 3. 保留现有 torch.utils.checkpoint.checkpoint 相关 NPU 适配内容: * 本次修改未改变 torch.utils.checkpoint.checkpoint API 的功能实现; * 仅在本地验证中同时覆盖 torch.utils.checkpoint.checkpoint、torch.utils.checkpoint.checkpoint_sequential 和 torch.overrides.is_tensor_like,确保三类目标 API 在 NPU 场景下均可正常运行。 # 【资料变更】 不涉及。 本 PR 仅补充上游测试用例在 NPU 场景下的适配,不新增或修改用户可见资料。相关 API 在目标版本资料中已有说明,因此本任务不需要新增 doc PR。 # 【接口变更】 不涉及。 本 PR 不新增、删除或修改客户可见接口,不涉及跨代码仓接口变更,不改变 torch.utils.checkpoint.checkpoint、torch.utils.checkpoint.checkpoint_sequential 或 torch.overrides.is_tensor_like 的调用方式和返回语义。 # 【功能验证】 已在 Ascend 910B4 NPU 环境完成 v2.7.1 对应分支的本地运行验证。 验证环境: * 操作系统:Ubuntu 22.04.5 LTS / aarch64 * CANN:cann-9.1.0-beta.1 * NPU 设备:Ascend910B4 * 目标分支:v2.7.1 * 测试分支:test-checkpoint-overrides-npu-v271 * torch 版本:2.7.1 * torch_npu 版本:2.7.1.post4 * NPU 可用性:torch.npu.is_available() == True 验证内容: 1. torch.utils.checkpoint.checkpoint_sequential * NPU Tensor 输入; * NPU Linear 模块; * 前向计算和反向传播均通过。 2. torch.overrides.is_tensor_like * NPU Tensor 输入; * torch.overrides.is_tensor_like 返回结果为 True。 3. torch.utils.checkpoint.checkpoint * NPU Tensor 输入; * 前向计算和反向传播均通过。 本地验证结果: * torch.utils.checkpoint.checkpoint_sequential NPU validation PASSED * torch.overrides.is_tensor_like NPU validation PASSED * torch.utils.checkpoint.checkpoint NPU validation PASSED * RUNTIME VALIDATION PASSED 测试自验证截图:  Patch 生成与检查说明: 本 PR 中的 patch 基于对应版本的 PyTorch 社区源码生成。已有 patch 时,先在对应版本 PyTorch 社区源码中应用原 patch,再根据代码审查意见修改社区源码文件,将 torch.ones(10) 调整为 torch.ones(10).npu(),避免默认生成 CPU Tensor 后与 NPU Tensor x 相加导致设备不一致。修改完成后,通过 git diff 重新生成 patch 文件,未在生成后直接编辑 patch 文件。 已完成以下检查: * 已执行 patch 应用检查; * 已检查 patch 不包含整文件删除; * 已检查 patch 不包含冲突标记; * 已检查本 PR 仅包含目标 patch 文件修改; * 已确认 torch.ones(10) 已在社区源码中迁移至 NPU,并通过 git diff 重新生成对应 patch; * 已在匹配版本的 torch / torch_npu 运行时环境中完成本地 NPU 复验。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] * [x] 代码注释完备,正确记录错误日志 * [x] 代码实现进行了返回值、空指针等校验 * [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 * [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!39482 | 1 个月前 | |
fix: apply_patch.sh 只应用 test/ 目录下的patch,跳过 torch/ 目录 Co-authored-by: wangsike<wangsike@huawei.com> # message auto-generated for no-merge-commit merge: !37974 merge fix/apply_patch_skip_torch_dir into v2.7.1 fix: apply_patch.sh 只应用 test/ 目录下的patch,跳过 torch/ 目录 Created-by: kerer-sk Commit-by: wangsike Merged-by: ascend-robot Description: ## 变更说明 修复 test_upstream/apply_patch.sh 错误将 torch/ 子目录下的环境 patch 应用到源码的问题。 test_upstream/ 目录下有两个 patch 子目录,用途不同: - **test/** — 给源码测试文件打的 patch,由 apply_patch.sh 负责应用 - **torch/** — 给安装到 Python 环境后的 torch 包打的 patch,由 torch_env_patch.sh 负责应用 原脚本 find "$PATCH_DIR" 扫描整个 test_upstream/ 目录,导致 torch/ 下的环境 patch 也被错误打到源码上。修复后只搜索 test/ 子目录。 ## 变更内容 - test_upstream/apply_patch.sh: 将 find "$PATCH_DIR" 改为 find "$PATCH_DIR/test",仅搜索源码测试 patch 目录 ## 关联 Issue Fixes https://gitcode.com/Ascend/pytorch/issues/2327 See merge request: Ascend/pytorch!37974 | 2 个月前 | |
fix: apply_patch.sh 只应用 test/ 目录下的patch,跳过 torch/ 目录 Co-authored-by: wangsike<wangsike@huawei.com> # message auto-generated for no-merge-commit merge: !37974 merge fix/apply_patch_skip_torch_dir into v2.7.1 fix: apply_patch.sh 只应用 test/ 目录下的patch,跳过 torch/ 目录 Created-by: kerer-sk Commit-by: wangsike Merged-by: ascend-robot Description: ## 变更说明 修复 test_upstream/apply_patch.sh 错误将 torch/ 子目录下的环境 patch 应用到源码的问题。 test_upstream/ 目录下有两个 patch 子目录,用途不同: - **test/** — 给源码测试文件打的 patch,由 apply_patch.sh 负责应用 - **torch/** — 给安装到 Python 环境后的 torch 包打的 patch,由 torch_env_patch.sh 负责应用 原脚本 find "$PATCH_DIR" 扫描整个 test_upstream/ 目录,导致 torch/ 下的环境 patch 也被错误打到源码上。修复后只搜索 test/ 子目录。 ## 变更内容 - test_upstream/apply_patch.sh: 将 find "$PATCH_DIR" 改为 find "$PATCH_DIR/test",仅搜索源码测试 patch 目录 ## 关联 Issue Fixes https://gitcode.com/Ascend/pytorch/issues/2327 See merge request: Ascend/pytorch!37974 | 2 个月前 | |
refactor(ci): 精简依赖安装动作优化用例执行速度 Co-authored-by: wangsike<wangsike@huawei.com> # message auto-generated for no-merge-commit merge: !36940 merge v2.7.1_fast_test into v2.7.1 refactor(ci): 精简依赖安装动作优化用例执行速度 Created-by: kerer-sk Commit-by: wangsike Merged-by: ascend-robot Description: ## 变更说明 精简 CI 工作流中的 setup-npu-test-env 复合动作,去除冗余的 checkout、pip cache、PyTorch 安装步骤。这些依赖已在 Docker 镜像中预装,重复执行导致测试启动耗时过长。同时统一工作流中的仓库引用为 Ascend/pytorch。 ## 变更内容 - **精简 setup-npu-test-env**:移除 checkout 仓库、pip cache、PyTorch 卸载/重装步骤,仅保留下载 torch_npu wheel、解压测试源码、应用 patch 的核心逻辑 - **统一仓库引用**:将所有 workflow 中的仓库引用和 action 调用替换为 Ascend/pytorch - **同步适配测试工作流**:所有调用 setup-npu-test-env 的 workflow 同步更新参数接口 - **辅助脚本优化**:collect_all_cases.py 和 run_npu_test_shard.py 配套更新 - **简化 torch_env_patch.sh**:精简参数解析逻辑 - **更新 CI 测试用例列表**:添加 test_ops_jit.py、test_jit.py 到白名单,修正 test_alias_analysis.py.patch import 风格 ## 影响范围 15 files, +802/-776 ## 关联 Issue - Fixes https://gitcode.com/Ascend/pytorch/issues/2136 ## 测试计划 - [x] CI 流水线正常触发 - [x] prepare → build → collect → test 全链路通过 - [x] regular / distributed / custom 三类测试均正常运行 See merge request: Ascend/pytorch!36940 | 3 个月前 | |
test: update NPU max pooling upstream cases Co-authored-by: hz893<zhanghao491@huawei.com> # message auto-generated for no-merge-commit merge: !37153 merge codex/v271-pooling-doc-test-20260529 into v2.7.1 test: update NPU max pooling upstream cases Created-by: hz893 Commit-by: hz893 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>> <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [x] 问题单 https://gitcode.com/Ascend/pytorch/issues/2205 - [ ] issue/工单 - [ ] 重构优化 - [x] 资料更新 # 【修改方案】 1. 更新 test_ops.py.patch,对 NPU pooling indices 输出在测试侧按期望 dtype 做对齐后比较,并对 nn.functional.max_pool2d 非连续样本过滤当前 NPU 不支持的 memory format 与 dilation 样本。 2. 更新 test_pooling.py.patch,在 max_pool2d indices 对比前将 NPU indices 转为参考输出 dtype。 3. 新增 test_decomp.py.patch,引入 torch_npu.testing 以使 disabled_testcases.json 对 test_decomp.py 生效。 4. 更新 disabled_testcases.json,对当前 NPU 不支持的 int64、float64、dilation/format 场景补充 skip 及原因;FakeTensor 相关用例同步记录 OpInfo 拦截及 disabled json 不生效的原因。 5. 更新 2.7.1、2.9.0、2.10.0、2.11.0、2.12.0 中文原生 API 文档,补充 max_pool1d 支持情况,以及 max_pool1d/max_pool2d 的兼容实现、dilation 与 indices dtype 说明。 # 【资料变更】 涉及资料变更:更新 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-nn-functional.md 中 torch.nn.functional.max_pool1d 和 torch.nn.functional.max_pool2d 的支持说明。 # 【接口变更】 不涉及。 # 【功能验证】 1. 基于 PyTorch v2.7.1 原始测试文件,对 test_ops.py.patch、test_pooling.py.patch、test_decomp.py.patch 执行 git apply --check 并实际 apply,结果通过。 2. 执行 python3 -m json.tool test_upstream/disabled_testcases.json,JSON 格式检查通过。 3. 前置验证中使用兼容性环境变量执行 17 个相关 pooling 用例,结果为 3 PASS / 14 SKIP / 0 FAIL,符合当前预期。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!37153 | 2 个月前 | |
doc: readme.md 补充 torch_env_patch.sh 使用说明 Co-authored-by: wangsike<wangsike@huawei.com> # message auto-generated for no-merge-commit merge: !38071 merge fix/readme-add-torch-env-patch-doc into v2.7.1 doc: readme.md 补充 torch_env_patch.sh 使用说明 Created-by: kerer-sk Commit-by: wangsike Merged-by: ascend-robot Description: ## 变更说明 test_upstream/readme.md 当前只介绍了 apply_test_patch.sh,缺少对 torch_env_patch.sh 的说明。补充完整文档。 ## 变更内容 - test_upstream/readme.md: - 目录结构中区分 test/(源码测试 patch)和 torch/(环境 torch 包 patch)子目录 - 新增两个脚本职责对照表 - 新增 torch_env_patch.sh 的环境要求和使用方法 - 注意事项中明确两个脚本相互独立 ## 关联 Issue Fixes https://gitcode.com/Ascend/pytorch/issues/2343 See merge request: Ascend/pytorch!38071 | 1 个月前 | |
refactor(ci): 精简依赖安装动作优化用例执行速度 Co-authored-by: wangsike<wangsike@huawei.com> # message auto-generated for no-merge-commit merge: !36940 merge v2.7.1_fast_test into v2.7.1 refactor(ci): 精简依赖安装动作优化用例执行速度 Created-by: kerer-sk Commit-by: wangsike Merged-by: ascend-robot Description: ## 变更说明 精简 CI 工作流中的 setup-npu-test-env 复合动作,去除冗余的 checkout、pip cache、PyTorch 安装步骤。这些依赖已在 Docker 镜像中预装,重复执行导致测试启动耗时过长。同时统一工作流中的仓库引用为 Ascend/pytorch。 ## 变更内容 - **精简 setup-npu-test-env**:移除 checkout 仓库、pip cache、PyTorch 卸载/重装步骤,仅保留下载 torch_npu wheel、解压测试源码、应用 patch 的核心逻辑 - **统一仓库引用**:将所有 workflow 中的仓库引用和 action 调用替换为 Ascend/pytorch - **同步适配测试工作流**:所有调用 setup-npu-test-env 的 workflow 同步更新参数接口 - **辅助脚本优化**:collect_all_cases.py 和 run_npu_test_shard.py 配套更新 - **简化 torch_env_patch.sh**:精简参数解析逻辑 - **更新 CI 测试用例列表**:添加 test_ops_jit.py、test_jit.py 到白名单,修正 test_alias_analysis.py.patch import 风格 ## 影响范围 15 files, +802/-776 ## 关联 Issue - Fixes https://gitcode.com/Ascend/pytorch/issues/2136 ## 测试计划 - [x] CI 流水线正常触发 - [x] prepare → build → collect → test 全链路通过 - [x] regular / distributed / custom 三类测试均正常运行 See merge request: Ascend/pytorch!36940 | 3 个月前 |
Patch 批量应用脚本使用说明
目录结构
-
核心仓库地址
- 官方 PyTorch 仓库(v2.7.1 版本),需拉取该仓库并切换至 tags/v2.7.1 标签。
- 补丁仓库(Ascend/pytorch),仅需提取该仓库中的 patch 目录。
-
核心目录结构
pytorch/ # PyTorch 源码根目录
├─ ...(其他 PyTorch 原生文件/目录)
└─ test_upstream/ # 补丁目录
├─ apply_test_patch.sh # 源码测试 patch 批量应用脚本
├─ torch_env_patch.sh # 环境 torch 包 patch 应用脚本
├─ test/ # 源码测试用例 patch 文件
├─ torch/ # 环境 torch 安装包 patch 文件
└─ ...(其他补丁子目录)
脚本说明
本目录包含两类 patch,分别由不同脚本负责应用:
| 脚本 | patch 目录 | 应用目标 |
|---|---|---|
apply_test_patch.sh |
test/ |
PyTorch 源码中的测试文件 |
torch_env_patch.sh |
torch/ |
Python 环境中安装的 torch 包 |
两个脚本相互独立,互不干扰。
环境要求
apply_test_patch.sh:仅需安装 gittorch_env_patch.sh:需要 Python 环境已安装 torch 包
使用方法
apply_test_patch.sh —— 源码测试 patch
将 test/ 目录下的 patch 应用到 PyTorch 源码中的测试文件。
- 将本仓库的 test_upstream 文件夹整体复制到 PyTorch 官方仓库中
- 运行脚本:
cd test_upstream
./apply_test_patch.sh
脚本自动定位 PyTorch 根目录,递归扫描 test/ 目录下所有 .patch/.diff 文件,按文件名排序强制应用,冲突部分生成 .rej 文件。
torch_env_patch.sh —— 环境 torch 包 patch
将 torch/ 目录下的 patch 应用到 Python 环境中已安装的 torch 包(如 site-packages/torch)。
- 确保 Python 环境已安装 torch 包
- 运行脚本:
cd test_upstream
./torch_env_patch.sh [--python=<version>]
脚本自动定位 torch 包的安装路径,将 torch/ 目录下的 patch 应用到对应文件。
注意事项
- 所有补丁仅适配 PyTorch tags/v2.7.1,其他版本将导致应用失败,务必提前校验版本。
- test_upstream 目录需整体复制至 PyTorch 根目录。
apply_test_patch.sh仅应用test/下的 patch 到源码,不会触碰torch/目录。torch_env_patch.sh仅应用torch/下的 patch 到安装后的 torch 包,不会触碰test/目录。- 生成 .rej 冲突文件时,需手动解决冲突后重新执行脚本。