AI模型互通的新开放生态系统ONNX介绍与实践


导读

Facebook与微软联合推出了一种开放式的神经网络切换格式——ONNX,它是一种表征深度学习模型的标准,可以实现模型在不同框架之间进行迁移。

ONNX 的全称为“Open Neural Network Exchange”,即“开放的神经网络切换”。顾名思义,该项目的目的是让不同的神经网络开发框架做到互通互用。目前,ONNX 已经得到 PyTorch、Caffe2、CNTK、MXNet 以及包括 Intel、ARM、Huawei、高通、AMD、IBM 等芯片商的支持。

按照该项目的设想,ONNX 的推出主要是为了解决当下AI生态系统的关键问题之一:开发框架的碎片化。现在有大量的不同框架用来构建和执行神经网络,还有其他的机器学习系统,但是它们之间不尽相同,而且无法协同运行。

AI的开发技术主要是深度学习神经网络,而神经网络训练和推理通常采用一种主流的深度学习框架。目前,主流的框架有如下这些:

不同的框架有不同的优势,但是框架之间的互通性并不好,甚至没有互通性。开发AI模型时,工程师和研究人员有很多的AI框架可以选择,但是并不能“一次开发,多处直接使用”。面对不同的服务平台,往往需要耗费大量的时间把模型从一个开发平台移植到另一个,让开发者苦不堪言。因此增强框架之间的互通性变的非常重要,例如:

  • 情况1:某个框架的某个模型不管是准确度还是性能都非常好,但是和软件整体的架构不相符;
  • 情况2:由于框架A表现很好,用它训练了一个神经网络,结果生产环境中使用的是框架B,这就意味着你可能需要将框架A训练的神经网络移植到框架B支持的格式上。

但是如果使用ONNX,就可以消除这种尴尬,例如ONNX可以导出用PyTorch构建的训练模型,并将它与Caffe2结合起来用于推理(详细教程)。这对于研究阶段使用PyTorch构建模型,正式环境使用Caffe2的结构非常合适,且省去了模型移植的时间成本和人力成本等。

目前支持ONNX的框架如下:

详细支持情况,可查看Importing and Exporting from Frameworks中各项详细说明。

ONNX 技术概括

根据官方介绍中的内容,ONNX 为可扩展的计算图模型、内部运算器(Operator)以及标准数据类型提供了定义。每个计算图以节点列表的形式组织起来,构成一个非循环的图。节点有一个或多个的输入与输出。每个节点都是对一个运算器的调用。图还会包含协助记录其目的、作者等元数据信息。运算器在图的外部实现,但那些内置的运算器可移植到不同的框架上。每个支持 ONNX 的框架将在匹配的数据类型上提供这些运算器的实现。

概括的说就是,ONNX是在跟踪分析AI框架所生成的神经网络在运行时是如何执行的,然后会利用分析的信息,创建一张可以传输的通用计算图,即符合ONNX标准的计算图。虽然各个框架中的计算表示法不同,但是生成的结果非常相似,因此这样的方式也是行得通的。

那么ON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值