torchair.get_npu_backend 详解:在昇腾 NPU 上获取 torch.compile 图编译后端的完整指南
人工智能模型编译Ascend【免费下载链接】torchairTorchAir 支持用户基于PyTorch框架和torch_npu插件在昇腾NPU上使用图模式进行推理。项目地址https://gitcode.com/Ascend/torchair点击查看免费下载导读torchair.get_npu_backend是 TorchAir 为开发者提供的核心入口函数用于获取一个能够在昇腾 NPU 上运行的图编译后端npu_backend该后端可直接作为backend参数传入torch.compile让基于 PyTorch 框架与torch_npu插件的模型以图模式在昇腾 NPU 上完成编译与推理。阅读本篇你将掌握该函数的函数原型、参数语义、返回值与底层实现机制并学会通过CompilerConfig与自定义 decompositions 定制后端行为最终能在自己的模型上完成从 Eager 模式到 NPU 图模式的迁移。函数原型与功能定位功能说明get_npu_backend返回一个能够在 NPU 上运行的图编译后端下文简称npu_backend其典型用法是作为backend参数传给 PyTorch 的torch.compile。在 TorchAir 中这一函数位于 python/torchair/npu_fx_compiler.py并已通过 python/torchair/init.py 在包顶层导出因此可以直接以torchair.get_npu_backend形式调用。函数原型get_npu_backend(*, compiler_config: CompilerConfig None, custom_decompositions: Dict {}) - npu_backend注意函数签名中的*compiler_config与custom_decompositions均为仅限关键字参数keyword-only调用时必须显式写出参数名不能按位置传参。参数说明| 参数 | 输入/输出 | 说明 | | -- | -- | -- | | compiler_config | 输入 | 图编译配置CompilerConfig类的实例化对象。默认值为None此时由 TorchAir 自动生成默认配置。 | | custom_decompositions | 输入 | 指定模型运行时用到的 decompositions将较大算子操作分解为较简单或核心算子字典类型默认值为空字典{}。 | | * | 输入 | 预留参数用于后续功能扩展。 |返回值说明返回编译后端npu_backend。从源码看该返回值本质上是functools.partial(_npu_backend, compiler_configcompiler_config, decompositionsdecompositions)形成的偏函数partial function即一个接受torch.fx.GraphModule与example_inputs的可调用对象符合torch.compile对 backend 的调用约定详见下文底层实现一节。约束说明文档明确标注无约束。从实现细节看函数要求环境中已安装torch、torch_npu与torchair三个依赖包torch.compile依赖 PyTorch 2.x 的 Dynamo/AOTAutograd 编译链路因此建议在较新的 PyTorch 2.x 版本上使用。调用示例与实战要点基础调用示例以下示例展示了最典型的用法构造CompilerConfig获取 NPU 后端并通过torch.compile将模型切换到图编译模式。import torch import torch_npu import torchair class Model(torch.nn.Module): def __init__(self): super().__init__() self.p1 torch.nn.Parameter(torch.randn(2, 4)) self.p2 torch.nn.Parameter(torch.randn(2, 4)) def forward(self, x, y): x x y self.p1 self.p2 return x model Model().npu() config torchair.CompilerConfig() # 获取NPU提供的默认backend npu_backend torchair.get_npu_backend(compiler_configconfig) opt_model torch.compile(model, backendnpu_backend)实战要点解析model.npu()必不可少示例中通过.npu()将模型参数与计算设备迁移到 NPU 上torch.compile(backendnpu_backend)得到的opt_model在后续前向调用时才会真正触发捕获与编译。默认后端即可运行当不传compiler_config时源码中会执行compiler_config CompilerConfig()见 python/torchair/npu_fx_compiler.py因此torchair.get_npu_backend()本身也是合法的调用形式。与dynamo_export的关系TorchAir 的 python/torchair/npu_export.py 在实现离线导图功能dynamo_export时同样复用了get_npu_backend其调用方式为model torch.compile(model, backendget_npu_backend(compiler_configconfig), fullgraphTrue, dynamicdynamic)这从侧面说明该后端是 TorchAir 所有图编译场景的统一入口既可以支撑在线推理torch.compile后直接运行也可以支撑离线导出配合config.export.export_mode True导出 air 离线图。多后端场景get_npu_backend每次调用都会基于传入的配置生成一个新的偏函数因此可以在同一进程中根据不同的CompilerConfig实例构造多个行为各异的 backend。在 tests/smoke/aclgraph_test.py 中可以看到大量此类用法例如npu_backend torchair.get_npu_backend(compiler_confignpu_config)与aclgraph_backend torchair.get_npu_backend(compiler_configconfig)并存分别验证不同编译模式下的行为。CompilerConfig定制图编译行为的关键参数compiler_config是get_npu_backend最重要的参数。它的类型为CompilerConfig定义在 python/torchair/configs/compiler_config.py。该类在初始化时聚合了多个子配置对象并通过mode字段决定后端采用哪一条编译路径| 配置字段 | 类型/默认值 | 说明 | | -- | -- | -- | | debug |_DebugConfig()| 调试相关配置图 dump、run_eagerly、data_dump 等 | | aoe_config |_AoeConfig()| AOEAscend Operator Execution调优配置 | | export |_ExportConfig()| 离线导图配置export_mode、export_path_dir 等 | | dump_config |_DataDumpConfig()| 数据 dump 配置 | | fusion_config |_FusionConfig()| 图融合配置 | | experimental_config |_ExperimentalConfig()| 实验性功能开关view_optimize、npu_fx_pass 等 | | inference_config |_InferenceConfig()| 推理场景配置 | | ge_config |_GEConfig()| GE 图引擎相关配置 | | aclgraph_config |_AclGraphConfig()| ACL 图aclgraph相关配置 | | npugraphex_config |_NpuGraphExConfig()| NpuGraphEx 模式配置 | | mode |OptionValue(max-autotune, [max-autotune, reduce-overhead, npugraph_ex])| 编译模式决定底层图生成路径 | | post_grad_custom_pre_pass |CallableValue(None)| 自定义 pre-pass 回调 | | post_grad_custom_post_pass |CallableValue(None)| 自定义 post-pass 回调 |mode 字段与编译路径mode是决定后端行为的核心开关可选值及对应的底层图生成路径见 python/torchair/npu_fx_compiler.pymax-autotune默认走 GE 图模式由GeConcreteGraphpython/torchair/_ge_concrete_graph/fx2ge_converter.py生成 GE 具体图编译后由 CANN 的 GE 执行引擎运行。reduce-overhead走 ACL 图aclgraph路径由AclConcreteGraphpython/torchair/_acl_concrete_graph/fx2acl_converter.py生成轻量化图减少框架调度开销。注意在_check_config_support中已对该模式发出 DeprecationWarning提示后续将废弃建议迁移到npugraph_ex见 python/torchair/configs/compiler_config.py。npugraph_exTorchAir 推荐的下一代图模式后端同样走 ACL 图路径并提供更丰富的推理能力支持。同时_check_config_supportpython/torchair/configs/compiler_config.py会在get_npu_backend内部被调用python/torchair/npu_fx_compiler.py用于校验当前模式下不生效的配置项并给出告警帮助开发者避免配置静默失效。custom_decompositions按需定制算子分解custom_decompositions参数允许开发者向编译链路注入自定义的 decomposition 规则将较大算子如matmul、allgather等分解为更简单或更核心的算子从而影响捕获后的 FX 图结构。合并逻辑源码中get_npu_backend通过_get_merged_decompositionspython/torchair/npu_fx_compiler.py完成三部分 decompositions 的合并默认 decompositions来自get_npu_default_decompositions()python/torchair/_utils/init.py其中包含torch.ops.npu_define.allgather.default的分解规则在 PyTorch ≥ 2.3.1 时还包含_c10d_functional.all_to_all_single的分解规则。用户自定义 decompositions即custom_decompositions参数传入的字典会update进默认集合从而可以覆盖或新增分解规则。NPU 补丁 decompositions由add_npu_patchpython/torchair/_utils/init.py注入包含adjust_implicit_decomposition、register_matmul_backward_decomp、npu_patch_meta、npu_patch_break_graph、npu_patch_register_fast_op_impl等针对 NPU 的适配补丁并在开启experimental_config.npu_fx_pass时注册额外的 FX pass 分解规则。使用建议字典的 key 通常是算子如torch.ops.xxx.defaultvalue 是对应的分解函数由于合并顺序为默认 → 用户自定义 → 补丁用户自定义规则可以覆盖默认规则但补丁规则拥有最终决定权该参数是可选优化手段普通模型通常无需配置保持默认空字典即可。底层实现原理从调用到编译的完整链路get_npu_backend的实现位于 python/torchair/npu_fx_compiler.py其核心逻辑可分为四步def get_npu_backend(*, compiler_config: CompilerConfig None, custom_decompositions: Dict {}): _init_debug_logging() # 1. 初始化调试日志 if compiler_config is None: compiler_config CompilerConfig() # 2. 生成默认配置 _check_config_support(compiler_config) # 3. 校验配置与模式匹配性 decompositions _get_merged_decompositions(compiler_config, custom_decompositions) # 4. 合并分解规则 return functools.partial(_npu_backend, compiler_configcompiler_config, decompositionsdecompositions)真正的编译入口_npu_backend返回的偏函数最终调用_npu_backend(gm, example_inputs, compiler_config, decompositions, **kwargs)python/torchair/npu_fx_compiler.py它才是torch.compile回调的真正实现确定性保护尝试从torch_npu.dynamo._deterministic_guard导入install_npu_deterministic_level_guard并安装以保证编译过程中算子选择与执行的确定性若torch_npu未提供该能力则记录一次 warning 后继续源码中已做 ImportError 兜底。send/recv 处理调用_process_send_recv(gm, compiler_config)预处理通信图python/torchair/npu_fx_compiler.py适配集合通信算子入图场景。kwargs 选项处理调用_process_kwargs_options(compiler_config, kwargs)python/torchair/configs/npugraphex_config.py将torch.compile传入的额外选项如dynamic、fullgraph等同步进配置。获取编译器调用get_compiler(compiler_config)python/torchair/npu_fx_compiler.py返回_NpuFxCompiler实例。AOT 编译调用_compile_graph_with_aot(gm, compiler, example_inputs, compiler_config, decompositions, is_cacheFalse)python/torchair/npu_fx_compiler.py进入 AOTAutograd 编译流程最终返回封装好的_CompiledFxGraph或具体图对象如GeConcreteGraph/AclConcreteGraph供运行时执行。编译模式分派在_NpuFxCompiler._gen_compiled_gmpython/torchair/npu_fx_compiler.py中会根据compiler_config.mode.value分派max-autotune先执行prescan_and_compile_custom_ops对自定义算子做预扫描与预编译再构造GeConcreteGraphreduce-overhead/npugraph_ex构造AclConcreteGraph支持自定义内存池use_custom_pool并处理被修改的用户输入mutated_user_inputs其余值抛出ValueError(fUnsupported npu backend mode: ...)。此外在_compile_graph_with_aot中reduce-overhead与npugraph_ex模式还会先执行replace_stream_event_pass(gm)替换torch.npu.Event与 stream以保证多流语义在图中正确表达。常见问题与排障指引ImportError: torch_npu相关报错请确认已正确安装并与 PyTorch 版本匹配的torch_npu且代码中已执行import torch_npu。配置项告警 may not take effect由_check_config_support触发说明当前mode下某些配置如ge_config、fusion_config下的部分项不生效或可能报错请根据告警内容调整CompilerConfig或切换mode。reduce-overhead模式 DeprecationWarning该模式已被标记废弃python/torchair/configs/compiler_config.py建议改用mode npugraph_ex。需要导出离线图不要直接使用本接口的默认配置而是复用dynamo_exportpython/torchair/npu_export.py并设置config.export.export_mode True等导出相关参数。相关 API 与延伸阅读图编译配置基类与各类子配置CompilerConfigpython/torchair/configs/compiler_config.py直接获取编译器实例get_compiler参见 get_compiler 文档基于本后端实现离线导图dynamo_exportpython/torchair/npu_export.py文档见 dynamo_export图模式整体说明与快速上手Ascend IR 快速开始、TorchAir 概览运行级验证用例tests/smoke/ge_test.py、tests/smoke/aclgraph_test.py、tests/smoke/cache_compile_test.py 中大量以torchair.get_npu_backend(compiler_config...)为入口的编译/推理/缓存测试可作为理解各模式行为的参考。赞分享人工智能模型编译Ascend【免费下载链接】torchairTorchAir 支持用户基于PyTorch框架和torch_npu插件在昇腾NPU上使用图模式进行推理。项目地址https://gitcode.com/Ascend/torchair点击查看免费下载相关推荐TorchAir get_compiler 指南获取 NPU 图编译器并接入自定义 torch.compile 后端TorchAir get_compiler 指南获取 NPU 图编译器并接入自定义 torch.compile 后端 本文围绕 TorchAir 提供的 to人工智能模型编译Ascend如何三步把网盘文件变成直下地址LinkSwift 网盘直链解析指南如何三步把网盘文件变成直下地址LinkSwift 网盘直链解析指南 网盘直链怎么获取LinkSwift 是一个用 JavaScript 写的浏览器油猴脚本前端OpenCore Legacy Patcher 完整指南老 Mac 安装新版 macOS 的五步主线OpenCore Legacy Patcher 完整指南老 Mac 安装新版 macOS 的五步主线 2012 年的 iMac 打开系统设置升级入口早已操作系统固件驱动开发上一篇掌握跨云存储同步rclone核心功能深度解析与实战指南下一篇大麦助手抢票工具使用指南从配置到实战的全流程解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

