1. 程式人生 > >深度學習框架效能對比分析

深度學習框架效能對比分析

下圖總結了絕大多數Github上的開源深度學習框架專案,根據專案在Github的Star數量來評級,資料採集於2017年5月初。

圖片描述

TensorFlow

TensorFlow框架的前身是Google的DistBelief V2,是谷歌大腦專案的深度網路工具庫,一些人認為TensorFlow是借鑑Theano重構的。

Tensorflow一經開源,馬上引起了大量開發者的跟進。Tensorflow廣泛支援包括影象、手寫字、語音識別、預測和自然語言處理等大量功能。TensorFlow遵循Apache 2.0開源協議。

TensorFlow在2017年2月15號釋出了其1.0版本,這個版本是對先前八個不完善版本的整合。以下是TensorFlow取得成功的一些列原因:

TensorFLow提供這些工具:

  • TensorBroad是一個設計優良的視覺化網路構建和展示工具;
  • TensorFlow Serving通過保持相同的伺服器架構和API,可以方便地配置新演算法和環境。TensorFlow Serving 還提供開箱即用的模型,並且可以輕鬆擴充套件以支援其他的模型和資料。

TensorFlow程式設計介面包括Python和C++,Java,Go,R和Haskell語言的介面也在alpha版中支援。另外,TensorFlow還支援谷歌和亞馬遜的雲環境。

TensorFlow的0.12版本支援Windows 7, 8, Server 2016系統。由於採用C++ Eigen庫,TensorFlow類庫可以在ARM架構平臺上編譯和優化。這意味著你可以不需要額外實現模型解碼器或者Python直譯器就可以在多種伺服器和移動裝置上部署訓練好的模型。

TensorFlow提供細緻的網路層使使用者可以構建新的複雜的層結構而不需要自己從底層實現它們。子圖允許使用者檢視和恢復圖的任意邊的資料。這對複雜計算的Debug非常有用。

分散式TensorFlow在0.8版本推出,提供了平行計算支援,可以讓模型的不同 部分在不同裝置上並行訓練。

TensorFlow在斯坦福大學,伯克利學院,多倫多大學和Udacity(2016年3月成立的線上學校)均有教學。

TensorFlow的缺點有:

  • 每個計算流必須構建成圖,沒有符號迴圈,這樣使得一些計算變得困難;
  • 沒有三維卷積,因此無法做視訊識別;
  • 即便已經比原有版本(0.5)快了58倍,但執行效能仍然不及它的競爭者。

Caffe

Caffe是賈揚清的作品,目前,賈揚清是Facebook AI平臺的Lead。始於2013年末,Caffe可能是第一個主流的工業級的深度學習工具包。Caffe具有卓越的卷積模型,是計算機視覺領域最受歡迎的工具之一,且2014年ImageNet 大賽的獲獎作品使用的就是Caffe框架。Caffe遵循BSD 2-Clasuse 協議。

Caffe的高速使得它非常適合於科研和商業領域。利用一個NVIDIA K40 GPU,Caffe可以每天處理60M張圖片,即推斷1毫秒一張,訓練4毫秒一張。使用最新的版本,甚至可以更快。

Caffe底層是用C++實現的,可以在各種裝置上編譯。Caffe是跨平臺的並且提供Windows介面,它提供C++,Python和Matlab語言介面。Caffe擁有著龐大的使用者社群,並且有大量深度網路模型在社群上貢獻,被稱為“Model Zoo”。其中,AlexNet和GoogleNet是最著名的兩個。

Caffe是視覺識別的流行框架,然而Caffe不提供像TensorFlow,CNTK或Theano一樣細粒度的層結構。你必須編寫底層程式碼來構建複雜的層結構。由於它的固有架構,Caffe對迴圈網路和語言模型的支援不力。

Caffe2

賈揚清和他的團隊目前在Facebook致力於Caffe2的研發。2017年4月18號,Facebook基於BSD協議開源了Caffe2。Caffe2聚焦於模組化,在移動裝置和大規模部署均表現出色。和TensorFlow一樣,Caffe2頁使用C++ Eigen以支援ARM架構。

Caffe的模型可以通過指令碼輕鬆轉化成Caffe2模型。Caffe在設計上的傾向使得它特別適合視覺相關的問題,Caffe2沿襲了它對視覺問題的強大支援,同時還加入了RNN和LSTM以更好地支援自然語言處理,手寫字識別和時間序列預測。

可以預見在不遠的將來Caffe2將會替代Caffe在深度學習社群的地位。

Microsoft Cognitive Toolkit

Microsoft Cognitive Toolkit(CNTK)設計的初衷是用於語音識別領域。CNTK支援RNN(迴圈神經網路)和CNN(卷積神經網路),因此他有能力勝任影象、手寫字和語音識別問題。CNTK支援64位Linux和Windows系統,提供Python和C++語言介面,遵循MIT協議。

