已关闭
【API一致性验证】torch.overrides.is_tensor_like、torch.utils.checkpoint.checkpoint、torch.utils.checkpoint.checkpoint_sequential #2529
yulin520创建于  6月27日关闭于  7月7日
yulin520
yulin520
6月27日 创建

任务背景

本 Issue 用于跟踪以下 PyTorch API 在 Ascend NPU 场景下的 API 一致性验证工作:

  • torch.overrides.is_tensor_like
  • torch.utils.checkpoint.checkpoint
  • torch.utils.checkpoint.checkpoint_sequential

验证目标是检查上述 API 在 NPU Tensor 场景下是否具备对应测试覆盖,并补充上游测试用例在 NPU 环境下的适配。

环境信息

操作系统

  • OS:Ubuntu 22.04.5 LTS
  • 架构:aarch64

昇腾硬件信息

  • NPU:Ascend 910B4
  • 设备可见性:torch.npu.is_available() == True
  • NPU 设备数量:torch.npu.device_count() == 1

CANN 软件版本

  • CANN 环境:/usr/local/Ascend/ascend-toolkit/set_env.sh
  • 镜像内可见 CANN:cann-9.1.0-beta.1
  • ACL 检查结果:acl.get_soc_name() == Ascend910B4

安装的对应软件版本

本任务针对 5 个 PyTorch 版本分支分别进行验证,对应安装版本如下:

目标分支 torch 版本 torch_npu 版本
v2.7.1 2.7.1 2.7.1.post4
v2.9.0 2.9.0 2.9.0.post2
v2.10.0 2.10.0 2.10.0
v2.11.0 2.11.0 2.11.0rc1
v2.12.0 2.12.0 2.12.0rc1

说明:当前环境可从华为 PyPI 源获取 torch_npu 2.11.0rc1 和 torch_npu 2.12.0rc1,因此 v2.11.0 与 v2.12.0 分支采用对应 rc 版本进行本地运行验证。

API 范围

  1. torch.overrides.is_tensor_like

    • 验证 NPU Tensor 输入时 torch.overrides.is_tensor_like 返回结果是否正确。
  2. torch.utils.checkpoint.checkpoint

    • 验证 torch.utils.checkpoint.checkpoint 在 NPU Tensor 输入下是否能够正常前向计算和反向传播。
    • torch.utils.checkpoint.checkpoint 当前已有相关 NPU 适配,本次验证中继续覆盖该 API。
  3. torch.utils.checkpoint.checkpoint_sequential

    • 验证 torch.utils.checkpoint.checkpoint_sequential 在 NPU Tensor 输入和 NPU 模块场景下是否能够正常前向计算和反向传播。

修改方案

本任务仅涉及 test_upstream 上游测试 patch 适配,不修改 torch_npu 功能实现代码,不改变客户可见 API 行为。

计划修改内容如下:

  1. 在 test_upstream/test/test_autograd.py.patch 中补充 torch.utils.checkpoint.checkpoint_sequential 相关用例的 NPU 适配:

    • 将测试输入 Tensor 放置到 NPU;
    • 将 torch.nn.Linear 模块迁移到 NPU;
    • 验证 torch.utils.checkpoint.checkpoint_sequential 在 NPU Tensor 输入和 NPU 模块场景下前向计算和反向传播正常。
  2. 在 test_upstream/test/dynamo/test_misc.py.patch 中补充 torch.overrides.is_tensor_like 相关用例的 NPU 适配:

    • 将测试输入 Tensor 放置到 NPU;
    • 验证 NPU Tensor 下 torch.overrides.is_tensor_like 返回结果正确。
  3. 保留已有 torch.utils.checkpoint.checkpoint 相关 NPU 适配,并在本地验证中同步覆盖。

验证计划

计划分别在以下目标分支提交测试适配 PR:

  • v2.7.1
  • v2.9.0
  • v2.10.0
  • v2.11.0
  • v2.12.0

每个目标分支均进行对应版本的本地 NPU 运行验证,验证内容包括:

  • torch.utils.checkpoint.checkpoint_sequential NPU validation PASSED
  • torch.overrides.is_tensor_like NPU validation PASSED
  • torch.utils.checkpoint.checkpoint NPU validation PASSED

当前验证结果

已在 Ascend 910B4 NPU 环境完成 5 个目标版本的本地运行验证,结果均通过:

  • v2.7.1:PASSED
  • v2.9.0:PASSED
  • v2.10.0:PASSED
  • v2.11.0:PASSED
  • v2.12.0:PASSED

测试用例适配说明

经检查,上述 3 个 API 的功能本体不需要新增 torch_npu API 对齐代码。本任务仅补充 PyTorch 官方上游测试用例在 NPU 场景下的适配。

涉及的测试 patch 文件如下:

  • test_upstream/test/test_autograd.py.patch
  • test_upstream/test/dynamo/test_misc.py.patch

主要适配内容如下:

  1. torch.utils.checkpoint.checkpoint_sequential

    • 将测试输入 Tensor 放置到 NPU;
    • 将测试中使用的 torch.nn.Linear 模块迁移到 NPU;
    • 验证 NPU 场景下前向计算和反向传播均可正常执行。
  2. torch.overrides.is_tensor_like

    • 将测试输入 Tensor 放置到 NPU;
    • 验证 NPU Tensor 输入下 torch.overrides.is_tensor_like 返回结果正确。
  3. torch.utils.checkpoint.checkpoint

    • 当前已有相关 NPU 适配;
    • 本次在本地运行验证中继续覆盖该 API,确认 torch.utils.checkpoint.checkpoint 在 NPU Tensor 输入下前向计算和反向传播正常。

