今日微软和 Facebook 发布了一个全新的开源项目——ONNX,欲借此打造一个开放的深度学习开发工具生态系统。
ONNX 的全称为“Open Neural Network Exchange”,即“开放的神经网络切换”。顾名思义,该项目的目的是让不同的神经网络开发框架做到互通互用。目前,Microsoft Cognitive Toolkit,PyTorch 和 Caffe2 已宣布支持 ONNX。
ONNX 所针对的,可以说是深度学习开发生态中最关键的问题之一:
开发框架的碎片化。
在任意一个框架上训练的神经网络模型,无法直接在另一个框架上用。开发者需要耗费大量时间精力把模型从一个开发平台移植到另一个。
借助 ONNX,开发者能把在 PyTorch 上训练的模型直接拿到 Caffe2 上进行推理。对于把模型从研究阶段推向产品阶段,这是一个经常遇到的场景。微软宣布正积极开发 Microsoft Cognitive Toolkit 的下个版本,将会提供对 ONNX 的支持。
ONNX 的工作原理是:
实时跟踪某个神经网络是如何在这些框架上生成的,接着,使用这些信息创建一个通用的计算图,即符合ONNX 标准的计算图。这样做行得通,是因为在计算方面,这些框架产生的最终结果都非常接近,虽然更高级的表达不同。
ONNX 标准意味着什么?
PyTorch、Microsoft Cognitive Toolkit 等框架提供的界面,让开发者创建、运行用来表示神经网络的计算图更加方便。虽然功能相似,但每一个框架都用一套不同的格式表示这些计算图。获知,ONNX 的表示方式有两个核心优势:
框架之间的互用互通
开发者能更方便地在不同框架间切换,为不同任务选择最优工具。基本每个框架都会针对某个特定属性进行优化,比如训练速度、对网络架构的支持、能在移动设备上推理等等。在大多数情况下,研发阶段最需要的属性和产品阶段是不一样的。这导致效率的降低,比如选择不切换到最合适的框架,又或者把模型转移到另一个框架导致额外的工作,造成进度延迟。使用支持 ONNX 表示方式的框架,则大幅简化了切换过程,让开发者的工具选择更灵活。
优化共享
硬件设备商们推出的对神经网络性能的优化,将能够一次性影响到多个开发框架——如果用的是 ONNX 表示方式。如果优化很频繁,把它们单独整合到各个框架是个非常耗费时间的事。通过 ONNX 表示方式,更多开发者就能获取这些优化。
技术概括
ONNX 为可扩展的计算图模型、内部运算器(Operator)以及标准数据类型提供了定义。在初始阶段,Facebook 和微软会专注于推理(Inference)所需要的各项能力(评估)。
每个计算数据流图以节点列表的形式组织起来,构成一个非循环的图。节点有一个或多个的输入与输出。每个节点都是对一个运算器的调用。图还会包含协助记录其目的、作者等信息的元数据。
运算器在图的外部实现,但那些内置的运算器可移植到不同的框架上。每个支持 ONNX 的框架将在匹配的数据类型上提供这些运算器的实现。
TensorFlow 的缺席
ONNX 标准能否在深度学习开发者们接受,在很大程度上将取决于它在各个框架上的普及程度。
在看来,目前 ONNX 最大的问题是,最受欢迎的开发框架 TensorFlow 没有兼容 ONNX 标准。亚马逊的御用框架 MXNet 也没有。Facebook 和微软都表示,将来会持续有更多框架加入到 ONNX 生态中,但没有透露 TensorFlow 和 MXNet 是否在计划中。谷歌和亚马逊也还没有对此事表达态度,他们愿不愿意合作,尚属未知。
如何使用
初始版 ONNX 的代码、文件,已在 GitHub 上开源。Facebook 和微软表示将会持续改进 ONNX, 将会在不久的将来推出范例、工具、reference implementations 以及模型。
更多关于 ONNX 的信息可访问 Facebook 官方博客。
via 微软,venturebeat
相关资讯
最新热门应用
非小号交易平台官网安卓版
其它软件292.97MB
下载币交易所地址
其它软件274.98M
下载iotx交易所app
其它软件14.54 MB
下载zt交易所安卓最新版
其它软件273.2 MB
下载币拓交易所bittok
其它软件288.1 MB
下载u币交易所平台app
其它软件292.97MB
下载热币全球交易所app官网版
其它软件287.27 MB
下载多比交易平台app
其它软件28.28MB
下载币赢交易所app官网安卓版
其它软件14.78MB
下载toncoin币交易所安卓版
其它软件48MB
下载