已开启
【26.2.0众测】TorchNPU 26.1.0 众测交付材料 (dzzw123) #37
【26.2.0众测】TorchNPU 26.1.0 众测交付材料 (dzzw123) #37
已开启
dzzw123创建于 17 天前
dzzw123
17 天前

任务

对应社区任务 Ascend/pytorch-ecosystem#395(TorchNPU 26.1.0 众测 Codelab 专场)。

交付内容(个人文件夹 dzzw123)

  • 任务1 安装与快速入门:pip 环境截图 + torch_npu 导入验证 + MNIST 训练脚本(CNN+transfer_to_npu+AMP) + 训练/权重截图。
  • 任务2 torch.compile 体验与实践:
    • 7 个编译后端改写脚本(AOT_Eager / Inductor-DVM / Inductor-MLIR / Inductor-Triton / NPUGraphs / NPUGraph_EX / TorchAir-GE),模型统一为 TorchBench 清单内的 ResNet50。
    • Guard Filter 6 个示例(含重编译消除验证)。
    • 21 张正确性/性能截图(4 任务1 + 17 任务2),均为 ResNet50 真实 NPU 运行结果。
  • 配套:体验问卷、README(含 §八「提交前格式合规自查」对照表,逐条对应任务书 §6 / 提交格式要求 / 大群公告)。

关键发现(已在脚本中记录为 FINDING / 写入社区 Issue)

  • Inductor-MLIR 后端 ResNet50 数值发散(max|diff|≈3.83e+02)。
  • Inductor-Triton(默认 inductor 后端) 编译 ResNet50 在默认编译并行度下被 OOM Killer 终止(rc=137):该容器 cgroup 内存限额 32 GB,而 compile_threads = min(32, nproc=256) = 32、单编译 worker 峰值常驻内存 1.80 GB → 32 × 1.8 ≈ 57 GB 必然超限。
    将编译并行度收敛至 2(TORCHINDUCTOR_COMPILE_THREADS=2,只影响宿主侧并行度,backend="inductor" 与生成的 Triton kernel 均不变)后首次跑通:编译 192.12 s、正确性 PASS(max|diff|=1.717e-05),但性能 14.057 ms 慢于 eager 7.391 ms(0.526x)。该异常结果已按任务书要求连同脚本与验证过程截图一并提交;现象已作为 Issue #4794 反馈。
  • 真实模型上 TorchAir-GE(3.26x)、NPUGraph_EX(2.25x)、Inductor-DVM(1.45x) 明显快于 eager。

任务 issue: #395

likedislike
合并受阻
Ddzzw123
17 天前 关联了issue:【Codelab 现场活动专属任务】TorchNPU 众测任务(16)
ascend-robotascend-robot成员
17 天前 添加了label:ascend-cla/no
ascend-robot
ascend-robot成员
17 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.


PR Approval Progress

⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)

Module Approval Details

module lgtm status approve status
repo-Ascend/pytorch-ecosystem ❌ (0/2)(You can also ask: huangjingwei, zyw-hw, ltllt1, qianxiyue, xuyun15) ❌ (0/1)(You can also ask: helixing, zyw-hw, chenrayray, linhan37, xuyun15)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

dzzw123, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
Ddzzw123
17 天前 推送  1 个提交:1c63cce7-【26.2.0众测】回填链接交付件.xls (Issue 4793/4794 + PR MR#37)
ascend-robotascend-robot成员
17 天前 添加了label:stat/needs-squash
ascend-robotascend-robot成员
17 天前 删除了label:ascend-cla/no
ascend-robotascend-robot成员
17 天前 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
17 天前 评论:

CLA检查已通过,详情可参考这里

likedislike
yi_jiabin成员
10 天前 评论:

材料审核存在以下问题,请尽快修复并重新提交:
torch_npu导入运行结果与指令期望不一致

likedislike
Ddzzw123
10 天前 推送  1 个提交:d4257cbd-【26.2.0众测】修复检视意见: torch_npu 导入截图命令与输出对齐官方要求
此处折叠了7条事件消息 查看更多
ascend-robotascend-robot成员
8 天前 删除了label:stat/needs-squash
ascend-robot
ascend-robot成员
8 天前 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): stat/needs-squash.

likedislike
ascend-robotascend-robot成员
8 天前 添加了label:ascend-cla/yes
dzzw123
8 天前 评论:

材料审核存在以下问题,请尽快修复并重新提交:
torch_npu导入运行结果与指令期望不一致

@yi_jiabin

已按检视意见修复,请复核 @yi_jiabin

检视意见:torch_npu 导入运行结果与指令期望不一致

根因:任务1-安装与快速入门/软件安装/2_torch_npu导入截图.png 在生成时两处与规范不符——

  1. 命令写成了 python,而《交付件说明》要求的是 python3;
  2. 输出误用了另一条诊断命令的日志内容(只有 device= npu:0 / torch.Size([3, 4])),没有打印张量本身,因此与 print(a + a) 的期望输出对不上。

修复:已在真机(DevEnv_494548,Ascend 910B3)用与交付件说明完全一致的命令重新执行并重新截图:

python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"

真实回显(已替换至截图):

tensor([[-2.6776,  2.5823,  0.8634,  2.5405],
        [ 2.9386,  2.2455, -2.1292,  0.5156],
        [ 1.9356,  1.4036,  1.5286,  3.2925]], device='npu:0')

现截图同时满足:命令 = 规范的 python3 -c ...,输出 = 带 device='npu:0' 的真实张量。

