- 发布日期
ONNX 是什么
ONNX(Open Neural Network Exchange,开放神经网络交换格式)是一种共享的机器学习模型表示方式,目的是让模型能够在不同框架之间搬移。开发者不必每次把一个模型从某个框架的格式转换成另一个互不兼容的格式,而是统一写入一种公共格式,再在别处读取 [1]。这套格式定义了一个可扩展的计算图(computation graph)模型、一组内置算子(operator)和标准数据类型,而图被组织成由算子节点构成的无环列表 [1][4]。
计算图是把一个模型写成一组相互连接的运算:每个节点是一次运算,例如一次矩阵乘法或一个激活函数,连线则表示哪个节点的输出成为哪个节点的输入。「无环」的意思是数据只朝一个方向流动,不存在绕回自身的路径,因此这样的图可以按顺序直接执行。由于图是用抽象的方式描述的——说的是算子和数据类型,而不是某个库内部的数据结构——不同的程序就能读取同一个文件。定义是可扩展的,所以当模型需要新的算子和类型时可以不断补充 [1][4]。
最早的版本聚焦于推理(inference)所需的能力 [1]。推理指把训练好的模型跑起来产生输出——一个预测、一个类别标签、一个分数——它不同于训练,训练是调整模型参数的过程。这一取舍决定了最初的覆盖范围:模型要被执行需要什么,而不是搭建模型的全部环节。
由来
2017 年 9 月 7 日,微软和 Facebook 公布了这一格式,并把 Cognitive Toolkit、Caffe2 和 PyTorch 列为最初的支持者 [1]。同一天,onnx/onnx 仓库在 GitHub 上创建,项目以 Apache-2.0 许可发布 [5]。规格说明和实现都以宽松的开源许可公开,意味着其他机构可以直接采用,也可以围绕它构建工具。
支持范围
支持并不限于最初公布的两家公司。2017 年 10 月,AMD、Arm、华为、IBM、英特尔和高通宣布支持 ONNX,愿意参与这一格式的硬件与软件厂商名单随之扩大 [2]。2017 年 12 月 8 日,Facebook、AWS 和微软宣布 ONNX v1 达到可投入生产的状态,Caffe2、Cognitive Toolkit、Apache MXNet、PyTorch 和 NVIDIA TensorRT 均提供支持 [2][3]。AWS 关于 ONNX 1.0 的文章举了一个具体例子来说明这个格式是做什么用的:用 PyTorch 构建视觉模型,再用 Cognitive Toolkit 或 MXNet 做推理 [3]。在一个框架里产出的模型,在另一个框架里被执行,文件就是两者之间的接触点。
它解决的是什么问题
ONNX 把自己描述为一个社区项目,目标是提高互操作性,让开发者不会被锁定在某一个框架或生态里 [4]。这个定位也解释了项目的形态:它本身不是训练库,也不是一个独立的框架,而是位于框架之间的一层——一种文件格式,外加一套关于「模型由什么构成」的定义,让两侧的工具对交接的东西有共同的理解。这样一层格式的价值随读写它的工具数量增长,所以其他厂商和运行时库宣布支持,与最初的规格本身同样重要。
早期范围也带来一个需要记住的限制:最初的版本处理的是推理所需的能力,而不是训练过程中用到的全部运算 [1]。一个以「描述可执行的模型」为目标的格式,并不自动覆盖训练循环所做的一切。
在发展中的位置
ONNX 在机器学习工具链里占据的位置并不显眼,却承重:它是一层交换格式,让用一套工具训练出来的模型可以用另一套工具来评估和运行 [1][3]。它的重要性不在于做到了某个框架做不到的事,而在于去掉了一道反复出现且容易出错的转换工序,为厂商、运行时引擎和框架作者提供了一个共同的目标 [1][2][4]。
注释与来源
- Microsoft and Facebook create open ecosystem for AI model interoperabilityhttps://azure.microsoft.com/en-us/blog/microsoft-and-facebook-create-open-ecosystem-for-ai-model-interoperability/
- ONNX V1 releasedhttps://engineering.fb.com/2017/12/08/ml-applications/onnx-v1-released/
- Announcing the Availability of ONNX 1.0https://aws.amazon.com/blogs/ai/announcing-the-availability-of-onnx-1-0/
- ONNX Abouthttps://onnx.ai/about.html
- onnx/onnx repository metadatahttps://api.github.com/repos/onnx/onnx
引用本页: ONNX(开放神经网络交换格式). TellWorld, https://www.tellworld.net/zh/products/onnx. 更新于 2026-11-08