地方政府存量资源活化与市场化运作实践

地方政府存量资源活化与市场化运作实践

1. 地方财政创新实践背景最近在参与某地财政优化项目时,发现一个普遍现象:许多地方政府一方面面临公共服务资金短缺的压力,另一方面却存在大量闲置或低效使用的存量资产。这种矛盾状况促使我们探索"存量资源活化"的创新路径&#x…

2026/10/14 2:33:26 阅读更多 →
PCIe-3.2.1 Data Link Control and Management State Machine Rules

PCIe-3.2.1 Data Link Control and Management State Machine Rules

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 2:33:26 阅读更多 →
机器学习期末复习题及答案:五类题型覆盖核心考点,附代码解析

机器学习期末复习题及答案:五类题型覆盖核心考点,附代码解析

简介:这是一份面向高校机器学习课程期末备考的复习题及配套答案,整理成单选、多选、名词解释、简答、编程题五类题型。题目覆盖训练集与测试集划分、欠拟合改进方法、K近邻有监督学习、朴素贝叶斯判定公式、Sklearn中线性回归与KNN库函数导入、聚类分析、…

2026/10/14 2:33:26 阅读更多 →

最新新闻

Virglrenderer 虚拟化技术深入解析 · 专栏目录

Virglrenderer 虚拟化技术深入解析 · 专栏目录