同步修正:渲染脚本中导致该错配的日志映射已一并修正,避免同类问题复发。

  • 提交:d4257cb(分支 26.2.0-beta-dzzw123)
  • 变更文件:任务1-安装与快速入门/软件安装/2_torch_npu导入截图.png

麻烦重新检视,谢谢!

likedislike
LDW
LDW
8 天前 评论:

尊敬的开发者,您的交付件目前还有以下问题需要改进:

(1) 目前还需您填写一份额外的问卷。第二份问卷的相关通知请在众测任务大群查看。

(2) 任务1 证明② torch_npu 导入运行截图验收:运行结果与文档示例不一致,未按照文档步骤操作,请重新按文档步骤执行并提交截图。

(3) 任务2 - Guard Filter:示例1~5 均为与模型无关的玩具函数,且未提供对应截图。请按任务书要求选取模型并补充截图。

likedislike
Ddzzw123
4 天前 强制推送  1 个提交:28b8dc2c-【26.2.0众测】TorchNPU 26.1.0 众测交付材料 (dzzw123)
ascend-robotascend-robot成员
4 天前 删除了label:ascend-cla/yes
ascend-robotascend-robot成员
4 天前 添加了label:ascend-cla/yes
Ddzzw123
4 天前 修改了pull request 的描述
dzzw123
4 天前 评论:

【检视意见已全部整改,请复核】commit 28b8dc2

针对两位的检视意见,逐条说明整改情况。

▍liudingwen (2) 任务1 证明② torch_npu 导入截图「运行结果与文档示例不一致,未按文档步骤操作」

已在真机(DevEnv_494548,Ascend 910B3)按《交付件说明》逐字原命令重新执行并重新截图:

python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"

截图回显现在是 print(a + a) 的真实张量输出,并带 device='npu:0',与文档期望输出形式一致
(此前误用了另一条诊断命令的日志,只有 torch.Size 而没有张量本身,已定位并替换)。

同一轮还发现任务1 的 pip 截图命令行写成了 pip list (torch / torch_npu / CANN),不是一个可复现命令;
已改为 pip list | grep -Ei "torch|cann|triton"(屏幕上的包版本数据未变,仅修正命令行表述),
同时仍能看到 torch 2.9.0+cpu 与 torch_npu 2.9.0.post6。

▍liudingwen (3) 任务2 Guard Filter 示例 1~5「均为与模型无关的玩具函数,且未提供对应截图」

已按任务书 §5.2.3「将示例中的模型替换为你自己选择的模型」把 6 个示例全部改写为同一个真实模型
ResNet50
(任务书指定清单 2 / TorchBench 内的 resnet50,
即 torchvision.models.resnet50(weights=None),input=(1,3,224,224) fp32)。

每个脚本在保留各自 guard 机制的前提下(① 过滤字典版本 guard / ② 过滤运行时状态 guard /
③ 组合多类 guard 过滤 / ④ 按变量名过滤 / ⑤ 过滤全局变量 guard / ⑥ 结合内置 helper),
把示例中与模型无关的最小张量函数替换为真实 ResNet50 前向,并在真机逐个重跑,rc 全部为 0。

7_重编译消除验证截图.png / 8_正确性验证截图.png / 9_性能对比截图.png 三张图已按
同一模型、同一次运行的实测结果重渲染:图内按示例 1~6 分块,每块都带各自日志文件名、rc 与结论行。

▍liudingwen (1) 额外问卷

按大群通知另行填写,不在本材料 PR 范围内。

▍本轮附加自查修复(对照任务书 §6 + 提交格式要求 + 大群《交付件注意事项公告》)

  1. 截图显示 backend 标识:14 张后端截图(7 后端 × 正确性/性能)的标题栏全部写明后端名
    (Inductor-Triton / Inductor-MLIR / Inductor-DVM / NPUGraphs / NPUGraph_EX /
    AOT_Eager / TorchAir-GE),性能段正文再重复一次后端名,便于确认截图归属;
  2. 结果异常的后端也按任务书要求提交脚本 + 过程截图:Inductor-MLIR 正确性 FAIL
    (max|diff|=3.829e+02,见 Issue #4793)与 Inductor-Triton 编译后反而慢于 eager(0.526x)
    两项均保留脚本、验证过程截图,图内加 [NOTE] 指向对应 Issue;
  3. 截图只画脚本自身的验证输出,框架告警([W9xx] / UserWarning / ImportWarning)不再进图,
    与运行日志原文一并归档备查;
  4. README 新增 §八「提交前格式合规自查」,逐条对照任务书 §6 / 提交格式要求 / 大群公告,
    并删除对不存在文件的引用;
  5. Guard Filter 6 个示例统一使用 backend="eager" 并在 README §5.1 显式说明:任务书 §5.2.3
    说明 Guard Filter 是 Dynamo 前端层优化、「可叠加在任意后端上使用」「可自行搭配选择」,选 eager
    是为把重编译消除/正确性两项前端行为从 Inductor 编译代价中隔离(默认 Inductor 在本容器
    32 GB 限额下会 OOM,见 Issue #4794);各示例的 filter 目标 guard 类型在运行日志「验证0)」段
    均真实命中等。

交付结构仍与官方 交付件说明.txt 完全对齐:13 个改写脚本 + 21 张截图
(任务2:1 重编译消除 + 8 正确性 + 8 性能;任务1:4 张),全部为 ResNet50 真实 NPU 运行结果。

@yi_jiabin @liudingwen 麻烦复核,谢谢!

likedislike