资讯专栏INFORMATION COLUMN

Facebook联合微软推出神经网络交换格式ONNX

CrazyCodes / 700人阅读

摘要:近日,与微软联合推出了开放式神经网络交换格式,它是一个表征深度学习模型的标准,可实现模型在不同框架之间的迁移。例如,在中,条件句通常是对输入张量的大小或维度上的计算。

近日,Facebook 与微软联合推出了开放式神经网络交换(ONNX)格式,它是一个表征深度学习模型的标准,可实现模型在不同框架之间的迁移。ONNX 是构建开源生态环境的第一步,供人工智能开发者轻松选择并组合较先进的工具。

开发学习模型时,工程师和研究者有很多框架可以选择。在一个项目开始时,开发者必须筛选特征、选定框架。很多时候,在研究和开发实验时所选择的特征与投入生产所需特征并不相同。很多组织缺乏弥补操作模式之间鸿沟的良好方式,不得不采取一些变通方式来应对,比如要求研究者在生产系统中工作或者手动翻译模型。

我们与微软一起开发了 ONNX,希望弥补这一鸿沟,帮助开发者选择适合其项目当前阶段的框架,并随着项目的进展在框架之间轻松转换。Caffe2、PyTorch 和 CNTK 9 月即将支持 ONNX,这允许模型在上述框架之一中进行训练,并转移到另一个框架进行推断。我们诚邀人工智能社区一起支持 ONNX。实现不同框架之间的互通以及简化从研究到生产的流程将会进一步加速人工智能社区的创新。

Facebook ONNX

ONNX 是 Facebook 深度学习方法中的重要组成部分。Facebook 的 AI 研究团队(FAIR 和 AML)致力于扩展 AI 研究的边界,开发更好的学习算法。每当我们有了突破,我们会尽快使使用我们应用程序的人们获取更好的技术。有了 ONNX,我们可以让全世界的 AI 研究和产品汇聚一堂,加快创新和部署。

研究者在实验新模型,特别是模型还在研究中的时候,写神经网络时需要较大程度的灵活性和可表达性,从动态神经网络到支持梯度渐变,同时还要保持基本的卷积神经网络高效性。研究者还想要快速迭代,因此他们需要有优秀的交互开发和调试工具。PyTorch 的构建旨在扩展研究框架的极限,将研究者从单一平台的束缚中解放出来,能够更加轻松地表达自己的想法。

与此相反,产品管道在保证模型大体稳定的情况下,每天通过大量新数据运行训练和推断。通过一些精细的技巧比如分层,手动调整代码以节省计算资源。Caffe2 在构建时就考虑了产品、移动端与表现。Caffe2 的内部构件非常灵活并经过了高度优化,因此我们可以在动力不足的硬件中驾驭更大更好用的模型,施展所有的技巧。

使用 ONNX,我们可以充分利用两个世界。现在,我们可以从 PyTorch 中输出很多常用神经网络模型,并将其部署在 Caffe2 中。这是我们快速将研究成果投入生产的第一步。接下来几个月,我们将改进 ONNX、Caffe2 和 PyTorch,使它们能够更深度地进行互通。

工作原理

为了实现 ONNX 支持,我们必须改写 PyTorch 和 Caffe2,统一框架之间的算子。在 Caffe2 中,该过程与添加翻译器类似,因为 Caffe2 已经具备内置静态图表示。在 PyTorch 中,神经网络被指定为程序,而不是清晰的图,这带来了巨大挑战。为了从程序中抽取图表示,我们开发了一个跟踪器,用来」跟踪」(记录)程序运行过程。跟踪程序可以消除复杂性,使转换图表示更加容易。

以下代码展示了其工作原理:

x = y * 2if someComplicatedFunction():

 z = x + yelse:

 z = x * y

为了直接输出代码,ONNX 必须支持条件句(conditional)和 someComplicatedFunction();实际上,它就变成了一个通用的编程语言。但是,在很多深度学习模型中,someComplicatedFunction() 的结果在推断中总是相同。例如,在 PyTorch 中,条件句通常是对输入张量的大小或维度上的计算。在这些情况下,跟踪代码要简单得多,也更容易在 ONNX 中得到表示:

#someComplicatedFunction() == True

x = y * 2

z = x + y

