0
关于深度学习的框架之争一直都没停止过,每隔一阵大家就要进行一次框架大讨论:
TensorFlow的使用者虽多,又有谷歌的背书,但真的很!难!用!
Pytorch虽然入门简单、上手快,但因为开源时间不长,关于它的文档和代码相对较少。
Keras作为TensorFlow的高级KPI,一旦有什么想法需要快速建模验证时很方便,但相较tf功能还是没那么全。
Caffe虽然方便部署,但是C++的框架,在编程上会比较难。
……
每个框架都各有优劣,而针对于此的讨论也一直没有停息。
近日,Yoshua Bengio教授的一封邮件又让对框架的讨论迅速升温,在邮件中,他表示, 他们将会停止对Theano的更新,接下来,会以最低成本对Theano进行为期一年的维护,之后就将彻底与Theano告别。详情可参见雷锋网此前发文【深度学习框架Theano 宣布完成历史使命,即将退役】。
这意味着,开发者又要与一个深度学习框架说再见了。
深度学习框架祖师爷Theano
早在今年一月份雷锋网 AI科技评论进行框架大盘点时,就曾详述过Theano 。详情可以参见【盘点四大民间机器学习开源框架:Theano、Caffe、Torch 和 SciKit-learn】
Theano基于 Python,是一个擅长处理多维数组的库(这方面类似于 NumPy),它的设计初衷是执行深度学习中大规模神经网络算法的运算。Theano早期的开发者有Yoshua Bengio和Ian Goodfellow,由于出身学界,它最初是为学术研究而设计。当它与其他深度学习库结合起来之后,会非常适合于数据探索。
Theano可以被更好地理解为一个数学表达式的编译器:用符号式语言定义你想要的结果,该框架会对你的程序进行编译,来高效运行于 GPU 或 CPU。
在过去的很长一段时间内,Theano都是是深度学习开发与研究的行业标准。比起深度学习库,它更像是一个研究平台,你需要从底层开始做许多工作,来创建自己需要的模型,这就意味着它的灵活性很强。
再怎么优秀的工具都有退出历史舞台的一天,曾经深得学界青睐的Theano也不例外。
作为深度学习框架中祖师级的存在,从 2007的推出到2017的落幕,到现在刚好历经十年。
Theano已完成历史使命,功成身退
针对Theano的落幕,AI科技评论与众多开发者进行了交流,大家的看法出奇一致:
——对于这件事情并不吃惊,很正常的更新换代。
——以前用 Theano的人大都已经换成其他框架,Theano已完成了它的历史使命,退出舞台是必然的。
为什么说Theano的落幕是历史必然?针对于此,AI科技评论联系了几个曾经接触过Theano的开发者进行了采访:
KDD Cup 2017的双料冠军胡可对AI科技评论表示 ,虽然在KDD Cup比赛时用了Theano,但平时在其他任务上一般用的是TensorFlow或者CNTK。“Theano完成了它的历史使命,它比较适合实验室的toy data,不太适合当前工业界‘大数据’的需求。”正如胡可所言,生于学界的Theano,必然有其应用局限性——比较适合做小规模的短期实验,而在近两年数据量剧增且优秀框架层出不穷的当下,就不再那么得人心了。
曾经接触过Theano的一位开发者表示,Theano的速度在当时来说,与同期的Torch相比并不算快,更比不上现在新出的框架。此外,在代码实现上,比起其他框架,Theano也不是很直接。
2015年,一个关于机器学习的博客fastML就将Torch与Theano进行了对比:
图中红色柱状图指Torch,绿色柱状图指Theano,可以看到Torch在大多数情况下性能都要优于Theano。
而对于使用Theano的原因,卡内基梅隆大学(CMU)语言技术研究所(LTI)博士研究生王赟对AI科技评论表示,他是2015年初开始做深度学习的,那时候还没有Tensorflow,而同时期的Torch又是基于他不会的Lua语言,所以最终选择了Theano。“才短短两年多,就已经天翻地覆”,他感慨道。确实如此,短短两年的时间,TensorFlow的用户量就遥遥领先,亚马逊开始为Mxnet背书,微软和 Facebook 也牵手发布ONNX,而Theano则黯然退出历史舞台。
Theano并非完全消失
那么,就像之前媒体所报道的那样,Theano已死?并非如此。
Bengio在他的公开邮件上这样写道,“多年以来,我们都以 Theano 的创新深感自豪,其创新也正被其他框架继承和优化。比如,把模型表达为数学表达式、重写计算图以获得更优性能和内存使用、GPU 上的透明执行、更高阶的自动微分,正在全部成为主流。”
正如Bengio所言,从现在的主流模型之中,我们仍然可以看到Theano的影子。它并没有死,而是影响着许许多多的模型。
事实上,Theano的很多开发人员都去谷歌参与TensorFlow的开发了,其中包括早期开发成员Ian Goodfellow。而后起之秀Tensorflow在功能上与Theano十分相似,它也是一个偏底层的框架,相比Theano,性能也更加优化。
上图为TensorFlow系统架构,详情可参见雷锋网【从系统和代码实现角度解析TensorFlow的内部实现原理】一文。
AWS工程师张帜对AI科技评论表示:新老交替,这一天总会来的。基本上所有的轮子都参考过Theano,它也不算彻底消失。
知乎网友mileistone 也如此评价Theano:Theano开启了基于符号运算的机器学习框架的先河,然后随着tf和pytorch的崛起,完成自己的历史任务。
下一步
Bengio在他的邮件中表示,目前支持深度学习研究的软件生态系统快速进化,还有很多别的优秀的深度学习框架可供选择。
而随着对「Theano停止更新」的缅怀结束,似乎话题又要转向另一个方向了,那就是,究竟下一步该选择什么框架呢?
讨论虽多,每家各执一言,但有个不争的事实:TensorFlow的忠实拥护者一直处于遥遥领先状态,有利于快速建模验证的Keras也颇得人心,后起之秀PyTorch的粉丝数日益增多,背靠亚马逊的MxNet、背靠微软的CNTK更新也一直稳定。
不过对框架的选择也许并不是重点,有网友评价,框架就是刻刀,而开发者是雕刻家。虽说刻刀的选择很重要,但雕出来的东西好不好,更多是取决于个人。
CMU LTI博士研究生王赟也对AI科技评论这样说道:
其实这么多年我看着各种库的起起落落,还有一种感慨是研究者不能始终抱着一个大腿,要与时俱进。但是时代的潮流在哪里也不是随时都能看出来的,也没法时刻保持自己在前沿,但好在掌握了一个库之后再换另一个库并不是很费劲。
相信这也是千千万万开发者的观点,框架的选择并没有「那么」重要,更重要的是研究者自身的与时俱进。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。