IR in deep learning

IR in pytorch and caffe2

基于神经网络的深度学习模型是通过数据流图的计算来实现的。像CNTK,caffe2,theano,tensorflow使用静态图,pytorch和chainer使用动态图。它们都提供一种易于开发者使用的接口来构建图,并以一种优化的方式计算图。这个“图”就是我们所谓的中间表示”intermediate representation(IR)”,它代表了开发者的源码,有助于优化,并在特定的设备上运行(CPU,GPU,FPGA等等)。

为什么需要通用IR?

现在的每个框架都有它自己特有的图表示方法,虽然他们都提供类似的功能。这意味着,每个框架是一个API,图和运行时的组合。每种框架针对特定的特性做了优化,比如快速训练,支持可编译的网络结构,能在移动设备上运行(inference)等等。开发者需要根据他们自己的需求,选择一种框架。在很多时候,研究开发和实际生产的需求是不一样的。这就带来了明显的推迟,因为要把研究的结果转化到生产环境中。

为了达到AI民主化的目的,我们希望开发者可以很好地选择最适合他们需求的框架,并能够在不同的框架之间切换。我们提出了开放神经网络交换(Open Neural Network Exchange, ONNX),一种通用的IR,来构建这种强大的生态系统。

通过提供计算图的一种通用表达,ONNX能帮助开发者根据他们的需求,选择正确的框架,( framework authors to focus on innovative enhancements, and hardware vendors to streamline optimizations.)

ONNX是一种开放的形式。我们欢迎来自社区的开发者,并鼓励大家使用ONNX。

IR in mxnet: tvm

http://tvmlang.org/2017/08/17/tvm-release-announcement.html

———-分割线———–

感觉再过几年,各大DL框架,会制定某种通用标准。pytorch, mxnet, tensorflow, cntk, caffe2,我等吃瓜群众,静看各个框架之间如何龙争虎斗。

你可能感兴趣的:(深度学习,英文博客翻译)