已合并
fix: preserve deferred Triton backend loading (v2.12.0) #44737
黄桂军创建于 12 天前
fix: preserve deferred Triton backend loading (v2.12.0) #44737
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 黄桂军 的贡献)atomgit-bot
12 天前 评论:
12 天前 评论:
变更摘要
本 PR 将 deferred Triton backend loading 修复同步到 v2.12.0 分支,目标是避免在 Inductor wrapper 构造阶段提前加载 Triton backend。核心改动位于 torch_npu/utils/_dynamo.py:patch_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_requested且is_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未加载。


ascend-robot
12 天前 评论:
12 天前 评论:
atomgit-bot
12 天前 评论:
12 天前 评论:
12 天前 添加了label:ascend-cla/yes
此处折叠了129条消息 查看更多
10 天前 添加了label:approved
10 天前 添加了label:lgtm
10 天前 合入了pull request
ascend-robot
10 天前 评论:
10 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14198 [ commitID:18fe6d5a ] 已完成


关联 Issue
背景
import torch性能优化需求(pull/44372)将 Inductor 初始化从首次 backend 执行阶段提前到
torch.compile()wrapper 创建阶段。默认 Triton backend 因此被提前导入;在未安装triton-ascend的环境中,torch_npu/_inductor/runtime/triton_helpers.py会报tl.extra.ascend缺失。修改内容
backend="inductor"wrapper 时不会加载torch_npu._inductor。验证
环境:
torch-npu-2.10.0-py311、PyTorch2.10.0+cpu、AArch64、CANN 9.1.0。tl.extra.ascend缺失错误消失。