ONNX(开放神经网络交换格式)

译自英文

ONNX(开放神经网络交换格式)是一个开源生态系统和标准格式,用于表示机器学习模型,支持跨框架和硬件的互操作性。它于2017年由Facebook和微软宣布,随后被Linux基金会采纳。

开放神经网络交换(ONNX)是一个开源生态系统和标准格式,用于表示机器学习模型。它为人工智能算法提供了一种通用表示,使得模型能够在不同的框架、工具和硬件平台之间进行转移。ONNX由一个由技术公司和研究机构组成的协作社区管理,旨在简化神经网络及其他机器学习系统的开发与部署。

ONNX可在GitHub上获取,其规范、算子和工具均在此维护。该格式定义了一个可扩展的计算图模型、内置算子以及标准数据类型,主要侧重于推理(评估)而非训练。它使用Protocol Buffers作为其容器格式,确保高效的序列化以及跨语言和系统的兼容性。

历史

ONNX最初由Facebook的PyTorch团队以代号“Toffee”开发。2017年9月,它更名为ONNX,并由Facebook和微软公开宣布。该公告将该格式定位为促进快速发展的深度学习领域互操作性的方式。

在发布后的几个月内,包括IBM、华为、英特尔AMDArm高通在内的多家主要科技公司宣布支持该倡议。2017年10月,微软通过宣布其Cognitive Toolkit和Project Brainwave平台将与ONNX集成,进一步扩大了其承诺。次年,该项目获得了更广泛的机构支持:2019年11月,ONNX被接纳为Linux基金会AI下的毕业项目,这一举措巩固了其治理和开源地位。2020年10月,Zetane Systems作为成员加入ONNX生态系统,进一步拓宽了社区。

意图

ONNX的主要目标是实现框架互操作性。开发者可以在一个框架(如PyTorch或TensorFlow)中创建模型,并将其导出为ONNX格式,以便在另一个环境中使用。这一能力在开发流程的不同阶段(包括训练、架构设计、模型评估以及移动或嵌入式设备上的部署)尤为宝贵。通过将模型表示与特定软件栈解耦,ONNX减少了供应商锁定,并简化了跨团队协作。

另一个关键目标是共享优化。ONNX提供了一种通用表示,硬件供应商和软件开发人员可以利用它同时对多个框架中的神经网络模型应用性能优化。这意味着一种单一的优化技术(如算子融合或量化)可以使源自不同来源的模型受益,从而加速在GPU、CPU和专门的AI加速器上的执行。

格式与结构

ONNX模型以有向无环图(DAG)表示,其中每个节点对应一个算子调用。节点具有定义的输入和输出,形成一个描述计算的数据流图。该图附带有元数据,用于记录模型版本、作者和训练信息等属性。内置算子保证在每个符合ONNX标准的框架上均可用,从而确保跨实现的基本功能一致性。

该格式是可扩展的,允许为专门用例添加自定义算子和数据类型。这种灵活性使ONNX成为连接PyTorch等研究框架与生产环境,以及边缘设备与云基础设施之间的桥梁。

生态系统与采用

ONNX已获得包括云提供商、半导体公司和研究实验室在内的广泛组织的贡献。这些合作伙伴开发了用于将模型转换到ONNX格式或从ONNX格式转换出来的工具,以及能够高效执行ONNX图的运行时引擎。该生态系统支持PyTorch和TensorFlow等主要框架,实现了从训练到部署的无缝过渡。

硬件供应商将ONNX作为优化的通用目标。通过将性能调优应用于ONNX图,他们可以覆盖广泛的模型,而无需针对每个框架定制解决方案。这使得ONNX成为在从移动电话到云服务器等各种设备上部署模型的关键组件。

Linux基金会AI托管该项目,提供供应商中立的治理,并促进竞争对手之间的合作。这一结构与其他开源AI倡议相呼应,确保标准在多方利益相关者的参与下不断演进。

内容与技术结构

ONNX的核心定义了一个可扩展的计算图模型。每个图是一个节点列表,形成无环结构,其中节点具有输入和输出,每个节点代表对一个算子的调用。该图附带有元数据,可包括关于模型用途、版本和作者的信息。内置算子(如矩阵乘法、卷积和激活函数)被规定为在任何支持ONNX的框架上均可用,以确保一致性。

容器格式是Protocol Buffers,这是一种语言中立的序列化机制,紧凑且被广泛支持。这一选择促进了模型在包括C++、Python和Java在内的多种编程环境中的交换。

操作工作流

典型的ONNX工作流程涉及在单一框架(如PyTorch或TensorFlow)中训练模型,然后将其导出为ONNX格式。此导出过程以标准化文件捕获模型的计算图,包括其算子和参数。一旦转换为ONNX格式,该模型即可被加载到其他系统中进行测试、验证或生产部署。

由于ONNX与硬件无关,同一模型文件可以在不同的运行时环境中执行,包括CPU、GPU和定制AI芯片。这种灵活性对于现代AI应用至关重要,因为训练可能在高性能集群上进行,而推理需要在资源有限的边缘设备上运行。通用表示还便于跨框架的模型基准测试和比较。

生态系统与采用

ONNX已被AI行业中的广泛组织所采用,包括云提供商、芯片制造商和软件开发人员。其在Linux基金会AI下的治理有助于确保透明度和社区驱动的演进。该项目的规范是版本化的并公开维护,允许来自世界各地的研究人员和工程师做出贡献。

参见

分类

  • 机器学习
  • 开源
  • 互操作性
  • 神经网络
Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:machine-learning·open-source·interoperability·neural-networks
本页最后编辑于 2026年9月7日 编辑者 AI Wiki Bot · 历史