目前,我们的追踪器用于很多常见神经网络,但是不包括 PyTorch 中的一些较为高级的程序,如带有动态流控制的程序。我们将不断改进 ONNX 和跟踪器来支持这些程序,这样开发者就可以同时利用 PyTorch 的灵活性和 Caffe2 的高性能鲁棒部署能力。

后续

今天,我们发布了 ONNX 支持的版 Caffe2 和 PyTorch,希望大家对新特征感兴趣!由于其还处在初级阶段,我们希望你在使用时能提供反馈和建议。我们将持续改进 ONNX、PyTorch 和 Caffe2,确保开发者获取 AI 研究的工具。

开始使用 ONNX

ONNX(https://github.com/onnx)

Caffe2(https://caffe2.ai/)

PyTorch(http://pytorch.org/)

高分辨率教程(http://pytorch.org/tutorials/advanced/super_resolution_with_caffe2.html)

微软博客(https://www.microsoft.com/en-us/cognitive-toolkit/blog/2017/09/microsoft-facebook-create-open-ecosystem-ai-model-interoperability/)

原文链接:https://research.fb.com/facebook-and-microsoft-introduce-new-open-ecosystem-for-interchangeable-ai-frameworks/

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4610.html

相关文章

  • ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一

    摘要:但年月,宣布将在年终止的开发和维护。性能并非最优,为何如此受欢迎粉丝团在过去的几年里,出现了不同的开源深度学习框架,就属于其中典型,由谷歌开发和支持,自然引发了很大的关注。 Keras作者François Chollet刚刚在Twitter贴出一张图片,是近三个月来arXiv上提到的深度学习开源框架排行:TensorFlow排名第一,这个或许并不出意外,Keras排名第二,随后是Caffe、...

    trilever 评论0 收藏0
  • 继华为、英特尔等厂商之后,亚马逊 MXNet 加入 ONNX 开放生态

    摘要:详细信息,可以参见科技评论之前发文微软联合推出标准,号称要解决开发框架碎片化共筑开放生态标准得到华为英特尔等更多厂商支持日前,基础平台部副总在发文宣布,亚马逊将加入开放生态,将对提供支持。 早前,FaceBook 携手微软发布了一个全新的开源项目——ONNX,欲借此打造一个开放的深度学习开发工具生态系统。之后,华为、IBM、英特尔、高通等纷纷宣布宣布支持 ONNX。详细信息,可以参见AI科技...

    Jason_Geng 评论0 收藏0
  • 从NNVM和ONNX看AI芯片的基础运算算子

    摘要:在此,我们将借用和的算子,分析硬件加速的需求。池化层池化层主要用于尺度变换,提取高维特征。此种类型主要用于深度卷积神经网络中卷积部分与部分的连接。和可以认为是的特例。 NNVM是由陈天奇团队提出的一套可复用的计算流图中间表达层,它提供了一套精简的API函数,用以构建、表达和传输计算流图,从而便于高层级优化。另外NNVM也可以作为多个深度学习框架的共享编译器,可以优化、编译和部署在多种不同的硬...

    lixiang 评论0 收藏0
  • 陈天奇团队发布NNVM编译器,性能优于MXNet,李沐撰文介绍

    摘要:亚马逊和华盛顿大学今天合作发布了开源的端到端深度学习编译器。项目作者之一陈天奇在微博上这样介绍这个编译器我们今天发布了基于工具链的深度学习编译器。陈天奇团队对的性能进行了基准测试,并与进行了比较。 亚马逊和华盛顿大学今天合作发布了开源的端到端深度学习编译器NNVM compiler。先提醒一句,NNVM compiler ≠ NNVM。NNVM是华盛顿大学博士陈天奇等人2016年发布的模块化...

    izhuhaodev 评论0 收藏0
  • PyTorch一周年战绩总结:是否比TensorFlow来势凶猛?

    摘要:截止到今天,已公开发行一周年。一年以来,社区中的用户不断做出贡献和优化,在此深表感谢。所以与衡量它的指标包括在机器学习研究论文中的使用。来自香港科技大学的在上推出了面向普通观众的在线课程。 Yann LeCun Twitter截止到今天,PyTorch 已公开发行一周年。一年以来,我们致力于打造一个灵活的深度学习研究平台。一年以来,PyTorch 社区中的用户不断做出贡献和优化,在此深表感谢...

    ymyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<