CNTK與TensorFlow和Theano有著類似的設計理念——把網路定義成向量操作的語義圖,向量操作例如矩陣加法、矩陣乘法以及卷積。同時,CNTK也提供細粒度的網路層設計,允許使用者使用它們設計新的複雜網路。

和Caffe一樣,CNTK底層也是C++實現並具有跨平臺CPU/GPU支援。搭載在Azure GPU Lab上,CNTK能發揮出最高的分散式計算效能。目前,CNTK由於不支援ARM架構,限制了其在移動端的應用。

MXNet

MXNet源自於卡內基梅隆大學和華盛頓大學。MXNet是一個極具特色,可程式設計,可擴充套件的深度學習框架。MXNet可以混合多種語言的模型和程式碼,包括Python, C++, R, Scala, Julia, Matlab, JavaScript。2017年1月30號,MXNet被納為Apache基金會孵化專案。

MXNet支援CNN、RNN、LSTM, 提供對影象,手寫字,語音識別,預測和自然語言問題的強大支援。有人認為,MXNet是世界上最好的影象分類器。

MXNet具有出色的可擴充套件性,例如GPU平行計算,儲存映像,高速開發和可移植性。另外,MXNet可以和Apache Hadoop YARN結合,YARN是一個通用分散式應用管理框架,這一特性使得MXNet成為TensorFlow的競爭者。

MXNet的一個獨特之處是它是少有的幾個支援對抗生成網路(GAN)的框架之一。這個模型被用於實驗經濟學方法中的“納什均衡”

另一個特殊之處是,亞馬遜的CTO Werner Vogels宣佈了對MXNet的支援:“今天,我們宣佈MXNet將成為亞馬遜的深度學習框架選擇。我們將在現有和未來將出現的服務中使用MXNet。”蘋果公司的部分傳聞也表示該公司將會使用MXNet作為其深度學習框架。

Torch

Torch由Facebook的Royan Collobert、Soumith Chintala、曾任於Twitter現任於Nvidia的Clement Farabet和Google Deep Mind 的Koray Kavukcuoglu共同開發。其主要貢獻者是Facebook、Twitter和Nvidia。 Torch遵守BSD 3 clause 開源協議。然而,Facebook近期宣佈將轉向Caffe2作為其首選深度學習框架因為它支援移動裝置開發。

Torch由Lua語言實現,Lua是一種小眾語言,因此若你不熟悉這門語言,會影響到整個工作的效率。

Torch缺少像TensorFlow、MXNet on YARN和Deeplearning4J那樣的的分散式支援,缺少多種語言介面同樣限制了它的受眾。

DeepLearning4J

DeepLearning4J(DL4J)是基於Apache 2.0協議的分散式開源神經網路類庫,它由Java和Scala實現。DL4J是SkyMind的Adam Gibson開發的,它是唯一的商品級深度學習網路,可以和Hadoop、Spark結合構建多使用者多執行緒服務。DL4J是唯一使用Map-Reduce訓練網路而使用其他類庫進行大規模矩陣操作的框架。

DL4J擁有內建的GPU支援,這一重要特效能夠支援YARN上的訓練過程。DL4J擁有豐富的深度神經網路架構支援,包括RBM,DBN,CNN,RNN,RNTN和LSTM。DL4J還支援一個向量計算庫——Canova。

由於是由Java實現,DL4J先天比Python塊,它使用多GPU執行影象識別任務和Caffe一樣快。該框架可以出色完成影象識別,欺詐檢測和自然語言處理任務。

Theano

Theano主要由蒙特利爾大學學習演算法研究所(MILA)創立。Yoshua Bengio是Theano的開創者,同時領導這個實驗室,該實驗室在深度學習研究領域做出巨大的貢獻,培養出約100名相關學生和從業者。Theano支援高效機器學習演算法的快速開發,遵守BSD開源協議。

Theano不像TensorFlow那樣優雅,但它提供了支援迴圈控制(被稱為scan)的API,可以輕鬆實現RNN。

Theano提供多種支援手寫字識別、影象分類(包括醫學影象)的卷積模型。Theano還提供三維卷積和池化用於視訊分類。在語言方面,Theano能勝任例如理解、翻譯和生成等自然語言處理任務。Theano還支援生成對抗網路(GAN),GAN即是由MILA的一位學生提出的。

Theano支援多GPU平行計算並且自帶分散式框架。Theano只支援一種開發語言,比TensorFlow速度快很多,是一種學術研究的有力工具。然而,其不支援移動平臺以及沒有多種語言介面的缺陷限制了它在企業的廣泛應用。