首页 > 杂文收集 > 2019深度学习框架排行榜 (从TOP 10到TOP 3)
2019
11-21

2019深度学习框架排行榜 (从TOP 10到TOP 3)

千淘万漉博客阿里云大使推广链接

1. 写在前面

5G可以说是2019年上半年十分闪耀的那颗“星”了,美方还不惜代价地试图封锁中国的5G技术出海。5G之所以重要,是因为其将和AI技术,大数据技术一道颠覆我们现有的生活模式,让智能化成为现实。

在智能化的世界,5G技术提供高速率(>1 Gbps),低延时(1ms)的基础网络服务,组建物联网(IoT,Internet of Things),大数据技术提供对万物互联产生的海量数据的整合能力,而AI技术则提供整个智能生态的计算与决策能力,深度学习技术是非常高效的实现方式,在过去10年,已被学术界和工业界反复证实是一剂“灵丹妙药”,依靠各种模型、算法可以比人类判断得更精准、更快速。

Figure 1 智能时代

技术需要高效的模式来实现应用,深度学习框架就是那个实现“灵药“的“炼丹炉”,能够通过深度学习算法模块化的封装,快速搭建模型,输入数据,进行各种模型的训练,调优,测试和部署,为整个智能生态提供预测,决策等核心推断能力。

2. 深度学习框架排行榜

得益于深度学习框架发展初期各家为更好地推动技术发展而造就的开源生态模式,如今,深度学习框架百花齐放,百家争鸣,快速推动了深度技术在工业界的落地应用。当然,好“药”也得有好“炉”炼,下面我们就介绍下目前主流的深度学习框架的发展状况,各自的特点以及适合的场景等,希望能够帮助大家找到合适的“炉”。

下文将从业界影响、资源投入、开发生态、文档体系、模型全面性、工业实践和开源热度(GitHub)等七个方面评估各框架的发展状况,结果如下图(供参考)。

Figure 2 十大深度学习框架发展程度(caffe,caffe2分开统计)

再来看一下GitHub对应的一些数据情况,Pytorch,TensorFlow,PaddlePaddle过去两年保持了较快的发展速度,尤其是Pytorch的星数增长了3倍,获得了颇多关注。而Caffe&Caffe2,Theano,CNTK等,虽然已经停止迭代,但得益于产业的快速发展,GitHub星数仍有一定增长。

Figure 3 十大深度学习框架GitHub数据变化(caffe,caffe2分开统计)

Figure 4 十大深度学习框架增长率(caffe,caffe2分开统计)

3. 十大深度学习框架详解

TensorFlow

Google的TensorFlow,可以说是当今十分流行的深度学习框架。Airbnb,DeepMind,Intel,Nvidia,Twitter以及许多其他著名公司都在使用它。

Google自开源TensorFlow起,投入大量的人力,物力,财力,逐步构建了一个AI生态,从基础研究、AI教育再到应用实现,而这个生态的核心就是TensorFlow。如前所说,深度学习是AIoT时代的基石,毫无疑问,Google依然走在时代转折点的前列。

TensorFlow提供全面的服务,无论是Python,C++,JAVA,Go,甚至是JavaScript,Julia,C#,几乎所有开发者都可以从熟悉的语言入手开始深度学习的旅程。TensorFlow构建了活跃的社区,完善的文档体系,大大降低了我们的学习成本,不过社区和文档主要以英文为主,中文支持有待加强。另外,TensorFlow有很直观的计算图可视化呈现。模型能够快速的部署在各种硬件机器上,从高性能的计算机到移动设备,再到更小的更轻量的智能终端。

TensorFlow的缺点已经被诟病多年,相比Pytorch,Caffe等框架,TensorFlow的计算速度可以说是“牛拉车“。而且通过它构建一个深度学习框架需要更复杂的代码,还要忍受重复的多次构建静态图。

但综合来说,对于英文阅读和英文交流毫无障碍的同学,TensorFlow依然是深度学习框架的优选方案。

Pytorch

Pytorch是基于用Lua编写的Torch库的Python实现的深度学习库,它由Facebook创建,目前被广泛应用于学术界和工业界,随着Caffe2项目并入Pytorch, Pytorch开始威胁到TensorFlow在深度学习应用框架领域的地位。

Pytorch官网的标题语简明地描述了Pytorch的特点以及将要发力的方向。Pytorch在学术界优势很大,关于用到深度学习模型的文章,除了Google的,其他大部分都是通过Pytorch进行实验的,究其原因,一是Pytorch库足够简单,跟NumPy,SciPy等可以无缝连接,而且基于tensor的GPU加速非常给力,二是训练网络迭代的核心-梯度的计算,Autograd架构(借鉴于Chainer),基于Pytorch,我们可以动态地设计网络,而无需笨拙地定义静态网络图,才能去进行计算,想要对网络有任务修改,都要从头开始构建静态图。基于简单,灵活的设计,Pytorch快速成为了学术界的主流深度学习框架。

Pytorch的劣势在于模型部署,由于对其部署难度早有耳闻,我没尝试过部署Pytorch的模型,一般是在Pytorch快速的试验新的模型,确认好的效果再去找“现成的”的TensorFlow模型做简单的优化。

不过现在,如果稍微深入了解TensorFlow和Pytorch,就会发现他们越来越像,TF加入了动态图架构,Pytorch致力于其在工业界更加易用。打开各自的官网,你也会发现文档风格也越发的相似。

PaddlePaddle

PaddlePaddle是由百度自主研发的开源深度学习平台,近期有了中文名字,飞桨。官网截图也很有意思,很多人在划桨。飞桨刚发布的时候,并不被看好,感觉更像是Google有,百度也要有的腔调,但是近来在做一个关于语义识别的项目,其他框架支持中文的模型实在是少的可怜,时间紧张也没有时间大规模训练,于是就来试试飞桨,其中基于BERT的ERNIE模型取得了较好的效果,部署也不折腾。个人认为可以将模型库中的经典模型套在自己的问题上,作为baseline模型快速试验,而后慢慢调优追求更好的效果。

从模型库找到适合自己的模型,按照实践教程一步步进行就行了,过程还是比较简单的,遇到的问题在GitHub的issues中都有找到,虽然不像TF那么活跃,但是支持也是很及时的。我是从官网找模型,发现官网又更新了,盗张图过来感受下支持的模型。

Figure 5 PaddlePaddle模型库(源:百度PaddlePaddle官网)

功能上,飞桨同时支持动态图和静态图,能方便地调试模型,方便地部署,非常适合业务应用的落地实现。飞桨也已经支持数百个节点的高效并行训练。可以说在过去2年的时间里,深度学习领域在大规模的落地应用,各家框架也都在快速的发展,但是百度的飞桨看来是这个阶段发展更快的框架,甚至是发展更快的AI开发生态。

目前,以上三个框架可以说发展比较快,并且仍在稳定更新与维护。功能上来说,各框架已经“越长越像”,三个框架还是会有各自的特点,如何选择还是要根据自己的目标来看。

下面简单介绍一下其他的一些主要框架。

Keras

Keras的出现大大降低了深度学习应用的门槛,通过Keras的API可以通过数行代码就构建一个网络模型,曾几何时,Keras+Theano,Keras+CNTK的模式深得开发者喜爱。目前Keras整套架构已经封装进了TensorFlow,在TF.keras可以完成Keras的所有事情。

Deeplearning4j

Deeplearning4j,顾名思义,它是用JAVA编写的,并且与任何JVM语言兼容,如Scala,Clojure或Kotlin,基础计算模块是用C,C++和CUDA开发的,基于此,DL4J对Spark和Hadoop生态有很好的支持,在多卡GPU上也有很好的性能。相比TF,Pytorch和飞桨,DL4J的文档和社区体系并不是很完善,而且其本身并不支持Python,而是由高层级的Keras API支持,上手难度稍大,另外其应用示例也很有限。

Mxnet

Mxnet可以说成名很早,发展一直不温不火,现在在Apache项目下孵化,当下背靠企业的TensorFlow,Pytorch和飞桨都依靠广泛的应用场景踏上了AI发展的快车道,而Mxnet缺少的可能就是大厂应用场景的落地实现。

Caffe&Caffe2

Caffe 是一个优先考虑表达、速度和模块化来设计的框架,它由贾扬清和伯克利人工智能实验室研究开发。支持 C、C++、Python等接口以及命令行接口。它以其速度和可转性以及其在卷积神经网络建模中的适用性而闻名。

使用Caffe库的好处是从深度网络存储库"Caffe 模型Zoo"访问可用网络,这些网络经过预先培训,可以立即使用。Caffe是一个曾经叱咤风云的视觉识别深度学习网络。但是,Caffe 不支持精细粒度网络层,给定体系结构,对循环网络和语言建模的总体支持相当差,必须用低级语言建立复杂的层类型,使用门槛很高。

Caffe2是由Facebook组织开发的深度学习模型,虽然使用门槛不像Caffe那样高,但仍然让不那么看重性能的开发者望而却步,很快就被并入Pytorch项目。而Caffe自2017年以来都没有再更新了,新的项目已经鲜有其身影,曾名噪一时的框架就此落幕。

Chainer