资料检查

已检查 docs/zh/native_apis 中相关 API 的资料支持情况。

以下 3 个 API 在目标版本资料中均已有说明:

  • torch.overrides.is_tensor_like
  • torch.utils.checkpoint.checkpoint
  • torch.utils.checkpoint.checkpoint_sequential

因此本任务不涉及资料补齐,不需要新增 doc PR。

验证方式

本地验证基于 Ascend 910B4 NPU 环境,针对 5 个目标版本分别创建独立 Python 环境,并安装对应版本的 torch 与 torch_npu。

验证内容包括:

  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 版本 torch_npu 版本 torch.utils.checkpoint.checkpoint torch.utils.checkpoint.checkpoint_sequential torch.overrides.is_tensor_like 验证结果
v2.7.1 2.7.1 2.7.1.post4 通过 通过 通过 PASSED
v2.9.0 2.9.0 2.9.0.post2 通过 通过 通过 PASSED
v2.10.0 2.10.0 2.10.0 通过 通过 通过 PASSED
v2.11.0 2.11.0 2.11.0rc1 通过 通过 通过 PASSED
v2.12.0 2.12.0 2.12.0rc1 通过 通过 通过 PASSED

说明:当前华为 PyPI 源可获取 torch_npu 2.11.0rc1 与 torch_npu 2.12.0rc1,因此 v2.11.0 与 v2.12.0 分支采用对应 rc 版本完成本地运行验证。

相关 PR

测试 PR:

提交前审计结果

已完成提交前静态审计:

  • 5 个目标版本均已生成独立测试分支;
  • 每个测试 PR 仅修改目标 patch 文件;
  • 已执行 patch 应用检查;
  • patch 不包含整文件删除;
  • patch 不包含冲突标记;
  • 已确认本次修改不涉及文档变更;
  • 已在对应版本 torch / torch_npu 环境中完成本地 NPU 运行验证。

测试 PR 中仅包含以下目标文件修改:

  • test_upstream/test/test_autograd.py.patch
  • test_upstream/test/dynamo/test_misc.py.patch

验证结论

上述 3 个 API 均已完成 NPU 场景下的一致性验证:

  • PyTorch 官方社区已有相关测试用例;
  • API 本体不需要新增 torch_npu 对齐代码;
  • torch.utils.checkpoint.checkpoint_sequential 相关测试已完成 NPU Tensor 与 NPU Module 适配;
  • torch.overrides.is_tensor_like 相关测试已完成 NPU Tensor 适配;
  • torch.utils.checkpoint.checkpoint 已在本地验证中同步覆盖;
  • 已针对 5 个目标版本分别提交测试适配 PR;
  • 5 个目标版本均已完成本地 Ascend 910B4 NPU 运行验证。

CheckList

likedislike
ascend-robotascend-robot成员
6月27日 添加了label:usage
yulin520yulin520
6月28日 修改了issue 的描述
yulin520yulin520
6月28日 修改了issue 的描述
yulin520yulin520
6月28日 修改了issue 的描述
群青世界成员
6月29日 评论:

文字描述中API均要求使用全名

likedislike
yulin520yulin520
6月29日 修改了issue 的描述
yulin520yulin520
6月29日 修改了issue 的描述
yulin520yulin520
6月29日 修改标题为 “【API一致性验证】torch.overrides.is_tensor_like、torch.utils.checkpoint.checkpoint、torch.utils.checkpoint.checkpoint_sequential”,原标题为“[Usage]: 【API一致性验证】checkpoint 与 is_tensor_like 相关 API”
yulin520yulin520
6月29日 修改了issue 的描述
群青世界成员
7月7日 评论:

根据已知信息,针对 torch.overrides.is_tensor_like、torch.utils.checkpoint.checkpoint 和 torch.utils.checkpoint.checkpoint_sequential 三个 API 在 Ascend NPU 环境下的 API 一致性验证工作已完成,总结如下:

一、验证范围
本次验证了 3 个 API 在 NPU Tensor 输入下的功能正确性,涵盖:

  • torch.overrides.is_tensor_like:验证 NPU Tensor 输入时返回 True。
  • torch.utils.checkpoint.checkpoint:验证 NPU Tensor 输入下前向计算和反向传播正常。
  • torch.utils.checkpoint.checkpoint_sequential:验证 NPU Tensor 输入和 NPU Module 场景下前向计算和反向传播正常。

二、修改方案
本任务仅涉及上游测试 patch 适配,不修改 torch_npu 功能实现代码:

  • test_upstream/test/test_autograd.py.patch:补充 checkpoint_sequential NPU 适配(Tensor 和 Linear 模块迁移至 NPU)。
  • test_upstream/test/dynamo/test_misc.py.patch:补充 is_tensor_like NPU 适配(Tensor 迁移至 NPU)。
  • 保留已有 checkpoint NPU 适配,同步覆盖验证。

三、验证结果
在 Ascend 910B4 NPU 环境下,5 个目标版本(v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0)均验证通过,三个 API 功能正常。

四、结论

  1. 上述 3 个 API 功能本体无需新增 torch_npu 对齐代码。
  2. 已针对 5 个目标版本分别提交测试适配 PR,仅修改目标 patch 文件。
  3. 不涉及资料补齐,无需新增 doc PR。
  4. 已完成本地 NPU 运行验证及提交前静态审计,所有 API 行为与 PyTorch 官方社区一致。
likedislike
yulin520yulin520
7月7日 issue状态由 TODO 改变为 DONE
yulin520yulin520
7月7日 关闭了 issue
ascend-robotascend-robot成员
7月7日 添加了label:resolved