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

DL framework的学习成本还是不小的,以后未来的发展来看,你建议选哪个?

请主要对比分析下4个方面吧:

1. 实现新计算单元(layer)和网络结构的便利性

如:RNN, bidirectional RNN, LSTM, GRU, attention机制, skip connections等。

2. 实现不同学习任务的便利性

classification和regression自不用说,其他的: multi-label, multi-task, adversarial learning, reinforcement learning等。

3. 调试和排查问题的便利性

这个很重要啊,所以没考虑Theano了。

4. 社区和支持

MXnet没有大公司在推,随着TF/Torch的发展,怕会逐渐被冷落啊

lau phunter的回答:

我先从技术角度客观评论一下MXNet和其他平台的对比,帮助楼主选择平台,兼回答一下楼上楼下对MXnet的一些疑问。

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

从骨骼上面,mxnet的设计思路优于TF

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

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

MXNet结合了这两种编程思路, 允许用户自由把图计算和过程计算混合起来, 并且可以对多步执行进行自动多卡调度, 使得程序在需要优化的部分可以非常优化,而必要的时候可以通过过程计算来实现一些更加灵活的操作, 并且所有的操作都可以自动并行(TF只能并行一个图的执行,但是不能并行像torch这样的多步执行的操作)。结果就是MX可以利用更短的代码来实现TF需要深度修改的东西才可以实现的哦东西,如支持变长LSTM的bucketing API需要大约10行python。

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

从肉上面来看

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. ):

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.

选择什么东西,总结一下

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

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

  • MX是目前唯一一个提供了单机四块980,用比标准Inception更复杂的模型跑完imagenet全集的框架。
  • 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还有剩余。
  • MX是所有框架里面最早支持分布式的框架。
  • 因为其轻量级的设计,MX是目前唯一一个可以直接不修改代码移植到浏览器的框架。今年的GTC 2016的报告里也提到MXnet可以通过TX1部署到无人机上进行实时物体识别 (GPU Technology Conference 2016 )。

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

技术之外,再说一下关于MXnet的维护和贡献

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

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

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

开源软件不容易,TF是谷歌集中很多领域专家搞起来的,里面优秀的设计思想和实现我们需要学习,而我们也有Caffe,Theano这样不靠干爹完全靠志愿开发人员和社区支持做的很好的深度学习系统,他们是Mxnet的榜样。开源软件从来都不是winner takes all的游戏,每个系统都有自己的优势,MXnet在系统设计上有很多优秀特性,在可扩展性,移动端、内存占用和分布式上有不可替代的优势,欢迎大家多用MXnet多给MXnet贡献代码我们一起茁壮成长,传送门 GitHub - dmlc/mxnet: Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more 右上角有一个“fork”的按钮,你不点一下么?


智靖远回答:

在我看来,机器学习这个领域,从业者(特指技术类从业者,不包括资本类玩家)一定会分成三个不同的群体: 1.学术研究者

他们的工作是从理论上诠释机器学习的各个方面,试图找出“这样设计模型/参数为什么效果更好”,并且为其他从业者提供更优秀的模型,甚至将理论研究向前推进一步。

能够做到这一步的人,可以说凤毛麟角,天赋是绕不过去的大山,机遇和努力也缺一不可。对于这些人,其实也轮不到我们来建议,在长期的研究中他们都有自己喜好的工具和方法,甚至有一言不合就自己开发工具甚至开发语言的(比如LeCun……)。题主应该不属于这一层。

2.算法改进者

他们也许无法回答出“我的方法为什么work”,也许没有Hinton,LeCun那样足以载入史册的重大成果,但是却能根据经验和一些奇思妙想,将现有的模型玩出更好的效果,或者提出一些改进的模型。这些人通常都是各个机器学习巨头公司的中坚力量或者成长中的独角兽,使用什么模型对他们来讲也不是问题,根据所处的环境,通常都有固定的几个选择。他们其实也并不怎么需要关心“我该用什么框架”,重要的是什么框架能够快速地把想法实现出来。所以你会看到caffe和theano和mxnet和torch都一样有大批的用户,仍然在贡献大量的新算法的实现。在这个层面,insight和idea才是重要的东西,各种工具的区别,影响真的没那么大。可能会让一个结果早得到或者晚得到几天或者几周,却不可能影响“有没有成果”。

