微软Facebook联手发布AI生态系统,推出开放神经网络交换格式

#someComplicatedFunction() == True

x = y * 2 z = x + y

目前,我们的tracer能与许多常见的神经网络配合使用,但PyTorch中一些更先进的程序,比如有动态流控制(dynamic flow control)的程序还不行。随着时间的推移,我们将完善ONNX和tracer来支持这些程序,让开发人员可以充分利用PyTorch的灵活性与Caffe2的高性能强大部署功能。

微软:ONNX 表征具有框架互操作性和共享优化两大优点

在 Facebook 发布博客的同时,微软也发布了题为《微软和 Facebook 为 AI 模型的互操作性构建开放生态系统》的博客。在博客中,微软表示:

微软给大家做出的承诺是“”人人有机会更方便,更有价值。我们提供各种平台和工具来促进这一点,包括我们的认知工具包,一个构建深层神经网络的开源框架。我们还与其他分享我们观点的组织合作,帮助 AI 社区。

今天,我们高兴地宣布,微软和Facebook 一起推出Open Neural Network Exchange (ONNX,开放神经网络交换) 格式。 ONNX为AI 框架生态系统中的互操作性和创新提供了共享的模型表征。CognitiveToolkit,Caffe2和PyTorch都将支持ONNX。微软和Facebook 共同开发了ONNX 这一开源项目,并希望社区能够帮助其不断进化。

什么是ONNX 表征?

Cognitive Toolkit 和其他框架提供了使开发人员更容易构建和运行表征神经网络的计算图的界面。虽然提供的功能类似,但是今天的每个框架都有自己表征这些图的格式。 ONNX表征有以下主要优点:

框架互操作性

开发人员可以更轻松地在框架间转换,并为手头的任务选择最佳工具。每个框架都针对具体特性进行了优化,如快速训练,支持灵活的网络架构,在移动端进行推理等等。许多时候,研发过程中最重要的特性与生产环节最重要的特性是不同的。这导致开发人员在框架之间进行模型转换时,会因框架使用不正确或明显延迟而使得效率降低。使用ONNX 表征的框架简化了这一点,使得开发人员更加灵活。

共享优化

硬件供应商和其他改进神经网络性能的优化可以通过定位ONNX 表征来同时影响多个框架。优化经常需要被分别整合进入每个框架,这一过程很费时间。ONNX 表征使得优化更容易实现,从而覆盖更多开发人员。

技术总结

ONNX 提供了可扩展计算图模型的定义,以及内置 operators 和标准数据类型的定义。起初我们专注于推理(评价)所需的能力。

每个计算数据流图被构造为形成非循环图的节点列表。节点具有一个或多个输入和一个或多个输出。每个节点是对 operators 的调用。

可用性

ONNX 代码和文档的初始版本现在已经在GitHub(https://github.com/onnx/onnx)上开源,呼唤着社区的立即参与。我们将积极开展基于ONNX 的工作,即将推出的Cognitive Toolkit 也将对其支持。我们还计划和Facebook一道,提供部署参考、示例、工具和model zoo。

ONNX 表征形成了开放生态系统的基础,使 AI 更容易获取并富有价值。开发人员可以为其任务选择合适的框架,框架作者可以专注于创新,硬件供应商可以简化优化流程。我们希望社区能够支持ONNX,以实现这一令人兴奋的愿景。