一套面向工程师的 virglrenderer 源码级技术专栏。从概述与演进讲起,再深入核心抽象、各后端实现、部署集成与工程实践。所有内容以仓库源码为准。 这里讲一下我为什么关注 virglrenderer,因为国产 GPU 的虚拟化需求。 随着国产化替代的推进&#xff0c…

2026/10/14 3:23:34 阅读更多 →
Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

04 分组量化 GEMM 内核 一句话:一个内核同时服务 decode(M1)与 prefill(M32),用「每线程固定几列、沿 K 扫」的映射让权重按 warp 满事务读、激活广播;用 z-split 把小 M 的欠填充网格补满&…

2026/10/14 3:23:34 阅读更多 →
Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

真实运行截图:一、功能都写完了,为什么还要写测试? 我这个物联网设备接入平台(Spring Boot 3.5 EMQX MySQL),从设备注册、MQTT 接入、消息入库到密钥轮换,功能主线已经跑通了。但每次面试话题…

2026/10/14 3:23:34 阅读更多 →
宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

结论先行:配偶单方所负的债务,并不天然由你连带承担。民法典第1064条确立了共债共签原则——共同签字或事后追认、为家庭日常生活需要所负的债务才是共同债务;超出日常生活需要的,原则上由举债方自担,除非债权人能证明…

2026/10/14 3:23:34 阅读更多 →
铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

坐落于苏州的拙政江南,以拙政园为文脉基底,打造连片式低密新中式院墅群落。白墙围合私家庭院,黛瓦错落铺陈屋面,亭廊婉转、叠石理水,将苏州园林的雅致意境藏进每一方栖居空间。项目全线屋面采用铝制小青瓦,以现代建材工艺复刻传统江南小青瓦的形与韵,更从根源破解传统陶瓦的运维…

2026/10/14 3:23:34 阅读更多 →
中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

很长时间里,人们对于“找人起名”的想象都非常简单: 找一位有经验的老师, 报出生时间, 老师根据经验给出几个名字。 整个服务高度依赖: “这个大师厉不厉害”。 但今天再观察国内专业起名市场,会发现它已经…

2026/10/14 3:22:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →