深度学习开源框架选型准则和知名框架调研(一)

来源:互联网 发布:怎么免费注册淘宝网店 编辑:程序博客网 时间:2024/06/06 08:53

TensorFlow(GitHub),出身名门谷歌,风姿绰约的功能,并且经过谷歌自己的Gmail和搜索引擎的实战磨练提升,这样的深度学习框架热度第一应该没有多少异议了。开源之后,谷歌长期支持对打算投入资源的公司和开发者也是个信心,毕竟这么烧钱的项目,不是谁都意愿冒险。

目前很多开发者或者打算介入深度学习的公司而言,在了解了产品应用需求之后,首先要面对的就是框架选择,毕竟Facebook、Pinterest等这样的大户都没有勇气重新造轮子(也没有必要)。作为CTO/架构师,都会有很多的理由阐述自己的框架选择理由,但是我个人曾经参与开源框架经验和架构框架选择经验里有颠扑不破,久经考验的三个准则,适用于任何框架,包括后文要讨论的人工智能框架,供各位圣主参考:

  • 最合适产品应用需求
  • 最合适自己的技术团队
  • 框架活跃度足够高,可持续发展

GitHub上其实还有很多不错的开源项目值得关注,首先我们推荐目前规模人气最高的TOP4:

1,PaddlePaddle,Star数4587,C++开发,有Python接口;其被列在第一是基于四个考虑:

一是百度开源,活跃度和bug解决率目前都比较及时,并且在百度云上面提供了对应的环境系统和云服务,解决了揪心的一次性大规模投入;

二是框架确实还可以,文档也完善,并且中文(有的人笑了,其实也对,玩深度学习不懂英文的还是比较少的),但是我要说的是框架本身对中文支持、中文支持、中文支持。说三遍的原因自然是因为很重要,要知道如果项目涉及NLP,那是几个调参都能重大影响结果的情况,更何况如果框架原本只支持英文,那不提前考虑这个问题,过程必然会很艰辛(此处有经验的架构师/开发者应该会心一笑)。题外话是如果后面碰到框架问题,大概率你还能找到百度IDL的人,甚至挖1个专家进项目组(此处只针对土豪);

三是当前看到的几项数据指标,确实还可以,Python接口用起来也很方便,有些bug需要解决; 

四是........,对的,你们都开始怀疑了,我还是主动声明一下利益关系点,我曾经在百度炸过几年碉堡;

2,Tensorflow,Star数51023,715个贡献者,绝对的一骑绝尘,霸主必须有霸主的实力。核心模块C++开发,但是整改项目里的Python代码数量反超了,各种接口丰富,目前也适配很多平台,方便后续开发。

3,Caffe,Star数16603,238个贡献者,周更新….毫无疑问老二,C++开发,接口丰富。小家碧玉,生于著名的加州伯克利分校,包括Pinterest、谷歌、Facebook。啊,Facebook,那不是Torch吗?要知道Caffe作者贾扬清(对的,就是中国人,不是“吴恩达”)已经是Facebook研究科学家了。虽说不会像印度人那抱团起事,但是维护自己baby还是应该的吧!

4,CNTKStar数9937,117个贡献者,C++开发,有完整的Python接口,文档齐全了不少。绝对的公主级别,微软研究院出品,是深度学习人工智能领域的研究成果ComputationalNetwork Toolkit(CNTK)。据微软自己说,CNTK在语音和图像辨识能力方面,比Theano、TensorFlow、Torch7、Caffe等四个开发者常用框架有更快的运算速度。

5,MXNet,Star数8846,294个贡献者,主要用C++编写,出自CXXNet、Minerva、Purine等项目的开发者之手。MXNet目前取得了AmazonAWS的官方背书,也是牛逼闪闪,其强调同时兼顾效率和灵活度,甚至能在Android系统上跑任务。顺便说一下,余凯老师(现在是老板)约了亚马逊AWS机器学习总监Alex Smola3月29日在中关村给大家开讲座,感兴趣这个框架的可以去听听。

6,Torch,Star数6537,由于Facebook支持并开源了大量Torch的深度学习模块和扩展而迅速壮大。Torch是基于Lua,官方说Torch高效易用是得益于方便,快捷的脚本语言luajit和底层C/CUDA实施。奇怪的Lua语言……..(Lua爱好者该不开心了,我确实只学了它一天就不想继续了,现在也不想再多学一门了,要知道前20种语言我学过并且出项目干过的有11种,还有名单后面的VHDL、Verilog HDL)。

7,Theano,Star数5912,287个贡献者,Cython(Cython是一个可编译为本地可执行代码的Python方言),有计算的地方就有Python,接口自然多多的,用起来也是方便大大的!说是诞生于蒙特利尔理工学院,也是学院派。其实Theano最大的便利贡献应该是基于其上的深度学习Python软件包Keras,后者Star数13564,各种案例,并且目前同时支持Theano和TensorFlow。

8,Deeplearning4j,Star数5847,107个贡献者,Javaand Scala开发,能够与Hadoop andSpark深度结合。难得还能看见Java的影子,Java爱好者值得碎碎念的深度学习框架。它是面向生产环境和商业应用的高成熟度深度学习开源库(号称,等我抽空实测一下),可与Hadoop和Spark集成,即插即用,方便开发者在APP中快速集成深度学习功能。

9,ConvNetJS,Star数6672,15个贡献者,其实不算是个完整的深度学习框架,但是用Javascript语法实现的神经网络简直是人神,这也应该是这么多Star数的其中一个原因。请大家记住斯坦福大学博士生AndrejKarpathy和他的小伙伴,别说我没提Karpathy的推特http://twitter.com/karpathy

后面排名的还有:

Neon,绝对新秀,Python开发为主,号称N项基准测试中,Neon的测试成绩甚至要优于Caffeine、Torch和TensorFlow;

ChainerPython,来自一个日本的深度学习创业公司PreferredNetworks的开源项目,Ubuntu患者的福音,搭建快速。

有了基础概要后,下一步就是调研框架本身的技术参数:CNN和RNN性能、速度、多GPU支持,且听下回分解。

0 0
原创粉丝点击