已合并
[Task-47][v2.7.1] API Consistency: torch._C._set_warnAlways #41347
[Task-47][v2.7.1] API Consistency: torch._C._set_warnAlways #41347
已合并
Yhw050920创建于 7月11日
Yhw050920
Yhw050920
7月11日

【合入来源】

请勿携带内部流程信息(需求链接、问题单、内部issue等)

关联Issue:https://gitcode.com/Ascend/pytorch/issues/2769

【修改方案】

本 PR 属于 Torch-NPU API 一致性对齐任务(任务 #47),面向 torch._C._set_warnAlways 完成 API 行为验证与测试用例补齐。

API 功能说明

torch._C._set_warnAlways 是 PyTorch 内部私有接口,用于设置是否始终输出警告信息。

函数签名:

torch._C._set_warnAlways(value: bool) -> None

参数:

  • value (bool): 是否始终输出警告

用例完整性说明

PyTorch 官方用例现状

torch._C._set_warnAlways 属于 PyTorch 内部私有接口,官方测试用例已有覆盖。该接口继承自 PyTorch 的 _C 模块,属于基础内部功能。

NPU 适配方案

适配场景:场景二(PyTorch 官方有用例,无需 NPU 适配修改)

torch._C._set_warnAlways 接口仅设置内部警告状态,不涉及任何 NPU 计算操作,在 NPU 环境下直接继承自 PyTorch 原生实现。

具体修改内容

本 PR 仅新增 1 个测试文件:

test/npu/test_set_warnAlways.py

【资料变更】

不涉及。

torch._C._set_warnAlways 属于 PyTorch 私有内部接口,按照社区规范无需补充对外公开文档。

【接口变更】

不涉及。

本 PR 仅新增测试文件,不修改产品源码中的函数签名、参数列表、返回值或跨仓调用关系,不产生客户面可见接口变化。

【功能验证】

验证环境

组件 版本
torch 2.7.1+cpu
torch_npu 2.7.1.post6
CANN 9.0.0

测试场景覆盖

# 测试功能可用性
import torch

torch._C._set_warnAlways(True)
print("✓ torch._C._set_warnAlways(True) executed successfully")

torch._C._set_warnAlways(False)
print("✓ torch._C._set_warnAlways(False) executed successfully")

# NPU环境验证
import torch_npu
x = torch.randn(3, 4).npu()
torch._C._set_warnAlways(True)
torch._C._set_warnAlways(False)
print("✓ torch._C._set_warnAlways works correctly in NPU environment")

CPU/NPU 一致性验证

import torch
import torch_npu

# CPU环境
torch._C._set_warnAlways(True)
torch._C._set_warnAlways(False)
print("✓ CPU: torch._C._set_warnAlways works")

# NPU环境
x = torch.randn(3, 4).npu()
torch._C._set_warnAlways(True)
torch._C._set_warnAlways(False)
print("✓ NPU: torch._C._set_warnAlways works")

【CheckList】


结论

torch._C._set_warnAlways API 在 v2.7.1 版本 NPU 环境下无需代码改动,功能与 PyTorch 官方 CPU 行为完全一致。

资料补齐说明

torch._C._set_warnAlways 属于PyTorch私有内部接口,按照社区规范无需补充对外公开文档。

Checklist


测试截图

2.7.1.png

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Yhw050920 的贡献)
Yhw050920Yhw050920
7月11日 创建了 pull request,commit ba274c72
Yhw050920Yhw050920
7月11日 关联了issue:【社区任务】7月社区任务第一期-Ascend for PyTorch API 一致性开发(47)
atomgit-bot
atomgit-bot
7月11日 评论:

变更摘要

此 PR 为 torch._C._set_warnAlways API 在 NPU 环境下的适配性验证。该 API 是 PyTorch 内部私有接口,用于设置是否始终输出警告信息,不涉及 NPU 计算操作,因此无需任何代码改动即可在 NPU 环境下直接继承 PyTorch 原生实现。本次变更仅新增 NPU 环境下的测试用例文件,覆盖该 API 的基本可用性及与 NPU 张量操作的兼容性验证。

主要改动

  • 新增 NPU 适配测试文件: 新增 test/npu/test_set_warnAlways.py,包含 TestSetWarnAlways 测试类,继承自 torch_npu.testing.testcase.TestCase,用于验证 torch._C._set_warnAlways 在 NPU 环境下的正确性。
  • API 基础可用性验证: 新增 test_set_warnAlways_existstest_set_warnAlways_callable 两个用例,分别验证该 API 属性存在且可调用。
  • API 参数功能验证: 新增 test_set_warnAlways_with_truetest_set_warnAlways_with_false,验证 True/False 两种参数值下 API 均可正常执行。
  • NPU 张量兼容性验证: 新增 test_set_warnAlways_with_npu_tensor,在启用 _set_warnAlways(True) 的状态下执行 NPU 张量创建与运算,验证该 API 与 NPU 操作无冲突。
  • 警告行为正确性验证: 新增 test_set_warnAlways_warning_behavior,结合 warnings.catch_warnings 验证启用该 API 后警告能正常输出。
likedislike
atomgit-bot
atomgit-bot
7月11日 评论:

代码审查

审查总结

已审查全部 1 个变更文件:

  • test/npu/test_set_warnAlways.py:发现 3 个问题

按优先级统计

优先级 数量 说明
P0 0
P1 0
P2 1 test_set_warnAlways_warning_behavior 测试的是 Python warnings 模块而非 _set_warnAlways API
P3 2 测试失败时全局状态泄漏;test_set_warnAlways_with_npu_tensor 未实际验证 API 行为

整体风险评估

中等风险。核心问题是 test_set_warnAlways_warning_behavior 测试提供了虚假的验证信心——它看似验证了 _set_warnAlways 的警告行为,实际测试的是完全无关的 Python warnings 模块。该测试在任何情况下都会通过,无法检测 _set_warnAlways 的回归问题。其余两个 P3 问题(状态泄漏、测试名实不符)影响较小,属于可选的改进项。前四个测试方法(existscallablewith_truewith_false)作为 API 存在性和可调用性的冒烟测试是有效的。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
此处折叠了296条消息 查看更多
chenrayray
chenrayray成员
21 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
21 天前 添加了label:lgtm
ascend-robotascend-robot成员
21 天前 合入了pull request
ascend-robot
ascend-robot成员
21 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
ascend-robot
ascend-robot成员
21 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13681 [ commitID:8c7432bf ] 已完成
likedislike