2019深度學(xué)習(xí)框架排行榜 (從TOP 10到TOP 3)
原創(chuàng)【51CTO.com原創(chuàng)稿件】
1. 寫在前面
5G可以說是2019年上半年十分閃耀的那顆“星”了,美方還不惜代價地試圖封鎖中國的5G技術(shù)出海。5G之所以重要,是因為其將和AI技術(shù),大數(shù)據(jù)技術(shù)一道顛覆我們現(xiàn)有的生活模式,讓智能化成為現(xiàn)實。
在智能化的世界,5G技術(shù)提供高速率(>1 Gbps),低延時(1ms)的基礎(chǔ)網(wǎng)絡(luò)服務(wù),組建物聯(lián)網(wǎng)(IoT,Internet of Things),大數(shù)據(jù)技術(shù)提供對萬物互聯(lián)產(chǎn)生的海量數(shù)據(jù)的整合能力,而AI技術(shù)則提供整個智能生態(tài)的計算與決策能力,深度學(xué)習(xí)技術(shù)是非常高效的實現(xiàn)方式,在過去10年,已被學(xué)術(shù)界和工業(yè)界反復(fù)證實是一劑“靈丹妙藥”,依靠各種模型、算法可以比人類判斷得更精準、更快速。
Figure 1 智能時代
技術(shù)需要高效的模式來實現(xiàn)應(yīng)用,深度學(xué)習(xí)框架就是那個實現(xiàn)“靈藥“的“煉丹爐”,能夠通過深度學(xué)習(xí)算法模塊化的封裝,快速搭建模型,輸入數(shù)據(jù),進行各種模型的訓(xùn)練,調(diào)優(yōu),測試和部署,為整個智能生態(tài)提供預(yù)測,決策等核心推斷能力。
2. 深度學(xué)習(xí)框架排行榜
得益于深度學(xué)習(xí)框架發(fā)展初期各家為更好地推動技術(shù)發(fā)展而造就的開源生態(tài)模式,如今,深度學(xué)習(xí)框架百花齊放,百家爭鳴,快速推動了深度技術(shù)在工業(yè)界的落地應(yīng)用。當(dāng)然,好“藥”也得有好“爐”煉,下面我們就介紹下目前主流的深度學(xué)習(xí)框架的發(fā)展?fàn)顩r,各自的特點以及適合的場景等,希望能夠幫助大家找到合適的“爐”。
下文將從業(yè)界影響、資源投入、開發(fā)生態(tài)、文檔體系、模型全面性、工業(yè)實踐和開源熱度(GitHub)等七個方面評估各框架的發(fā)展?fàn)顩r,結(jié)果如下圖(供參考)。
Figure 2 十大深度學(xué)習(xí)框架發(fā)展程度(caffe,caffe2分開統(tǒng)計)
再來看一下GitHub對應(yīng)的一些數(shù)據(jù)情況,Pytorch,TensorFlow,PaddlePaddle過去兩年保持了較快的發(fā)展速度,尤其是Pytorch的星數(shù)增長了3倍,獲得了頗多關(guān)注。而Caffe&Caffe2,Theano,CNTK等,雖然已經(jīng)停止迭代,但得益于產(chǎn)業(yè)的快速發(fā)展,GitHub星數(shù)仍有一定增長。
Figure 3 十大深度學(xué)習(xí)框架GitHub數(shù)據(jù)變化(caffe,caffe2分開統(tǒng)計)
Figure 4 十大深度學(xué)習(xí)框架增長率(caffe,caffe2分開統(tǒng)計)
3. 十大深度學(xué)習(xí)框架詳解
TensorFlow
Google的TensorFlow,可以說是當(dāng)今十分流行的深度學(xué)習(xí)框架。Airbnb,DeepMind,Intel,Nvidia,Twitter以及許多其他著名公司都在使用它。
Google自開源TensorFlow起,投入大量的人力,物力,財力,逐步構(gòu)建了一個AI生態(tài),從基礎(chǔ)研究、AI教育再到應(yīng)用實現(xiàn),而這個生態(tài)的核心就是TensorFlow。如前所說,深度學(xué)習(xí)是AIoT時代的基石,毫無疑問,Google依然走在時代轉(zhuǎn)折點的前列。
TensorFlow提供全面的服務(wù),無論是Python,C++,JAVA,Go,甚至是JavaScript,Julia,C#,幾乎所有開發(fā)者都可以從熟悉的語言入手開始深度學(xué)習(xí)的旅程。TensorFlow構(gòu)建了活躍的社區(qū),完善的文檔體系,大大降低了我們的學(xué)習(xí)成本,不過社區(qū)和文檔主要以英文為主,中文支持有待加強。另外,TensorFlow有很直觀的計算圖可視化呈現(xiàn)。模型能夠快速的部署在各種硬件機器上,從高性能的計算機到移動設(shè)備,再到更小的更輕量的智能終端。
TensorFlow的缺點已經(jīng)被詬病多年,相比Pytorch,Caffe等框架,TensorFlow的計算速度可以說是“牛拉車“。而且通過它構(gòu)建一個深度學(xué)習(xí)框架需要更復(fù)雜的代碼,還要忍受重復(fù)的多次構(gòu)建靜態(tài)圖。
但綜合來說,對于英文閱讀和英文交流毫無障礙的同學(xué),TensorFlow依然是深度學(xué)習(xí)框架的優(yōu)選方案。
Pytorch
Pytorch是基于用Lua編寫的Torch庫的Python實現(xiàn)的深度學(xué)習(xí)庫,它由Facebook創(chuàng)建,目前被廣泛應(yīng)用于學(xué)術(shù)界和工業(yè)界,隨著Caffe2項目并入Pytorch, Pytorch開始威脅到TensorFlow在深度學(xué)習(xí)應(yīng)用框架領(lǐng)域的地位。
Pytorch官網(wǎng)的標題語簡明地描述了Pytorch的特點以及將要發(fā)力的方向。Pytorch在學(xué)術(shù)界優(yōu)勢很大,關(guān)于用到深度學(xué)習(xí)模型的文章,除了Google的,其他大部分都是通過Pytorch進行實驗的,究其原因,一是Pytorch庫足夠簡單,跟NumPy,SciPy等可以無縫連接,而且基于tensor的GPU加速非常給力,二是訓(xùn)練網(wǎng)絡(luò)迭代的核心-梯度的計算,Autograd架構(gòu)(借鑒于Chainer),基于Pytorch,我們可以動態(tài)地設(shè)計網(wǎng)絡(luò),而無需笨拙地定義靜態(tài)網(wǎng)絡(luò)圖,才能去進行計算,想要對網(wǎng)絡(luò)有任務(wù)修改,都要從頭開始構(gòu)建靜態(tài)圖?;诤唵?,靈活的設(shè)計,Pytorch快速成為了學(xué)術(shù)界的主流深度學(xué)習(xí)框架。
Pytorch的劣勢在于模型部署,由于對其部署難度早有耳聞,我沒嘗試過部署Pytorch的模型,一般是在Pytorch快速的試驗新的模型,確認好的效果再去找“現(xiàn)成的”的TensorFlow模型做簡單的優(yōu)化。
不過現(xiàn)在,如果稍微深入了解TensorFlow和Pytorch,就會發(fā)現(xiàn)他們越來越像,TF加入了動態(tài)圖架構(gòu),Pytorch致力于其在工業(yè)界更加易用。打開各自的官網(wǎng),你也會發(fā)現(xiàn)文檔風(fēng)格也越發(fā)的相似。
PaddlePaddle
PaddlePaddle是由百度自主研發(fā)的開源深度學(xué)習(xí)平臺,近期有了中文名字,飛槳。官網(wǎng)截圖也很有意思,很多人在劃槳。飛槳剛發(fā)布的時候,并不被看好,感覺更像是Google有,百度也要有的腔調(diào),但是近來在做一個關(guān)于語義識別的項目,其他框架支持中文的模型實在是少的可憐,時間緊張也沒有時間大規(guī)模訓(xùn)練,于是就來試試飛槳,其中基于BERT的ERNIE模型取得了較好的效果,部署也不折騰。個人認為可以將模型庫中的經(jīng)典模型套在自己的問題上,作為baseline模型快速試驗,而后慢慢調(diào)優(yōu)追求更好的效果。
從模型庫找到適合自己的模型,按照實踐教程一步步進行就行了,過程還是比較簡單的,遇到的問題在GitHub的issues中都有找到,雖然不像TF那么活躍,但是支持也是很及時的。我是從官網(wǎng)找模型,發(fā)現(xiàn)官網(wǎng)又更新了,盜張圖過來感受下支持的模型。
Figure 5 PaddlePaddle模型庫(源:百度PaddlePaddle官網(wǎng))
功能上,飛槳同時支持動態(tài)圖和靜態(tài)圖,能方便地調(diào)試模型,方便地部署,非常適合業(yè)務(wù)應(yīng)用的落地實現(xiàn)。飛槳也已經(jīng)支持數(shù)百個節(jié)點的高效并行訓(xùn)練??梢哉f在過去2年的時間里,深度學(xué)習(xí)領(lǐng)域在大規(guī)模的落地應(yīng)用,各家框架也都在快速的發(fā)展,但是百度的飛槳看來是這個階段發(fā)展更快的框架,甚至是發(fā)展更快的AI開發(fā)生態(tài)。
目前,以上三個框架可以說發(fā)展比較快,并且仍在穩(wěn)定更新與維護。功能上來說,各框架已經(jīng)“越長越像”,三個框架還是會有各自的特點,如何選擇還是要根據(jù)自己的目標來看。
下面簡單介紹一下其他的一些主要框架。
Keras
Keras的出現(xiàn)大大降低了深度學(xué)習(xí)應(yīng)用的門檻,通過Keras的API可以通過數(shù)行代碼就構(gòu)建一個網(wǎng)絡(luò)模型,曾幾何時,Keras+Theano,Keras+CNTK的模式深得開發(fā)者喜愛。目前Keras整套架構(gòu)已經(jīng)封裝進了TensorFlow,在TF.keras可以完成Keras的所有事情。
Deeplearning4j
Deeplearning4j,顧名思義,它是用JAVA編寫的,并且與任何JVM語言兼容,如Scala,Clojure或Kotlin,基礎(chǔ)計算模塊是用C,C++和CUDA開發(fā)的,基于此,DL4J對Spark和Hadoop生態(tài)有很好的支持,在多卡GPU上也有很好的性能。相比TF,Pytorch和飛槳,DL4J的文檔和社區(qū)體系并不是很完善,而且其本身并不支持Python,而是由高層級的Keras API支持,上手難度稍大,另外其應(yīng)用示例也很有限。
Mxnet
Mxnet可以說成名很早,發(fā)展一直不溫不火,現(xiàn)在在Apache項目下孵化,當(dāng)下背靠企業(yè)的TensorFlow,Pytorch和飛槳都依靠廣泛的應(yīng)用場景踏上了AI發(fā)展的快車道,而Mxnet缺少的可能就是大廠應(yīng)用場景的落地實現(xiàn)。
Caffe&Caffe2
Caffe 是一個優(yōu)先考慮表達、速度和模塊化來設(shè)計的框架,它由賈揚清和伯克利人工智能實驗室研究開發(fā)。支持 C、C++、Python等接口以及命令行接口。它以其速度和可轉(zhuǎn)性以及其在卷積神經(jīng)網(wǎng)絡(luò)建模中的適用性而聞名。
使用Caffe庫的好處是從深度網(wǎng)絡(luò)存儲庫"Caffe 模型Zoo"訪問可用網(wǎng)絡(luò),這些網(wǎng)絡(luò)經(jīng)過預(yù)先培訓(xùn),可以立即使用。Caffe是一個曾經(jīng)叱咤風(fēng)云的視覺識別深度學(xué)習(xí)網(wǎng)絡(luò)。但是,Caffe 不支持精細粒度網(wǎng)絡(luò)層,給定體系結(jié)構(gòu),對循環(huán)網(wǎng)絡(luò)和語言建模的總體支持相當(dāng)差,必須用低級語言建立復(fù)雜的層類型,使用門檻很高。
Caffe2是由Facebook組織開發(fā)的深度學(xué)習(xí)模型,雖然使用門檻不像Caffe那樣高,但仍然讓不那么看重性能的開發(fā)者望而卻步,很快就被并入Pytorch項目。而Caffe自2017年以來都沒有再更新了,新的項目已經(jīng)鮮有其身影,曾名噪一時的框架就此落幕。
Chainer
Chainer是純粹用Python在NumPy,CuPy等庫的基礎(chǔ)上開發(fā)的,它的創(chuàng)新是網(wǎng)絡(luò)不再是靜態(tài)圖,而是可以靈活定義,快速運行的一套深度學(xué)習(xí)架構(gòu),同時可以運行于大型系統(tǒng)并保持較高的性能,后來Pytorch的設(shè)計靈感就是部分借鑒于Chainer。
Theano
Theano是深度學(xué)習(xí)框架的鼻祖,它由Yoshua Bengio和蒙特利爾大學(xué)的研究小組于2007年創(chuàng)建,是率先廣泛使用的深度學(xué)習(xí)框架。Theano 是一個 Python 庫,速度更快,功能強大,可以高效的進行數(shù)值表達和計算,可以說是從NumPy矩陣表達向tensor表達的一次跨越,為后來的深度學(xué)習(xí)框架提供了樣板。遺憾的是Theano團隊已經(jīng)停止了該項目的更新,深度學(xué)習(xí)應(yīng)用框架的發(fā)展進入到了背靠工業(yè)界大規(guī)模應(yīng)用的階段。
CNTK
CNTK是由微軟開發(fā)的深度學(xué)習(xí)框架,是一個用于商業(yè)級分布式深度學(xué)習(xí)的開源工具包。它通過定向圖將神經(jīng)網(wǎng)絡(luò)描述為一系列計算步驟,支持DNNs,CNNs以及自由組合的模型。今年,CNTK團隊也宣布不再更新項目,讓人唏噓。
總的來說,各家的深度學(xué)習(xí)框架各有千秋,重要的是找到適合自己團隊的,能夠快速匹配團隊的技術(shù)棧,快速試驗以期發(fā)揮深度學(xué)習(xí)技術(shù)應(yīng)用落地的商業(yè)價值。
4. 如何選擇?
那么如何在眾多的框架中做選擇呢?我推薦這3個框架:TensorFlow,Pytorch,飛槳。其他框架不是投入資源有限,就是已經(jīng)不再維護了。實際上,我們都應(yīng)該或多或少地去了解這3個框架,根據(jù)自己的實際情況可以快速選型。
如果是剛剛接觸深度學(xué)習(xí),以學(xué)習(xí)為目的的開發(fā)者,我建議從TensorFlow和飛槳開始上手,至少目前來看,Google和百度是傾全力打造這兩個平臺的,他們已經(jīng)不只是一個深度學(xué)習(xí)框架了,更是一個AI開發(fā)的生態(tài),從基礎(chǔ)的視頻課程,完善的文檔體系到項目的開放落地提供的是統(tǒng)一的服務(wù)。多說一句,百度飛槳的基礎(chǔ)文檔相當(dāng)詳細,不僅有代碼實現(xiàn),數(shù)據(jù)流過程的教程,同時也包含了詳細的算法原理,這點為那些還不是那么了解相應(yīng)模型的同學(xué)帶來極大的方便。對于學(xué)有余力的同學(xué),我建議這3個框架都可以去了解下。
如果是出于學(xué)術(shù)目的,建議從Pytorch開始,畢竟學(xué)術(shù)研究要緊盯著前沿,看文章,復(fù)現(xiàn)文章中模型的效果,選大家都用的可以節(jié)省不必要的時間成本,把重點放在優(yōu)化模型提升模型效果上。
如果是想要開箱即用,想將深度學(xué)習(xí)技術(shù)快速應(yīng)用到自己的場景中嘗試,我建議選擇飛槳,飛槳中有大量的實戰(zhàn)案例,套到相應(yīng)的場景基本就能迭代起來了。而且在NLP領(lǐng)域,需要對各種語言進行預(yù)處理,毫無疑問對中文支持更好的是飛槳,比如ERNIE,其挖掘海量的中文數(shù)據(jù),對先驗語義知識進行建模,增強了語義表達能力,可以作為NLP,NLU應(yīng)用的基礎(chǔ)服務(wù)不同的場景。
隨手貼幾個招聘網(wǎng)站上的JD,也可以幫大家明確一下方向,供參考。
5. 未來
我們處在更好的時代。
感謝互聯(lián)網(wǎng)文化,感謝開源文化,讓技術(shù)可以以指數(shù)級的速度發(fā)展,我們更要感謝在時代轉(zhuǎn)折點的那些引路人,沒有Google、百度等企業(yè)不遺余力地嘗試將新技術(shù)應(yīng)用于各產(chǎn)業(yè),就沒有技術(shù)的飛速發(fā)展,就沒有更美好的生活模式的變遷。
AI技術(shù)的平民化是智能時代發(fā)展的催化劑,我們應(yīng)用深度學(xué)習(xí)技術(shù),從原理到框架,再到應(yīng)用平臺化工具將其落地到所有的場景,這是未來的發(fā)展趨勢。得益于5G技術(shù)的發(fā)展,相信在不久的將來,我們將實現(xiàn)萬物互聯(lián)。深度學(xué)習(xí)是AIoT時代的關(guān)鍵,各平臺已有的實踐落地項目給我們提供了產(chǎn)業(yè)落地的實現(xiàn)路徑??芍^星星之火,漸成燎原之勢,另外,發(fā)展我國自己的AI開發(fā)生態(tài)也同樣重要,考慮到近期的“華為事件”,有備無患。
結(jié)尾,我想說的是,框架、平臺都只是為我們提供了工具,我們得明確目標并找到合適的場景,推進應(yīng)用在業(yè)務(wù)上的落地,實現(xiàn)商業(yè)價值才能擁有核心競爭力。
6. 參考
- https://www.techspot.com/article/1582-state-of-5g-wireless/
- https://www.tensorflow.org/
- https://pytorch.org/
- https://www.paddlepaddle.org.cn/
- https://deeplearning4j.org/
- https://chainer.org/
- https://mxnet.incubator.apache.org/
- https://keras.io/
- https://github.com/Theano/Theano
- https://docs.microsoft.com/en-us/cognitive-toolkit/
- https://binaryinformatics.com/pytorch-vs-tensorflow/
- https://www.springboard.com/blog/deep-learning-frameworks/
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】



















































