onnx之优化器

之前的OpenPPL有个章节讲到过优化器,onnx里面也有个优化器,相关介绍如下

一、优化器的本质

ONNX Core Optimizer 是在图级别工作的,与EP(Execution Provider)无关。

复制代码
ONNX模型(计算图)→ Optimizer(图变换)→ 优化后的计算图 → EP执行

关键点:优化器在EP之前运行,它不关心后续是哪个EP执行。


二、优化器对两类EP的影响

1. 解释型EP(逐个算子调用)

如 CPUExecutionProvider、CUDAExecutionProvider(基础模式)

复制代码
优化后的图 → EP逐个调用算子内核

优化器有效的原因:

  • 虽然EP是逐个算子执行,但图结构已经改变

  • 例如:Conv + BN 被融合成一个节点 → EP只需调用1次而不是2次

  • 算子数量减少,内核调用次数减少

实际效果:

优化 对解释型EP的效果
常量折叠 ✅ 减少计算量
算子融合 ✅ 减少内核调用
死代码消除 ✅ 减少执行节点

2. 编译型EP(如TensorRT、OpenVINO)

如 TensorrtExecutionProvider、OpenVINOExecutionProvider

复制代码
优化后的图 → 编译型EP接收 → 进一步做硬件级优化 → 生成特定引擎

优化器仍然有效:

  • 编译型EP虽然会做自己的优化,但接收的图越干净,编译效果越好

  • 例如:ONNX Optimizer 先融合 Conv+BN,TensorRT 就不需要再处理这个模式

  • 减少编译型EP需要处理的工作量


三、优化器的生效时机

复制代码
时间线:
─────────────────────────────────────────────────────────→

1. 创建Session
   ↓
2. 加载模型
   ↓
3. 【优化器运行】 ← 时刻
   ↓
4. 图变换完成
   ↓
5. EP获取优化后的图
   ↓
6. EP执行(解释型)或编译(编译型)

代码层面

复制代码
sess_options = ort.SessionOptions()
sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL

session = ort.InferenceSession("model.onnx", sess_options)
# ↑ 在这一步,优化器已经运行完毕

四、为什么编译型EP也需要图优化

以 TensorRT 为例:

优化层级 谁做 作用
图级优化 ONNX Optimizer 减少节点数,简化结构
层融合 TensorRT 垂直融合(如Conv+BN+Relu)
内核选择 TensorRT 选择最优CUDA内核
内存规划 TensorRT 显存复用

如果图级优化没做:

  • TensorRT需要处理更复杂的图结构

  • 可能错过某些融合机会

  • 编译时间更长


五、总结

问题 答案
优化器对解释型EP有用吗? 有用,减少节点数,减少内核调用
优化器对编译型EP有用吗? 有用,简化图结构,帮助编译型EP做更好优化
优化器什么时候运行? EP之前,Session创建时
编译型EP会重复优化吗? 会,但接收优化后的图效果更好

解释型EP是逐个算子调用,优化器通过减少算子数量 来加速;编译型EP有自己的优化层,但上游优化让它的工作更高效。两者是互补而非替代关系。

相关推荐
国科安芯5 小时前
四重证据,一条逻辑链:商业航天级微控制器MCU抗辐射验证方法学综述——以国科安芯AS32S601为例
人工智能·单片机·嵌入式硬件·mcu·安全·抗辐射
dk_tjy5 小时前
AI驱动的自动化攻击背景下:企业端点安全体系的技术架构与建设路径
网络·人工智能·安全·自动化·终端安全管理·数据防泄漏
布吉岛的石头6 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
2601_965454236 小时前
用AI把开源项目功能清单做成MG动画介绍视频
人工智能·开源·音视频
风雅GW6 小时前
局域网访问为何少一半配置页:DSH 的安全边界设计复盘
人工智能
衡石科技6 小时前
同一句业务问题,怎样持续问对数?衡石 ChatBI 的语义准备与回归验证
人工智能·数据挖掘·回归·chatbi
新新学长搞科研6 小时前
【会议征稿 | 杭州站】第七届机器学习与计算机应用国际学术会议 (ICMLCA 2026)
人工智能·机器学习·计算机
找方案6 小时前
从用户画像到智能定价:81页方案拆解“大数据决策与支撑平台”怎么落地
大数据·人工智能·数据分析·智慧城市·用户画像
紧跟先前的步伐7 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
一只爱撸猫的程序猿7 小时前
我让 Agent 干活,自己只做审核:一个真实项目的六次"人审拦截"
人工智能