已合并
fix: preserve deferred Triton backend loading (v2.9.0) #44735
黄桂军创建于 6 天前
fix: preserve deferred Triton backend loading (v2.9.0) #44735
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 黄桂军 的贡献)atomgit-bot
6 天前 评论:
6 天前 评论:
变更摘要
本 PR 将 deferred Triton backend loading 修复同步到 v2.9.0 分支,核心目标是避免 Inductor wrapper 在创建阶段提前加载 Triton backend。torch_npu/utils/_dynamo.py 中,patch_inductor_wrapper() 不再调用原先的 _setup_inductor_for_compile(),改为仅执行 _lazy_dynamo_setup(),将 Inductor/NPU backend 的实际注册推迟到 backend scope 进入时进行;同时删除了 _setup_inductor_for_compile() 函数,并在 _NpuBackendScope 进入时补充调用 _lazy_inductor_setup()。对应测试改为验证延迟加载时机,并新增了真实 torch.compile(..., backend="inductor") 入口的测试用例。
主要改动
- 延迟 backend 加载流程调整:
patch_inductor_wrapper()中原先调用_setup_inductor_for_compile(self.config)的逻辑被替换为仅调用_lazy_dynamo_setup(),使 wrapper 构造阶段不再提前加载 Triton backend。 - 移除旧的初始化函数: 删除了
_setup_inductor_for_compile()函数,该函数原先会在编译调用阶段解析npu_backend并触发_lazy_inductor_setup()。 - backend scope 进入时完成注册:
_NpuBackendScope中在register_inductor_npu()之后新增_lazy_inductor_setup()调用,确保 Inductor/NPU backend 注册在实际进入 backend scope 时才执行。 - shape-handling 前置校验:
patch_inductor_wrapper()中新增is_inductor_npu_initialized()判断,若尚未初始化则先调用register_inductor_npu(),再执行torch_npu._inductor.patch_shape_handling()。 - 测试用例更新与新增:
test/dynamo/test_compile_trigger.py将 mock 目标从_setup_inductor_for_compile改为_lazy_dynamo_setup与_lazy_inductor_setup,并新增test_inductor_backend_load_is_deferred_until_first_call,验证创建 Inductor wrapper 时不会提前加载torch_npu._inductor。


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


关联 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缺失错误消失。