DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

Posted 雷课

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?相关的知识,希望对你有一定的参考价值。

雷课

关注













DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?


讨论机器学习系统需从两方面来讨论,骨骼和肉。骨骼代表一个框架的架构设计思想,肉代表了比如operator实现了那些,外部样例的支持程度等。肉必须要长在骨头上,骨头的好坏决定了一个框架最终可以走多远和它的扩展性,肉多少决定了在已有设计框架下面功能的全面性。


从骨骼上面,

       mxnet的设计思路优于TF

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

包括TF在内的图计算框架都有一个限制,就是需要用户把所有的计算全部都表示成一张图来高效运行。这么做不论是在逻辑上,调试上以及和运行环境的交互(python)上面都是有一定劣势。这也是为什么torch采取了支持用户把计算拆分成多步来做,用户可以直接利用lua来选择下一步执行什么。用户可以比较简单地对计算进行模块分割,并且根据比如输入长度的不同来直接动态改变需要运行哪一个步骤。

简单来说,Torch为代表的过程式计算更加灵活。但是基于图计算的框架也提供了比如自动多卡并行调度,内存优化等便利条件。    

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

MXNet结合了这两种编程思路, 允许用户自由把图计算和过程计算混合起来, 并且可以对多步执行进行自动多卡调度, 使得程序在需要优化的部分可以非常优化,而必要的时候可以通过过程计算来实现一些更加灵活的操作, 并且所有的操作都可以自动并行(TF只能并行一个图的执行,但是不能并行像torch这样的多步执行的操作)。

结果就是MX可以利用更短的代码来实现TF需要深度修改的东西才可以实现的哦东西,如支持变长LSTM的bucketing API需要大约10行python。

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?


为什么TF和Torch会成为这样不同的设计也有它们自己的原因。TF由G的优秀工程师设计,更加注重性能和优化。Torch本身是researcher设计的,更加注重灵活性。真正好的设计需要兼顾这两方面的需求,DMLC的同学因为同时有系统和机器学习的背景,才会做出结合两者优点的设计。这样的设计思路是深度学习框架的未来,也会影响包括TF和torch在内的框架的转变。


从肉上面来看

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

TF的不同之处及特点

TF具有更大的开发团体,在各个operator的支持程度上面相对会比MX来的快一些。因为TF的开发团体比较大,所以在可扩展性上面的考虑不需要那么多。其它社区如Theano和Torch的推进速度和MX差不多,不过积累时间比较久一些。

MX本身采取的方法是更加开放,增加可扩展性。MXNet的operator不仅仅局限于MShadow。MShadow只是提供了一个方便的模板,完全可以使用C, C++, CUDA等去实现。同时支持直接采用numpy来写各种operator。另外,目前的mxnet已经做到完全和Torch兼容,以调用所有Torch的Module和Operator 

(mxnet/example/torch at master · dmlc/mxnet · GitHub ),所以Torch能做的MXNet就可以做。通过更加灵活地和整个深度学习开源社区整合,达到共同进步的局面。

‡在社区支持上

MXNet在上一个月里一共有超过1000个commit,从年初到现在,已经有了超过40个Op。在Kaggle里两个比赛使用MXNet取得第一和第三。

例如在刚结束的National Data Science Bowl-II里,第三名使用单MXNet model,他是这样评价MXNet ( 3rd place solution for the second national datascience bowl – Julian de Wit – Freelance software/machine learning engineer. ):

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

Mxnet.

What can I say… great library when you also want to deploy your systems in real-world situations. Especially good windows support is something that is severely lacking from most other libraries.

选择什么东西,

                      总结一下!

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

其实并不需要选择一个唯一的工具,很多工具之间的本质思想是相同的,武林高手也不会因为剑是什么而产生能力的差别。如果想要跑一跑已经有的深度学习代码,其实选择已经有的样例比较方便的就可以了。如果真的要走在前沿,你会发现任何一个工具都不能为完全满足需求,对于系统的深入理解和hacking,修改和不断优化是必须的。

如果想要真正成为理解深度学习系统原理的cutting edge hacker,让自己有能力也可以重头搭建一个比TF还要优秀的深度学习系统,并且在某一些方面有所突破。不妨看一下MXNet,里面有详细的设计文档来解释TF在内的各种优化设计思路,也可以快速地实现现在深度学习框架做不到的功能。举一些例子


NO.1

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

MX是目前唯一一个提供了单机四块980,用比标准Inception更复杂的模型跑完imagenet全集的框架。


NO.2

DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?

MX有最好的内存优化。训练Inception-V3, TensorFlow在K40 12GB显存上只能跑到batch size 32,在MXNet里GTX 980 4G显存就够了。语音上的例子也类似,速度和CNTK一样但是内存只用一半。最近MXNet release的mxnet-memonger进一步优化内存 (https://arxiv.org/abs/1604.06174 github GitHub - dmlc/mxnet-memonger: Sublinear memory optimization for deep learning, reduce GPU memory cost to train deeper nets ), 在一块4G显存的GTX 980上用batch size 128轻松训练一千层的ResNet还有剩余。


NO.3

MX是所有框架里面最早支持分布式的框架。


No.4

因为其轻量级的设计,MX是目前唯一一个可以直接不修改代码移植到浏览器的框架。今年的GTC 2016的报告里也提到MXnet可以通过TX1部署到无人机上进行实时物体识别 (GPU Technology Conference 2016 )。


这些例子都和MX的设计优势有关。虽然肉不一定长的很全,但是在需要的时候,可以往一个方向发力,快速到达已经有的框架做不到的效果。

技术之外,

                MXnet的维护和贡献

MXNet的用户们

MXNet的用户并不仅仅只是几个中国学生,它的主要贡献者列表长达100人 Contributors to dmlc/mxnet · GitHub 成员数超过了github能显示的长度 Network Members · dmlc/mxnet · GitHub 当中还包含了多个kaggle比赛的优胜者和机器学习专家。

实际上很多企业也在用mxnet,例如华为和阿里都有一些组在用,很多startup也在用mxnet。

顺便,MXNet的维护者大约一半在读一半已经毕业,大家都没有表示弃坑还在积极坚持维护不断推出新功能,已经毕业的小伙伴们还在他们的公司里积极推广mxnet,也请勿随意下结论。


开源软件

以上是关于DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?的主要内容,如果未能解决你的问题,请参考以下文章

大数据未来发展趋势

大数据未来七大发展趋势

预测一下web前端未来的6个趋势

PHP未来-Laravel-全栈框架1

2022前端未来发展趋势

前端的发展和未来趋势