ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如Pytorch, MXNet)可以采用相同格式存储模型数据并交互。 ONNX的规范及代码主要由微软,亚马逊 ,Facebook 和 IBM 等公司共同开发,以开放源代码的方式托管在Github上。目前官方支持加载ONNX模型并进行推理的深度学习框架有: Caffe2, PyTorch, MXNet,ML.NET,TensorRT 和 Microsoft CNTK,并且 TensorFlow 也非官方的支持ONNX。

ONNX介绍_深度学习

在深度学习框架这个竞争领域,目前来看tensorflow、caffe、mxnet、pytorch、cognitive tookit等等似乎背后都站着一个巨头,大家都在竞争这一个领域。人们见过了Google如何将Android做大,做垄断,所以在新的领域下,特别是tensorflow如此强势的深度学习框架竞争态势中。如何避免垄断,打破Google的统治,是Facebook、Microsoft、AWS这几家心理的小算盘,于是ONNX诞生了。

开放式神经网络交换(ONNX)是迈向开放式生态系统的第一步,使AI开发人员能够随着项目发展而选择正确的工具。 ONNX为AI模型提供了一个开源格式。 它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型的定义。 最初专注于推理(评估)所需的功能。

过去20多年来,微软一直在进行人工智能研究,并将机器学习和深度神经网络整合到旗下众多产品和服务中。由于团队使用许多不同的培训框架并针对不同的部署选项,因此确实需要统一这些分散的解决方案,以便快速,简单地操作模型。

微软开源的ONNX Runtime(https://github.com/microsoft/onnxruntime)为这个问题提供了解决方案。该工具为数据科学家在选择的框架内训练和调整模型提供了更高的灵活性,并在云端和产品设计中以高性能打造这些模型。

ONNX介绍_tensorflow_02

ONNX引擎是Windows ML组件的关键部分。 微软正在将这种机器学习界面纳入到Windows 10系统中,让开发人员在自己的Windows应用程序上使用训练过的机器学习模型。 Windows ML推理引擎可以在Windows设备上对这些模型进行本地评估,开发人员无需将模型放到云中运行。