已合并
[Task-47][v2.7.1] API Consistency: torch._C._set_warnAlways #41347
Yhw050920创建于 7月11日
[Task-47][v2.7.1] API Consistency: torch._C._set_warnAlways #41347
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Yhw050920 的贡献)7月11日 关联了issue:【社区任务】7月社区任务第一期-Ascend for PyTorch API 一致性开发(47)
atomgit-bot
7月11日 评论:
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_exists和test_set_warnAlways_callable两个用例,分别验证该 API 属性存在且可调用。 - API 参数功能验证: 新增
test_set_warnAlways_with_true和test_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 后警告能正常输出。


ascend-robot
7月11日 评论:
7月11日 评论:
atomgit-bot
7月11日 评论:
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 问题(状态泄漏、测试名实不符)影响较小,属于可选的改进项。前四个测试方法(exists、callable、with_true、with_false)作为 API 存在性和可调用性的冒烟测试是有效的。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


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


21 天前 添加了label:lgtm
21 天前 合入了pull request
ascend-robot
21 天前 评论:
21 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


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


【合入来源】
关联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 个测试文件:
【资料变更】
不涉及。
torch._C._set_warnAlways属于 PyTorch 私有内部接口,按照社区规范无需补充对外公开文档。【接口变更】
不涉及。
本 PR 仅新增测试文件,不修改产品源码中的函数签名、参数列表、返回值或跨仓调用关系,不产生客户面可见接口变化。
【功能验证】
验证环境
测试场景覆盖
# 测试功能可用性 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_warnAlwaysAPI 在 v2.7.1 版本 NPU 环境下无需代码改动,功能与 PyTorch 官方 CPU 行为完全一致。资料补齐说明
torch._C._set_warnAlways属于PyTorch私有内部接口,按照社区规范无需补充对外公开文档。Checklist
测试截图