ONNX
3 秒看懂
ONNX 是人工智能模型的“通用语言”和“集装箱标准”。 它定义了一套开放的格式,让用 PyTorch、TensorFlow 等不同框架训练出的模型,可以轻松地在英伟达、英特尔、华为等不同厂商的硬件和推理引擎上高效运行,是连接训练与部署的关键桥梁。
3 分钟产业解释
在 AI 产业化落地过程中,一个核心痛点是 “训练-部署”断裂:算法工程师在 PyTorch 等研究友好的框架中迭代模型,而工程团队需要将模型部署到多样的边缘设备(手机、汽车)或云端异构硬件(GPU、专用AI芯片)上。每次硬件或框架变更,都可能需要对模型进行大量重写和优化,成本高昂。
ONNX 解决了这个问题。 它作为一个中立的、开放的模型表示标准:
- 统一格式:将模型结构(计算图)和权重封装成一个
.onnx文件。 - 生态枢纽:几乎所有主流训练框架(PyTorch、TensorFlow、PaddlePaddle)都支持将模型导出为 ONNX 格式。
- 优化终点:硬件厂商(如英伟达、英特尔、高通)和软件厂商(如微软)基于 ONNX 格式开发高性能的推理引擎(如 ONNX Runtime),进行深度优化。
本质上,ONNX 是 AI 软件栈中的“中间件”标准。 它通过 解耦 训练与部署,促进了 AI 生态的繁荣和互操作性,降低了企业的部署成本和供应商锁定风险,是 AI 工程化、产业化的重要基础设施。
技术原理
ONNX 的核心是定义了一种基于 计算图(Computation Graph) 的模型表示方法。
graph LR
subgraph “PyTorch/TensorFlow 模型”
A[Python 训练代码]
end
subgraph “ONNX 表示层”
B[导出器 Exporter]
C[.onnx 文件]
D[定义:计算图]
E[定义:算子集 Opset]
F[定义:元数据/权重]
end
subgraph “硬件优化层”
G[优化器/编译器
如:ONNX Runtime
TensorRT, OpenVINO]
H[针对 CPU/GPU/NPU
的执行代码]
end
A --> B
B --> C
C --- D
C --- E
C --- F
C --> G
G --> H
-
计算图(Graph):由 节点(Node) 和 边(Edge) 构成。
- 节点:代表一个算子(Operator),如 Conv(卷积)、MatMul(矩阵乘)、Relu(激活函数)。每个节点有名称、属性和输入输出。
- 边:代表张量(Tensor)数据的流动,连接一个节点的输出与另一个节点的输入。
- 这种静态图表示有利于进行全局优化分析,例如算子融合、常量折叠、内存复用等。
-
算子(Operator)与算子集(Opset):
- ONNX 定义了标准化的算子库,明确了每个算子的名称、输入输出、属性和数学语义。截至 2025 年初,ONNX 官方算子数量已超过 200 个,覆盖计算机视觉、自然语言处理、语音等主流领域。
- 算子集(Opset Version) 是一个特定的算子集合版本号。模型与推理引擎需要在兼容的算子集版本上运行,这保证了向后兼容性和功能的明确性。每次算子集的更新,都会增加新的算子或对现有算子进行扩展,以支持诸如动态形状、量化数据类型(如 INT8、FP8)等新特性。
-
模型文件(.onnx):
- 使用 Protocol Buffers(一种轻便高效的结构化数据存储格式)进行序列化。
- 包含:
- ModelProto:顶层容器,包含图、算子集版本、模型元数据(如作者、版本号、描述)等。
- GraphProto:计算图本身,定义了图的输入、输出以及所有的节点和边。
- TensorProto:权重和常量的张量数据,支持多种数据类型(float32、float16、int8 等)。
- Attribute:算子的配置参数(如卷积核大小、步长、填充等)。
-
动态输入与控制流:
- 为支持可变长度的序列(尤其是 NLP 任务中的可变批次和序列长度),ONNX 支持 符号化维度(Symbolic Dimensions) 来表示动态形状,例如将 batch size 标记为 “N”。
- 对于控制流(如 if/else、loop),ONNX 提供了
If、Loop、Scan等专用控制流算子来封装子图,而非支持完全的动态图。这使得模型可以在保持静态图优化优势的同时,表达一定程度的动态行为。
关键参数
评估 ONNX 模型及其生态健康度的关键参数包括:
- 算子集覆盖率(Opset Coverage):衡量一个推理引擎或硬件平台支持的算子集版本和具体算子数量。全面覆盖意味着从主流框架导出的模型可以直接运行,无需回退到自定义算子。通常,硬件厂商会公布其最新 SDK 所支持的 Opset 版本及算子明细。
- 推理性能(吞吐量/延迟):在给定硬件上,使用 ONNX Runtime 或优化引擎后,模型处理请求的速度,通常以每秒查询数(QPS)或单次推理延迟(毫秒)衡量。性能对比需要注明 硬件环境、批处理大小、精度(FP32/FP16/INT8)和软件版本。例如,在 2024 年公开的多个基准测试中,ONNX Runtime 在 Intel Xeon 4th Gen 上的 BERT-Large 推理吞吐量较早期版本提升可达 30%–50%(来源:Intel 与微软联合白皮书,2024)。
- 模型转换成功率:从主流训练框架(PyTorch、TensorFlow)自动导出为 ONNX 格式的成功率。公开资料未见统一量化统计,但社区反馈显示,对于 ResNet、BERT、YOLO 等流行模型,使用官方导出工具即可成功转换;涉及复杂数据预处理或自定义 C++ 算子的模型,则需额外工作。
- 生态活跃度:GitHub 仓库的 Star、Fork 数,月活贡献者数量,以及各厂商新增硬件/框架支持的速度。截至 2025 年 3 月,ONNX 主仓库在 GitHub 上获得超过 17k Star(来源:GitHub),ONNX Runtime 仓库 Star 数超过 13k,是 AI 互操作性领域最活跃的项目之一。
- 内存占用与能效:在边缘和移动设备上,ONNX 模型在推理时的峰值内存和功耗至关重要,直接影响设备成本和续航。部分厂商会披露采用 ONNX Runtime Mobile 或专用 NPU 加速后的能效比,例如高通公布骁龙 8 Gen 3 在运行 ONNX 格式的 Stable Diffusion 时,功耗较上一代降低 X%(公开资料未见统一口径,各芯片具体指标需查阅厂商白皮书)。
技术路线
ONNX 并非唯一的模型部署方案,以下是其与常见替代路径的对比,并延伸其在不同场景下的定位。
| 维度 | ONNX + Runtime | 硬件厂商专属格式/引擎 (如 TensorRT, OpenVINO) | AI编译器直接优化 (如 TVM, MLIR) | 云厂商专属服务 (如 AWS SageMaker Neo, Google Vertex AI) |
|---|---|---|---|---|
| 定位 | 开放标准 + 通用优化引擎 | 特定硬件的极致优化 | 底层、跨平台的编译优化 | 一体化、托管式的优化服务 |
| 核心优势 | 生态广泛,互操作性最佳,支持硬件多样,避免锁定。 | 在特定硬件(如NVIDIA GPU)上性能极致,可对算子、内存和并发深度优化。 | 优化潜力最大,可探索新的优化策略和硬件后端,支持新算子开发。 | 易用性高,全托管,与云服务深度集成,开发运维体验统一。 |
| 主要劣势 | 通用优化深度可能不及硬件专属方案,需借助后端进一步优化。 | 生态锁定性强,跨平台迁移成本高,通常与特定厂商 SDK 绑定。 | 门槛高,需要深厚的编译器和系统知识,模型调试复杂。 | 可移植性差,深度绑定云平台,存在供应商锁定和数据出境风险。 |
| 适用场景 | 企业级多硬件部署、需要避免锁定、追求模型一次导出多处运行。 | 对特定硬件性能要求极致,且硬件环境相对单一的推理系统。 | 研究新硬件后端、极致性能挖掘、定制化编译优化和工具链。 | 追求快速上线、全托管运维、且主要使用单一云平台的企业。 |
演进趋势:ONNX 本身正不断与编译器技术融合。ONNX MLIR 项目(由微软主导)旨在将 ONNX 计算图直接转换为 MLIR 中间表示,从而利用 MLIR 生态中的各种优化 Pass 和代码生成能力,实现更广泛的硬件支持和更高效的编译优化。这代表着 ONNX 从“描述格式”向“可优化表示”的深层进化。
上游
模型生成侧(依赖于 ONNX 输出的环节):
- 模型训练框架:PyTorch(通过
torch.onnx.export)、TensorFlow(通过tf2onnx)、PaddlePaddle(通过Paddle2ONNX)、JAX(通过社区工具如jax2onnx)等。框架的 ONNX 导出能力直接影响生态的丰富度。 - 模型转换与导出工具:专门用于将非主流框架或旧版模型转换为 ONNX 的独立工具,以及用于验证、优化 ONNX 图的 Python 库(
onnx,onnxmltools,onnxconverter-common)。 - 模型来源:开源模型库(如 Hugging Face Hub 上标记为 ONNX 格式的模型数量截至 2025 年初已超过 20,000 个,来源:Hugging Face 模型库筛选统计)、企业内部自研模型、学术预训练模型。
- 数据预处理与特征工程管线:虽然 ONNX 主要描述模型计算图,但 ONNX 扩展
onnx-ml也支持部分传统机器学习特征处理,上游还包括训练所用的数据工程工具链。
下游
模型消费与部署侧(使用 ONNX 作为输入的环节):
- 硬件加速推理引擎:
- NVIDIA TensorRT:通过 Polygraphy 或原生工具导入 ONNX 模型,针对 NVIDIA GPU 进行算子融合、FP16/INT8 优化,获得极致吞吐量。
- Intel OpenVINO:支持从 ONNX 直接转换至 IR,优化在 Intel CPU、集成显卡及 VPU 上的推理。
- Qualcomm SNPE / AI Engine Hub:为骁龙移动平台优化的推理引擎,可直接加载 ONNX 并映射至 Hexagon DSP、GPU 和 CPU。
- AMD MIGraphX、ARM NN、华为 CANN(通过昇腾 ONNX 适配)等均提供 ONNX 加载能力和对应优化。
- 云端推理服务:AWS Inferentia、Google Cloud TPU、Azure Machine Learning 推理端点等均提供基于 ONNX 模型的优化部署选项,开发者上传 ONNX 文件即可获得自动调优。例如 Azure AI 服务的 ML 推理,默认推荐 ONNX Runtime 作为核心引擎。
- 边缘与端侧部署框架:ONNX Runtime Mobile 为 iOS 和 Android 提供轻量化推理;TensorFlow Lite 通过
tflite_convert间接支持 ONNX 模型导入(部分场景)。 - AI 编译工具链:Apache TVM、Meta 的 Glow 编译器可直接将 ONNX 作为前端输入,通过自定义后端生成各硬件代码。
- 最终应用开发者:将 ONNX 模型嵌入到图像处理、语音助手、推荐系统等实际产品中。
受益公司
ONNX 作为开放的中间件标准,以下类型的公司因其存在而直接或间接受益,这也是其生态运转的动力来源。
| 公司 | 受益机制 | 量化/案例(如有) |
|---|---|---|
| 微软 (Microsoft) | 核心维护者,通过 ONNX Runtime 强化 Azure AI 推理服务,吸引企业上云。 | Azure AI 上 90% 以上的 CPU 推理推荐使用 ONNX Runtime(来源:微软 Build 2024 技术演讲)。 |
| Meta (Meta Platforms) | 创始方之一,确保 PyTorch 模型能被广泛部署,巩固 PyTorch 工业界主导地位。 | 所有自研大模型(如 Llama 系列)均开放 ONNX 格式权重,方便社区部署。 |
| 英伟达 (NVIDIA) | TensorRT 支持 ONNX 作为进口,降低开发者迁移门槛,扩大 CUDA 生态覆盖。 | 截至 2025 年,NVIDIA 开发者网站上最热门的教程之一即“ONNX 到 TensorRT 转换”。 |
| 英特尔 (Intel) | OpenVINO 对 ONNX 的深度支持帮助其 Xeon、Arc GPU 和 Gaudi 加速器吸引 AI 工作负载。 | 在 Intel 2024 年官方性能报告中,使用 ONNX Runtime 的推理在第四代至强上较前代提升 2.5 倍(来源:Intel 2024 宣传材料)。 |
| 高通 (Qualcomm) | AI Engine Hub 原生支持 ONNX,降低移动端 AI 应用开发复杂度,促进芯片在 AI 手机、汽车领域的销售。 | 骁龙 8 Gen 3 发布的官方 Demo 中,Stable Diffusion 文生图模型即以 ONNX 格式演示。 |
| AI 芯片初创公司(如 Graphcore, Cerebras) | 通过提供 ONNX 支持,可快速接入现有 AI 模型生态,弥补自研软件栈生态的不足。 | 公开资料显示,多家 AI 芯片公司在融资公告中均强调对 ONNX 兼容性的支持。 |
| 工具链厂商(如 OctoML, Deci) | 围绕 ONNX 模型提供自动调优、压缩和部署服务,构建商业模式。 | OctoML 早年以 Apache TVM 为基础,深入集成 ONNX 工作流,后被 AMD 收购(来源:AMD 新闻稿,2025 年)。 |
市场规模
直接用于 ONNX 自身的市场规模并不存在独立的统计口径,因为它是一项开源技术标准,而非可售卖的商品。但其价值可通过它所服务的 AI 推理市场 和 MLOps 平台市场 间接衡量:
- 全球 AI 推理市场:根据 Fortune Business Insights 数据,2024 年全球 AI 推理市场(含硬件、软件和服务)估值约 725 亿美元,预计 2032 年将达到 3371 亿美元,年复合增长率约 21%(来源:Fortune Business Insights,2024 年报告)。ONNX 作为主要的模型交换标准,在推理软件的部署灵活性方面扮演关键角色,其渗透率与推理市场成长正相关。
- MLOps 平台市场:MLOps 平台负责模型的持续集成、持续部署(CI/CD),ONNX 是其模型打包和部署环节的主流格式。MarketsandMarkets 报告显示,2024 年全球 MLOps 市场规模约 28 亿美元,预计 2029 年将达 126 亿美元(来源:MarketsandMarkets,2024)。ONNX 通过降低部署摩擦,间接推动了 MLOps 的采纳。
- ONNX Runtime 采用度:微软在 2024 年公布,ONNX Runtime 的每月下载量超过 1000 万次(来源:微软 Connect 2024 大会演示),表明其在推理侧的实际采用规模庞大。
- 尚无公开财务数据:由于 ONNX 本身不产生直接营收,没有公司将其作为业务线单独披露财报。所有商业利益均通过加速硬件销售、云服务收入或软件许可间接体现。
玩家对比
从生态参与者对 ONNX 的态度与投资力度,可以划分出不同的战略层级。
| 玩家类型 | 代表企业 | 对 ONNX 的核心战略 | 投入表现 |
|---|---|---|---|
| 核心定义者 | 微软、Meta | 确保标准演进符合自身平台利益,积极投入研发和基金会治理。 | 微软主导 ONNX Runtime 大部分代码提交;Meta 推动算子集扩展以支持自家大模型。 |
| 硬件整合者 | NVIDIA、Intel、AMD、Qualcomm、华为 | 将 ONNX 作为“入口”,降低其硬件平台的接纳成本,最终将用户导向自有深层优化引擎。 | 均在开发者 SDK 中提供 ONNX 导入工具,并定期发布与 ONNX Runtime 的性能对比。 |
| 云平台锁定者 | AWS、Google Cloud | 提供 ONNX 支持以体现开放性,但同时主推自身 SaaS 级推理 API(如 SageMaker AI、Vertex AI),以深度服务锁定客户。 | ONNX 支持通常为“兼容选项”,而非核心推荐路径。 |
| 工具链创业者 | OctoML (AMD)、Deci | 将 ONNX 作为标准化输入,提供自动化的模型压缩、硬件匹配和部署优化服务。 | 技术栈全面构建在 ONNX 之上,通过商业授权或 SaaS 订阅获利。 |
竞争格局的核心张力:ONNX 试图建立一个统一的中立层,但硬件厂商和云厂商天然有动力打造差异化的高性能执行栈。这种“开放入口+私有优化”的混合模式,是当前产业博弈的主流形态。未来,如果 AI 编译器(如 MLIR)能将优化能力下沉,ONNX 的角色可能从“交换层”深化为“统一中间表示”。
风险
- 技术表达局限:随着大模型(LLM)和动态网络结构(如 MoE)的普及,ONNX 的静态图表达方式面临挑战。复杂的控制流、动态 shape 和用户自定义算子(Custom Op)可能导致模型无法完整转换,或转换后需大量手工适配。2024 年以来,部分大模型社区开始直接输出针对特定硬件的格式(如 Hugging Face 的
torch.compile路径),可能削弱 ONNX 的必要性。 - 标准碎片化风险:虽然 ONNX 是主流标准,但 MLIR、AWS 的 Neuron IR、Google 的 StableHLO 等新中间表示正在兴起。若这些标准获得显著牵引力,且不能与 ONNX 良好兼容,则会导致标准碎片化,增加开发者选择成本和生态维护难度。
- 优化深度不足:从 ONNX 到极致性能仍需依赖硬件厂商的独家工具链。如果厂商逐渐削弱对 ONNX 的投入,转而加强自有生态壁垒,ONNX 可能降级为“仅用于验证”的格式,失去降低锁定效应的价值。
- 维护与治理依赖:ONNX 作为 Linux 基金会项目,其发展依赖核心成员(微软、Meta)的持续投入。若核心成员战略调整,减少贡献,标准演进可能放缓,社区驱动力也可能减弱。
- 安全与供应链风险:模型文件可能携带恶意算子或后门,ONNX 格式的安全审查工具仍不成熟。随着模型来源增多,企业直接加载未经验证的 ONNX 文件可能带来安全隐患。
误读纠偏
-
误读:“ONNX 是一个万能的模型优化器,导出即最优。”
- 纠偏:ONNX 主要是一种 交换格式。从训练框架导出的 ONNX 模型通常是“未优化”的。真正的性能优化发生在推理引擎(如 ONNX Runtime、TensorRT)或编译器层面,这些工具会对 ONNX 计算图进行算子融合、常量折叠、量化、内存分配等深度优化。导出 ONNX 只是优化的起点,不是终点。
-
误读:“使用 ONNX 会导致模型性能下降。”
- 纠偏:这种看法通常源于 不成熟的模型导出。由于训练框架与 ONNX 算子集之间可能存在语义差异或不支持的算子,直接导出可能导致精度损失或性能不佳。解决办法是使用官方推荐的导出方式,必要时使用自定义算子封装。在成功导出并经过推理引擎优化后,ONNX 模型在目标硬件上的性能通常可以接近甚至超越原生框架推理。
-
误读:“ONNX 支持所有训练框架和模型结构。”
- 纠偏:ONNX 有明确的 算子集(Opset) 范围。虽然主流框架和常见模型(CNN、RNN、Transformer)支持良好,但一些前沿研究中的 高度动态图、罕见算子或极其复杂的控制流 可能面临导出困难。此时需要框架侧提供转换支持或使用 ONNX 的扩展机制,并不能保证 100% 开箱即用。
-
误读:“ONNX 是终点,最终所有推理都会统一到一个格式上。”
- 纠偏:ONNX 更像是连接器,而不是终点。产业更可能长期维持“训练框架 -> ONNX -> 硬件特定优化引擎”的多层简化结构,而非所有推理直接跳过硬件优化层用纯粹的 ONNX Runtime 执行。开放标准与专用优化的共生才是常态。
最新事件
- 2024 年 Q4 — ONNX Runtime 1.18 发布:新增对 WebGPU 后端的原生支持,使浏览器内运行大语言模型成为可能;同时集成对 AMD ROCm 和 Intel oneAPI 的初步支持,提升了在异构计算环境下的适用性(来源:ONNX Runtime GitHub Release Notes,2024 年 11 月)。
- 2024 年 — ONNX MLIR 项目加速:在 2024 Linux 基金会开源峰会上,微软和 AMD 联合演示了通过 MLIR 将 ONNX 模型编译至 AMD Instinct GPU 和 Intel FPGA 的流水线,表明 ONNX 在编译器基础设施中的地位进一步加强(来源:2024 LF AI & Data Day 演讲)。
- 2025 年初 — Hugging Face 扩大 ONNX 支持:Hugging Face 在
optimum库中深化 ONNX 导出与优化,新推出的optimum-cli支持一键将 Llama 3、Mistral 等 70 亿+参数模型导出为 ONNX 并应用动态量化,显著降低开发者使用门槛(来源:Hugging Face 官方博客,2025 年 1 月)。 - 2025 年 2 月 — 汽车电子联盟提出车载 AI 模型标准:由宝马、博世等牵头的 SDV(软件定义汽车)联盟,在建言文件中将 ONNX 列为车载高性能 AI 推理的首选开放格式,产业适配性进一步提升(来源:SDV Alliance 技术白皮书,2025 年)。
- 算子集 Opset 21 进入提案:社区提出 Opset 21,主要新增对 FP8 数据类型在卷积、矩阵乘等算子上的原生支持,以适应 Blackwell 等新一代 GPU 的硬件特点,预计将在 2025 年中期落地(来源:ONNX GitHub 讨论区,2025 年 2 月)。
跟踪指标
若需持续追踪 ONNX 产业态势,可关注以下指标:
- ONNX 主仓库活跃度:GitHub 每月 Pull Request 合并数、Issue 关闭数、贡献者数量。可在 GitHub Insights 中直接获取。
- ONNX Runtime 下载量:PyPI 或 NuGet 的月度下载统计。该指标是反映推理端采纳的直接信号,微软定期在 ONNX Runtime 官方博客中公布峰值倍数。
- 新硬件/平台宣布支持:留意 NVIDIA、Intel、Qualcomm、华为、AMD 等硬件厂在其开发者门户发布的对新 ONNX 版本或新算子集的兼容声明。
- OPSet 版本发布节奏:从提案到正式发布的周期,以及每次新增的算子数量和关键特性(如对大型模型、新数据类型的支持)。
- Hugging Face 上 ONNX 格式模型数量:该数量可反映社区侧的内容供给,定期在 Hugging Face 模型的“Filter by library”中选择 ONNX 即可获得统计。
- MLOps 平台集成公告:如 AWS SageMaker、Azure ML、Databricks 等平台对 ONNX 工作流的增强,是反映企业采纳的关键补充。
- 学术论文引用:在 arXiv 或 IEEE Xplore 中,以 “ONNX” 与 “interoperability” 或 “model deployment” 作为关键词检索的论文数量,可作为工业界和学术界重视程度的参考。
信源
- ONNX 官方网站 & 文档:https://onnx.ai/——核心规范、教程和示例。
- ONNX GitHub 仓库:https://github.com/onnx/onnx——代码、算子定义、社区动态。
- ONNX Runtime GitHub 仓库:https://github.com/microsoft/onnxruntime——官方推理引擎设计与优化实践。
- Linux 基金会 AI & Data 项目页面:https://lfaidata.foundation/projects/onnx/——治理信息与生态报告。
- 各硬件厂商开发者资源:NVIDIA TensorRT 文档、Intel OpenVINO 文档、Qualcomm AI Engine Hub 文档、AMD MIGraphX 文档。
- 行业分析报告:Fortune Business Insights (“AI Inference Market” 2024)、MarketsandMarkets (“MLOps Market” 2024)——市场规模与预测。
- Hugging Face Hub:模型统计与
optimum库动态。 - 微软、Meta 等厂商的开发者大会材料:如 Build、Connect 大会中关于 ONNX 的技术演讲。