ONNX(Open Neural Network Exchange)是一种开放的机器学习模型格式,旨在促进不同深度学习框架之间的互操作性。它允许不同的人工智能框架(如PyTorch、MXNet、TensorFlow等)使用相同的格式存储和共享模型数据。ONNX通过定义通用的运算符和文件格式,使得模型可以在不同框架、工具、运行时和编译器之间进行交换和部署。

ONNX采用Protobuf协议来定义模型结构,并通过Onnx.pro to文件规定数据协议规则。ONNX模型可以被各种语言读取或写入,支持跨平台、易部署和开放标准等优点。ONNX模型的解析流程包括读取.onnx文件,获取模型结构,访问图结构,进而获取网络中的各个节点、输入和输出,以及每一层的参数信息。
ONNX的规范及代码主要由微软、亚马逊、Facebook和IBM等公司共同开发,以开放源代码的方式托管在GitHub上。目前官方支持加载ONNX模型并进行推理的深度学习框架包括Caffe2、PyTorch、MXNet、ML.NET 、TensorRT和Microsoft CNTK,而TensorFlow也非官方支持ONNX。
ONNX Runtime是微软开发的高性能、跨平台、轻量级且可扩展的运行时,用于执行ONNX模型,支持多种硬件加速器和操作系统。ONNX社区是一个开放治理项目,由多个利益相关者组成,包括微软、IBM、NVIDIA等公司。
ONNX文件格式是一种容器,用于封装机器学习模型的整个结构,包括模型的图表示、计算节点、输入输出、计算节点列表和图名等组件。ONNX模型可以用于模型可视化、加载、保存、验证、形状推断、版本转换等操作。
ONNX旨在促进人工智能模型的互操作性,支持不同框架和硬件之间的互操作性,是深度学习模型共享和部署的重要工具