Chainer是纯粹用Python在NumPy,CuPy等库的基础上开发的,它的创新是网络不再是静态图,而是可以灵活定义,快速运行的一套深度学习架构,同时可以运行于大型系统并保持较高的性能,后来Pytorch的设计灵感就是部分借鉴于Chainer。

Theano

Theano是深度学习框架的鼻祖,它由Yoshua Bengio和蒙特利尔大学的研究小组于2007年创建,是率先广泛使用的深度学习框架。Theano 是一个 Python 库,速度更快,功能强大,可以高效的进行数值表达和计算,可以说是从NumPy矩阵表达向tensor表达的一次跨越,为后来的深度学习框架提供了样板。遗憾的是Theano团队已经停止了该项目的更新,深度学习应用框架的发展进入到了背靠工业界大规模应用的阶段。

CNTK

CNTK是由微软开发的深度学习框架,是一个用于商业级分布式深度学习的开源工具包。它通过定向图将神经网络描述为一系列计算步骤,支持DNNs,CNNs以及自由组合的模型。今年,CNTK团队也宣布不再更新项目,让人唏嘘。

总的来说,各家的深度学习框架各有千秋,重要的是找到适合自己团队的,能够快速匹配团队的技术栈,快速试验以期发挥深度学习技术应用落地的商业价值。

4. 如何选择?

那么如何在众多的框架中做选择呢?我推荐这3个框架:TensorFlow,Pytorch,飞桨。其他框架不是投入资源有限,就是已经不再维护了。实际上,我们都应该或多或少地去了解这3个框架,根据自己的实际情况可以快速选型。

如果是刚刚接触深度学习,以学习为目的的开发者,我建议从TensorFlow和飞桨开始上手,至少目前来看,Google和百度是倾全力打造这两个平台的,他们已经不只是一个深度学习框架了,更是一个AI开发的生态,从基础的视频课程,完善的文档体系到项目的开放落地提供的是统一的服务。多说一句,百度飞桨的基础文档相当详细,不仅有代码实现,数据流过程的教程,同时也包含了详细的算法原理,这点为那些还不是那么了解相应模型的同学带来极大的方便。对于学有余力的同学,我建议这3个框架都可以去了解下。

如果是出于学术目的,建议从Pytorch开始,毕竟学术研究要紧盯着前沿,看文章,复现文章中模型的效果,选大家都用的可以节省不必要的时间成本,把重点放在优化模型提升模型效果上。

如果是想要开箱即用,想将深度学习技术快速应用到自己的场景中尝试,我建议选择飞桨,飞桨中有大量的实战案例,套到相应的场景基本就能迭代起来了。而且在NLP领域,需要对各种语言进行预处理,毫无疑问对中文支持更好的是飞桨,比如ERNIE,其挖掘海量的中文数据,对先验语义知识进行建模,增强了语义表达能力,可以作为NLP,NLU应用的基础服务不同的场景。

随手贴几个招聘网站上的JD,也可以帮大家明确一下方向,供参考。



5. 未来

我们处在更好的时代。

感谢互联网文化,感谢开源文化,让技术可以以指数级的速度发展,我们更要感谢在时代转折点的那些引路人,没有Google、百度等企业不遗余力地尝试将新技术应用于各产业,就没有技术的飞速发展,就没有更美好的生活模式的变迁。

AI技术的平民化是智能时代发展的催化剂,我们应用深度学习技术,从原理到框架,再到应用平台化工具将其落地到所有的场景,这是未来的发展趋势。得益于5G技术的发展,相信在不久的将来,我们将实现万物互联。深度学习是AIoT时代的关键,各平台已有的实践落地项目给我们提供了产业落地的实现路径。可谓星星之火,渐成燎原之势,另外,发展我国自己的AI开发生态也同样重要,考虑到近期的“华为事件”,有备无患。

结尾,我想说的是,框架、平台都只是为我们提供了工具,我们得明确目标并找到合适的场景,推进应用在业务上的落地,实现商业价值才能拥有核心竞争力。

6. 参考

  1.  https://www.techspot.com/article/1582-state-of-5g-wireless/

  2.  https://www.tensorflow.org/

  3.  https://pytorch.org/

  4.  https://www.paddlepaddle.org.cn/

  5.  https://deeplearning4j.org/

  6.  https://chainer.org/

  7.  https://mxnet.incubator.apache.org/

  8.  https://keras.io/

  9.  https://github.com/Theano/Theano

  10.  https://docs.microsoft.com/en-us/cognitive-toolkit/

  11.  https://binaryinformatics.com/pytorch-vs-tensorflow/

  12.  https://www.springboard.com/blog/deep-learning-frameworks/

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】


本文》有 0 条评论

留下一个回复