已合并
fix: preserve deferred Triton backend loading (v2.12.0) #44737
fix: preserve deferred Triton backend loading (v2.12.0) #44737
已合并
黄桂军创建于 12 天前
黄桂军
黄桂军成员
12 天前

关联 Issue

  • #4094

背景

import torch性能优化需求(pull/44372)将 Inductor 初始化从首次 backend 执行阶段提前到 torch.compile() wrapper 创建阶段。默认 Triton backend 因此被提前导入;在未安装 triton-ascend 的环境中,torch_npu/_inductor/runtime/triton_helpers.py 会报 tl.extra.ascend 缺失。

修改内容

  • 恢复默认 Inductor backend 的首次执行加载时机。
  • 增加测试,验证创建 backend="inductor" wrapper 时不会加载 torch_npu._inductor

验证

环境:torch-npu-2.10.0-py311、PyTorch 2.10.0+cpu、AArch64、CANN 9.1.0。

  • tl.extra.ascend 缺失错误消失。
likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 黄桂军 的贡献)
黄桂军黄桂军成员
12 天前 创建了 pull request,commit 8d867586
atomgit-bot
atomgit-bot
12 天前 评论:

变更摘要

本 PR 将 deferred Triton backend loading 修复同步到 v2.12.0 分支,目标是避免在 Inductor wrapper 构造阶段提前加载 Triton backend。核心改动位于 torch_npu/utils/_dynamo.pypatch_inductor_wrapper() 现在仅执行 _lazy_dynamo_setup(),把 Inductor/NPU backend 的实际注册推迟到进入 backend scope 时执行;同时删除了原 _setup_inductor_for_compile() 函数,并在 _NpuBackendScope 进入时补充 _lazy_inductor_setup() 调用。测试侧新增用例,验证 torch.compile(..., backend="inductor") 创建 wrapper 时不会提前加载 torch_npu._inductor

主要改动

  • patch_inductor_wrapper() 延迟 backend 注册: 将原先调用 _setup_inductor_for_compile(self.config) 改为仅调用 _lazy_dynamo_setup(),使 wrapper 构造阶段不再触发 Inductor backend 加载。
  • 按需注册 shape handling: 仅在 shape_handling_requestedis_inductor_npu_initialized() 为假时才调用 register_inductor_npu(),再执行 torch_npu._inductor.patch_shape_handling(),避免不必要的提前初始化。
  • _NpuBackendScope 进入时补齐 lazy setup: 在 register_inductor_npu() 之后新增 _lazy_inductor_setup() 调用,确保实际 backend scope 进入时完成 Inductor/NPU 相关注册。
  • 删除 _setup_inductor_for_compile(): 移除该函数及其内部的 npu_backend 解析、TORCHINDUCTOR_NPU_BACKEND 环境变量切换与恢复逻辑,其职责被拆分到 lazy setup 与 backend scope 中。
  • 新增延迟加载测试: 在 test/dynamo/test_compile_trigger.py 中新增 test_inductor_backend_load_is_deferred_until_first_call,断言 wrapper 创建后仅 _lazy_dynamo_setup 已执行,而 _lazy_inductor_setup 未执行且 torch_npu._inductor 未加载。
likedislike
atomgit-bot
atomgit-bot
12 天前 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
12 天前 添加了label:ascend-cla/yes
此处折叠了129条消息 查看更多
ascend-robotascend-robot成员
10 天前 添加了label:approved
renyujin成员
10 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
10 天前 添加了label:lgtm
ascend-robotascend-robot成员
10 天前 合入了pull request
ascend-robot
ascend-robot成员
10 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14198 [ commitID:18fe6d5a ] 已完成
likedislike