开发 | Facebook、微软联合推出​ ONNX 标准,号称要解决开发框架碎片化

AI 科技评论消息,今日微软和 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

GitHub 地址:https://github.com/onnx/onnx

Facebook 官方博客:https://research.fb.com/facebook-and-microsoft-introduce-new-open-ecosystem-for-interchangeable-ai-frameworks/

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

Facebook AI发布Pytorch 1.0最新教程(附108页PDF下载)

【导读】近日,来自facebook ai 的Dmytro Dzhulgakov为我们带了了pytorch 1.0的最近演讲,旨在帮助大家快速理解pytorch的...

694
来自专栏用户3246163的专栏

[脑书笔记]《整体性学习》2-获取和理解信息的技术

这篇脑书继续讲整体性学习的第二部分整体性学习的技术,在《整体性学习》1里面在谈到信息进入大脑的顺序是,获取,理解,拓展,纠错和应用。这篇脑书笔记主要针对这5个步...

571
来自专栏PPV课数据科学社区

【译文】什么是数据可视化?②

Have you heard about data visualisations, wondered what a visualisation is, why ...

2724
来自专栏目标检测和深度学习

【资源】史上最全数据集汇总

无论是数据挖掘还是目前大热的深度学习,都离不开“大数据”。大公司们一般会有自己的数据,但对于创业公司或是高校老师、学生来说,“Where can I get l...

1143
来自专栏CDA数据分析师

【资源】想进行数据科学项目却没有数据集?25个数据集网站汇总

原作者 Kunal Jain 编译  Mika 本文为 CDA 数据分析师原创作品,转载需授权 前言 如果用一个句子总结学习数据科学的本质,那就是: 学习数据科...

3158
来自专栏ATYUN订阅号

微软翻译使用AI来打破智能手机上的语言翻译障碍

微软将其神经网络翻译技术融入缺乏AI硬件的智能手机,该应用程序现在可以为iOS、安卓和亚马逊Fire设备提供更高质量的神经网络翻译服务。

1132
来自专栏PPV课数据科学社区

不要担心没数据!史上最全数据集网站汇总

本文将为您提供一个网站 资源列表,从中你可以使用数据来完成你自己的数据项目,甚至创造你自己的产品。

763
来自专栏超智能体

学习观05:思维导图原理:人生与高手之差

市面上有太多的学习方法,几乎都是作者的经验总结,背后没有原理,更像是信仰一样去完成某些步骤,坚信神奇会发生。很多人都知道思维导图简单又强大,但却很少有人能说出来...

1113
来自专栏新智元

机器学习项目实践:30+ 必备数据库(预测模型、图像分类、文本分类)

【新智元导读】有了好的数据,机器学习项目也就成功了一半。希望这份资源清单有助于那些寻找机器学习项目实践的人。对于初学者来说,这绝对是一个金矿。确保你在业余时间选...

3516
来自专栏阮一峰的网络日志

图书搜索:Google 和 Open Content Alliance

大约在四年前,Google开始试验图书搜索,当时的名字是Google Print。我在网志里还提了一下这件事。 Google的图书搜索分为两个部分:一部分是与出...

34012

扫码关注云+社区