人工智能模型编译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),仅供参考