这也造成了另外一个结果:最最新,最最前沿的成果往往还是用caffe或者theano做出来,发paper,然后tensorflow才开始复现这些成果。搞不好很长一段时间之内也许tf上面都不会出现原生的新奇玩意儿。因为那些正在努力嗷嗷发论文的大中牛们时间非常宝贵,没有太多心思重新学习一种框架。 不过没关系,题主(至少目前)应该不属于这一层。

3.工业实现者

这些人基本上不会在算法领域涉入太深,也就是了解一下各个算法的实现,各个模型的结构。他们更多地是根据论文去复现优秀的成果,或者使用其他人复现出来的成果,并且试图去在工业上应用它。

这个层次的人数是最多的,涉及的因素也非常复杂。但是在框架选择上,其实完全可以用最单纯的原则:哪个人多用哪个。

至于调试的方便性或者性能或者最新算法的实现能力,其实都与使用者数量相关。

人多了贡献代码的人就会更多,遇到问题时候能讨论的人也就更多,出现新的成果时,在这个框架上进行实现的的也就越多,同样的,为这个框架开发各种外围工具的人也会更多。目前这个阶段,TF的靠山最厚实,功能虽然还不强大,更新也还不够快,但是确实人气已经攒得很足了,一些外围的包装比如tflearn也实现了很多最新的成果。所以从目前来看,投身TF不会是一个坏选择,找工作的时候你遇到用tf的公司的可能性也是非常非常高的。

至于MXNet,@lau phunter的答案说的很好,这个年代早就不是胜者通吃的时候了,即使TF有google撑腰,也不可能“消灭”其他几个框架,更何况每个框架都有自己出彩的地方。现在流行的这几个框架都有一些算法改进层次的高手大牛支持着,他们很可能会继续使用正在用的框架。哪怕只有他们支持,也足够撑起一个框架的生命力了,更何况他们的号召力还颇为可观。

原文发布于微信公众号 - 计算机视觉战队(ComputerVisionGzq)

原文发表时间:2017-05-03

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据猿

金融科技&大数据产品推荐:百融信贷决策审批系统

百融信贷决策审批系统,作为集成式、一站式的风控服务平台,基于百融金服的大数据和风控云等技术理念,结合机器学习和人工智能算法的新科学,从数据规则、审贷规则集、风控...

5868
来自专栏专知

势头强劲: PyTorch周年大事记盘点

【导读】 1月19日,PyTorch团队对PyTorch发布一年来的成长轨迹做了总结。在过去一年里,PyTorch资源包的下载量超50万次、PyTorch频频出...

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

如何成为一名数据极客?

对于数据岗位的员工,互联网公司颇有些不同的称谓,像统计工程师、大数据工程师、数据分析师、算法工程师、数据科学家等,每一种之间的技能差距简直是风马牛不相及。 但我...

3229
来自专栏大数据文摘

深度 | 探索实物与VR间重量转换的方法

1194
来自专栏数据科学与人工智能

【智能】如何成为数据科学家:权威指南

你好!我是Jose Portilla,Udemy的讲师,有超过25万名学生注册了各种各样的课程,包括Python的数据科学和机器学习、R编程的数据科学、Pyth...

943
来自专栏织云平台团队的专栏

智能运维机器人--AI运维的实践探索【二】

当越来越多的AI技术引入运维领域后,我们能憧憬,我们的征途,正驶向星辰大海吗?

1.4K6
来自专栏大数据文摘

通过西部世界来盘点近来人工智能研究的发展

2267
来自专栏数据魔术师

从小白到年薪10万+,优秀的数据分析能力如何速成?

3717
来自专栏机器人网

15 个顶级的人工智能开源工具

它是由贾扬清在加州大学伯克利分校的读博时创造的,Caffe 是一个基于表达体系结构和可扩展代码的深度学习框架。使它声名鹊起的是它的速度,这让它受到研究人员和企...

1042
来自专栏AI研习社

TensorFlow可应用于Android Things的物联网;GitHub发布开源指南 | AI开发者头条

【AI研习社】关注AI前沿、开发技巧及技术教程等方面的内容。欢迎技术开发类文章、视频教程等内容投稿,邮件发送至:zhangxian@leiphone.com A...

3839

扫码关注云+社区

领取腾讯云代金券