英語からの翻訳

ONNX(Open Neural Network Exchange)は、機械学習モデルを表現するためのオープンソースのエコシステムおよび標準形式であり、フレームワークやハードウェア間の相互運用性を可能にします。2017年にFacebookとMicrosoftによって発表され、後にLinux Foundationによって採用されました。

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

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

历史

ONNX最初由Facebook的PyTorch团队以代号“Toffee”开发。2017年9月,该格式更名为ONNX,并由Facebook和Microsoft公开发布。此次发布将该格式定位为在快速发展的深度学习领域中促进互操作性的途径。

在发布后的数月内,包括IBM、华为、英特尔AMDArm高通在内的多家大型科技公司宣布支持该计划。2017年10月,Microsoft进一步承诺,将其认知工具包(Cognitive Toolkit)和Project Brainwave平台与ONNX集成。次年,该项目获得了更广泛的机构支持:2019年11月,ONNX被接纳为Linux基金会AI(Linux Foundation 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 · 履歴