新智元推薦 來源:微信公眾號醫(yī)AI (med-ai) 論文作者:Shaohuai Shi, Qiang Wang, Pengfei Xu, Xiaowen Chu 譯者:吳博, Elaine, Melody AI復(fù)始,萬象更新 ! 新智元祝廣大訂戶雞年大吉! 新智元啟動新一輪大招聘:COO、執(zhí)行總編、主編、高級編譯、主筆、運營總監(jiān)、客戶經(jīng)理、咨詢總監(jiān)、行政助理等 9 大崗位全面開放。 簡歷投遞:jobs@aiera.com.cn HR 微信:13552313024 新智元為COO和執(zhí)行總編提供最高超百萬的年薪激勵;為骨干員工提供最完整的培訓(xùn)體系、高于業(yè)界平均水平的工資和獎金。 加盟新智元,與人工智能業(yè)界領(lǐng)袖攜手改變世界。 【新智元導(dǎo)讀】新年伊始,新智元向你推薦香港浸會大學(xué)計算機學(xué)院褚曉文團隊最新論文《基準(zhǔn)評測當(dāng)前最先進的深度學(xué)習(xí)軟件工具》,評測了 Caffe、CNTK、MXNet、TensorFlow、Torch 這五個最受歡迎的DL框架在 FCN、CNN、RNN 上的表現(xiàn)。這是伯克利RISE實驗室大牛、RISC之父 David Patterson 也在關(guān)注的深度學(xué)習(xí)庫評測。論文作者強調(diào)這是一個開源項目,所有配置文件和實驗數(shù)據(jù)均在 http: //www.comp.hkbu.edu.hk/~chxw/dlbench.html 公開,歡迎讀者指正。【進入新智元公眾號,在對話框輸入“0128”下載論文】 在2016年推出深度學(xué)習(xí)工具評測的褚曉文團隊,趕在猴年最后一天,在arXiv.org上發(fā)布了最新的評測版本。這份評測的初版,通過國內(nèi)AI自媒體的傳播,在國內(nèi)業(yè)界影響很大。在學(xué)術(shù)界,其反響更是非同一般。褚曉文教授在1月5日的朋友圈說David Patterson發(fā)郵件咨詢他文章細(xì)節(jié),感慨老人家論文看得仔細(xì)。 David Patterson在體系結(jié)構(gòu)領(lǐng)域的名聲如雷貫耳,RISC之父。不熟悉的吃瓜群眾可能留意到1月25日螞蟻金服宣布跟伯克利大學(xué)前身為AmpLab,更名為RISE實驗室合作的新聞。David Patterson就是RISE實驗室的頂梁大佬之一。 褚曉文教授最新版本的論文對Caffe、CNTK、MXNet、TensorFlow、Torch進行比較評測。在兩個CPU平臺、三個GPU平臺下,比較這五個深度學(xué)習(xí)庫在三類流行深度神經(jīng)網(wǎng)絡(luò)(FCN、CNN、RNN)上的性能表現(xiàn)。并對它們在單機多GPU卡環(huán)境下分布式版本進行了比較。相比以前的評測,最新的評測添加了對多GPU卡的測試,把MXNet納入評比范圍,還測試了MNIST和Cifar10這兩個真實數(shù)據(jù)集。 《基準(zhǔn)評測當(dāng)前最先進的深度學(xué)習(xí)軟件工具》 1. 簡介 在過去十年中,深度學(xué)習(xí)已成功應(yīng)用到不同領(lǐng)域,包括計算機視覺、語音識別和自然語言處理等。深度學(xué)習(xí)的成功,歸因于許多層人工神經(jīng)元對輸入數(shù)據(jù)的高表征能力。而GPU通過顯著縮短訓(xùn)練時間,在深度學(xué)習(xí)的成功中扮演著重要的角色。為了提高開發(fā)深度學(xué)習(xí)方法的效率,有很多開源的深度學(xué)習(xí)工具包,包括伯克利大學(xué)的Caffe,微軟的CNTK,谷歌的TensorFlow,還有Torch,MXNet,Theano,百度的 PaddlePaddle等。這些工具都支持多核CPU和超多核GPU。 深度學(xué)習(xí)的主要任務(wù)之一,是學(xué)習(xí)網(wǎng)絡(luò)的每一層的權(quán)重,這可以通過向量或矩陣運算來實現(xiàn)。TensorFlow使用 Eigen作為矩陣加速庫,而 Caffe、CNTK、MXNet和Torch采用OpenBLAS、Intel MKL 或 cuBLAS 來加快相關(guān)矩陣運算。所有這些工具包都引入了cuDNN,這是一個為神經(jīng)網(wǎng)絡(luò)計算進行GPU加速的深度學(xué)習(xí)庫。但是,由于優(yōu)化方法的差異,加上不同類型的網(wǎng)絡(luò)或使用不同類型的硬件,上述工具包的性能差異很大。 鑒于深度學(xué)習(xí)軟件工具及其底層硬件平臺的多樣化,終端用戶難以選擇合適的平臺來執(zhí)行深度學(xué)習(xí)任務(wù)。在此論文中,作者用三種最主要的深度神經(jīng)網(wǎng)絡(luò)(全連接神經(jīng)網(wǎng)絡(luò)FCN,卷積神經(jīng)網(wǎng)絡(luò)CNN,以及循環(huán)神經(jīng)網(wǎng)絡(luò)RNN)來基準(zhǔn)評測當(dāng)下最先進的基于GPU加速的深度學(xué)習(xí)工具(包括Caffe,CNTK, MXNet, TensorFlow 和Torch),比較它們在CPU和GPU上的運行時間性能。 幾個工具的性能評估既針對合成數(shù)據(jù),也針對真實數(shù)據(jù)。評測的硬件平臺包括兩種CPU(臺式機級別的英特爾i7-3820 CPU,服務(wù)器級別的英特爾Xeon E5-2630 CPU)和三種Nvidia GPU (GTX 980、GTX 1080、Telsa K80,分別是Maxwell、Pascal和Kepler 架構(gòu))。作者也用兩個Telsa K80卡(總共4個GK210 GPU)來評估多GPU卡并行的性能。每種神經(jīng)網(wǎng)絡(luò)類型均選擇了一個小型網(wǎng)絡(luò)和大型網(wǎng)絡(luò)。 該評測的主要發(fā)現(xiàn)可概括如下:
2. 背景及相關(guān)知識 隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,人們針對不同的應(yīng)用場合開發(fā)出各類深度神經(jīng)網(wǎng)絡(luò),包括全連接神經(jīng)網(wǎng)絡(luò)(FCN)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、局限型波茲曼機(RBM)。此論文著重分析三種神經(jīng)網(wǎng)絡(luò)(FCN、CNN和RNN)的運行性能(或時間速度)及收斂速度。 FCN的歷史可追溯到上世紀(jì)80年代,反向傳播算法(backpropagation)發(fā)明之時。而CNN和RNN,一直以來分別在圖像識別和自然語言處理應(yīng)用上展現(xiàn)出優(yōu)異的效果。 FCN是一個前向神經(jīng)網(wǎng)絡(luò),由Yann LeCun等人在1989年成功應(yīng)用于郵編識別。為了減少每一層的參數(shù)數(shù)量,CNN通過使用一組核(kernel),建立了一個卷積層,每個核的參數(shù)在整個域(例如:一個彩色圖像的通道)共享。CNN能減輕全連接層容易導(dǎo)致需要學(xué)習(xí)大量參數(shù)的問題。從LeNet架構(gòu)開始,CNN已經(jīng)實現(xiàn)很多成果,包括ImageNet分類、人臉識別和目標(biāo)檢測。 RNN允許網(wǎng)絡(luò)單元的循環(huán)連接。RNN可以將整個歷史輸入序列跟每個輸出相連,找到輸入的上下文特性和輸出之間的關(guān)系。有了這個特性,RNN可以保留之前輸入的信息,類似于樣本訓(xùn)練時的記憶功能。此外,長短時記憶(LSTM)通過適當(dāng)?shù)赜涗浐蛠G棄信息,能解決RNN訓(xùn)練時梯度消失和爆炸的難題。含LSTM單元的RNN被證實是處理語音辨識和自然語言處理任務(wù)最有效的方法之一。 隨著深度學(xué)習(xí)日益成功,誕生了許多受歡迎的開源GPU加速工具包。其中,Caffe、CNTK、MXNet、TensorFlow和Torch是最活躍、最受歡迎的例子。 Caffe由伯克利視覺和學(xué)習(xí)中心(BVLC)開發(fā),自2014成為開源項目。作者聲稱Caffe可以借助NVIDIA K40或Titan GP卡,每天用GPU加速版本處理4000萬圖像。結(jié)合cuDNN之后,還可以加速約1.3倍。 CNTK是一個由微軟研究院開發(fā)的工具包,支持大部分流行的神經(jīng)網(wǎng)絡(luò)。在2015年2月,官方報道了一個基準(zhǔn)性能測試結(jié)果,針對一個4層全連接神經(jīng)網(wǎng)絡(luò),CNTK與Caffe、TensorFlow、Theano和Torch對比,速度要快上1.5倍。 MXNet是一個支持多種語言的深度學(xué)習(xí)框架,旨在提供更靈活有效的編程接口,以提升生產(chǎn)效率。 TensorFlow由谷歌開發(fā),它使用數(shù)據(jù)流圖集成了深度學(xué)習(xí)框架中最常見的單元。它支持許多最新的網(wǎng)絡(luò)如CNN,以及帶不同設(shè)置的RNN。TensorFlow是為超凡的靈活性、輕便性和高效率而設(shè)計的。 Torch是一個科學(xué)計算框架,它為機器學(xué)習(xí)里最為有用的元件——如多維張量——提供數(shù)據(jù)結(jié)構(gòu)。 (a) 全連接神經(jīng)網(wǎng)絡(luò) (b) 卷積神經(jīng)網(wǎng)絡(luò)(AlexNet) (c) 循環(huán)神經(jīng)網(wǎng)絡(luò) 圖1:深度學(xué)習(xí)模型的例子 為了加快深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度,有的使用CPU SSE技術(shù)和浮點SIMD模型來實現(xiàn)深度學(xué)習(xí)算法,相比浮點優(yōu)化的版本能實現(xiàn)3倍加速。Andre Viebke等人利用多線程及SIMD并行化在英特爾Xeon Phi處理器上加速CNN。針對多GPU卡的并行化,Jeffrey Dean等人提出了一種大規(guī)模分布式深度網(wǎng)絡(luò),開發(fā)了兩種算法(Downpour SGD和Sandblaster L-BFGS),可以在混有GPU機器的集群上運行。 加快訓(xùn)練方法的另一種方式是減少要學(xué)習(xí)的參數(shù)數(shù)量,Song Han等人使用修剪冗余連接的方法,在不失去網(wǎng)絡(luò)表征能力下減少參數(shù),這可以減少670萬到6100萬的AlexNet參數(shù)。Bahrampour等人也做了類似的性能評測工作,但他們僅用了一個GPU架構(gòu)(NVIDIA Maxwell Titan X)和舊版的軟件(cuDNN v2, v3)。 本文作者早前工作也探討了單個GPU上跑舊版軟件的基準(zhǔn)測試結(jié)果。此文針對三版主要的GPU架構(gòu)和一些最新的網(wǎng)絡(luò)(如:ResNet-50)和軟件(如:cuDNN v5)進行基準(zhǔn)評測,并深入到工具包代碼分析性能。此外,本文也比較了單臺機器里多個GPU卡的性能。 因為單個GPU卡內(nèi)存相對較少,限制了神經(jīng)網(wǎng)絡(luò)規(guī)模,訓(xùn)練的可伸縮性對于深度學(xué)習(xí)框架至關(guān)重要。在如今的深度學(xué)習(xí)工具中,支持多GPU卡成為了一個標(biāo)準(zhǔn)功能。為了利用多個GPU卡,分布式同步隨機梯度下降法(SDG)使用很廣泛,實現(xiàn)了很好的擴展性能。 在可擴展性方面,本文作者著重評估處理時間,以及數(shù)據(jù)同步方法的收斂速度。在數(shù)據(jù)并行模型里,針對N個worker,把有M個樣本的一個mini-batch分成N份,每份M/N個樣本,每個worker用相同的模型獨立向前向后處理所分配的樣本。當(dāng)所有worker完成后,把梯度聚合,更新模型。 實際上,不同工具實現(xiàn)同步SGD算法的方式各有不同。
3. 評測方法 處理時間(Processing time)及收斂速度(Convergence rate)是用戶訓(xùn)練深度學(xué)習(xí)模型時最看重的兩個因素。因此該實驗主要通過測量這兩個指標(biāo)以評估這幾種深度學(xué)習(xí)工具。 一方面,評估處理時長有一種高效且主流的方法,就是測出對一個mini-batch所輸入數(shù)據(jù)一次迭代的時長。在實際操作中,經(jīng)歷多輪迭代或收斂以后,深度學(xué)習(xí)的訓(xùn)練過程會終止。因此,對于每種神經(jīng)網(wǎng)絡(luò),該實驗使用不同大小的mini-batch來評測各個深度學(xué)習(xí)軟件工具。作者針對每種大小的mini-batch都多次迭代,最后評估其平均運行速度。另一方面,由于數(shù)據(jù)并行化可能影響收斂速度,該評測還在多GPU卡的情況下比較了收斂速度。 評測使用合成數(shù)據(jù)集和真實數(shù)據(jù)集。合成數(shù)據(jù)集主要用于評估運行時間,真實數(shù)據(jù)集用于測量收斂速度。每種工具的時間測量方法如下:
這幾種工具均提供非常靈活的編程API或用于性能優(yōu)化的配置選項。例如CNTK中可以在配置文件中指定“maxTempMemSizeIn-SamplesForCNN”選項,以控制CNN使用的臨時內(nèi)存的大小,雖然可能導(dǎo)致效率略微降低,但是內(nèi)存需求更小了。 MXNet、TensorFlow和Torch也有豐富的API,在用于計算任務(wù)時供用戶選擇。換句話說,可能存在不同API以執(zhí)行相同的操作。因此本評測結(jié)果僅僅是基于作者對這些工具用法的理解,不保證是最佳配置下的結(jié)果。 評測中的深度學(xué)習(xí)軟件版本和相關(guān)庫如表1所示。 表1:用于評測的深度學(xué)習(xí)軟件 神經(jīng)網(wǎng)絡(luò)和數(shù)據(jù)集:對于合成數(shù)據(jù)的測試,實驗采用具有約5500萬個參數(shù)的大型神經(jīng)網(wǎng)絡(luò)(FCN-S)來評估FCN的性能。同時選擇ImageNet所選的AlexNet和ResNet-50作為CNN的代表。 對于真實數(shù)據(jù)的測試,為MNIST數(shù)據(jù)集構(gòu)建的FCN(FCN-R)較??;針對Cifar10數(shù)據(jù)集則使用名為AlexNet-R和ResNet-56的AlexNet架構(gòu)。對于RNN,考慮到主要計算復(fù)雜度與輸入序列長度有關(guān),作者選擇2個LSTM層進行測試,輸入長度為32。每個網(wǎng)絡(luò)的詳細(xì)配置信息如表2和表3所示。 表2:合成數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)設(shè)置。注意:FCN-S有4層隱藏層,每層2048個節(jié)點;并且AlexNet-S中排除了batch normalization操作和dropout操作;為了測試CNN,輸入數(shù)據(jù)是來自ImageNet數(shù)據(jù)庫的彩色圖像(維度224×224×3),輸出維度是ImageNet數(shù)據(jù)的類別數(shù)量。 表3:真實數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)設(shè)置。注:FCN-R有3個隱藏層,節(jié)點數(shù)分別為2048、4096和1024。AlexNet-R的架構(gòu)與原始出處里Cifar10所用的AlexNet相同,但不包括本地響應(yīng)規(guī)范化(LRN)操作(CNTK不支持)。對于ResNet-56,作者沿用了最原始文件里的架構(gòu)。 硬件平臺:評測使用兩種類型的多核CPU,其中包括一個4核臺式機級CPU(Intel i7-3820 CPU @ 3.60GHz)和兩個8核服務(wù)器級CPU(Intel XeonCPU E5-2630 v3 @ 2.40GHz),測試不同線程數(shù)下各個工具的性能。另外還用三代不同的GPU卡,分別是采用Maxwell架構(gòu)的NVIDIA GTX 980 @ 1127MHz,采用Pascal架構(gòu)的GTX 1080 @1607MHz,以及采用Kepler架構(gòu)的Telsa K80 @ 562MHz。 評測只使用K80 GPU兩個GK210芯片中的一個進行單GPU比較,同時,為了使得結(jié)果可重復(fù),已禁用GPU自動超頻功能。為了避免神經(jīng)網(wǎng)絡(luò)大小對主機內(nèi)存的依賴,兩臺測試機分別配備64GB內(nèi)存和128GB內(nèi)存。硬件配置的詳細(xì)信息如表4所示。 表4:本評測的硬件設(shè)置。注:K80卡上有2個GK210 GPU,但為了比較測試單GPU性能僅使用一個GPU。 數(shù)據(jù)并行化評測則在兩個Tesla K80卡上進行,這樣共有4個GK210 GPU。對于多GPU卡實驗,系統(tǒng)配置如表5所示。 表5:數(shù)據(jù)并行性的評測硬件設(shè)置。注:K80卡上有兩個GK210 GPU,因此進行雙GPU并行評測時使用一個K80卡,進行四GPU并行評測時使用兩個K80卡。 各神經(jīng)網(wǎng)絡(luò),軟件工具和硬件的組合結(jié)果如表6所示。 表6:各神經(jīng)網(wǎng)絡(luò)、軟件工具和硬件的組合結(jié)果 4. 評測結(jié)果 評測結(jié)果分別在三個子部分呈現(xiàn):CPU結(jié)果,單GPU結(jié)果和多GPU結(jié)果。對于CPU結(jié)果和單GPU結(jié)果,主要關(guān)注運行時長;對于多GPU還提出了關(guān)于收斂速度的比較。不同平臺上的主要評測結(jié)果參見表7及表8。 表7:評測對比結(jié)果(每個mini-batch的運算時間,單位:秒)。注:FCN-S,AlexNet-S,ResNet-50,F(xiàn)CN-R,AlexNet-R,ResNet-56和LSTM的mini-batch大小分別為64,16,16,1024,1024,128,128。 表8:單GPU與多GPU間的比對結(jié)果(每個mini-batch的運算時間,單位:秒)。注:FCN-R,AlexNet-R和ResNet-56的mini-batch大小分別為4096,1024和128。 4.1. CPU評測結(jié)果具體參見表7及原文。 4.2. 單GPU卡評測結(jié)果在單GPU的比較上,該評測還展示了不同mini-batch大小的結(jié)果,以展示mini-batch大小對性能的影響。(譯者注:原論文結(jié)論中詳細(xì)描述了不同mini-batch大小下各學(xué)習(xí)工具的性能,具體見圖表) 4.2.1. 合成數(shù)據(jù)(Synthetic Data)FCN-S:Caffe最佳,其次是CNTK和Torch,最后是TensorFlow及MXNet。 AlexNet-S:MXNet性能最佳,其次是Torch。 ResNet-50:MXNet性能遠(yuǎn)遠(yuǎn)高于其他工具,尤其是mini-batch大小比較大的時候。其次是CNTK和TensorFlow,Caffe相對較差。 4.2.2. 真實數(shù)據(jù)(Real Data)FCN-R:Torch最佳,Caffe、CNTK及MXNet三個工具次之,TensorFlow最差。 AlexNet-R:K80 平臺上CNTK表現(xiàn)最佳,Caffe和Torch次之,然后是MXNet。TensorFlow處理時間最長。 ResNet-56:MXNet最優(yōu),其次是Caffe、CNTK 和Torch,這三個接近。最后是TensorFlow。 LSTM:CNTK全面超越其他工具。 4.3.多GPU卡評測結(jié)果FCN-R:單GPU的情況下,Caffe、CNTK及MXNet接近,TensorFlow和Torch稍差。GPU數(shù)量翻番時,CNTK和MXNet的可擴展性最佳,均實現(xiàn)了約35%的提速,caffe實現(xiàn)了大約28%的提速,而Torch和TensorFlow只有約10%。GPU數(shù)量變?yōu)?個時,TensorFlow和Torch沒有實現(xiàn)進一步的提速。 而收斂速度往往隨著GPU數(shù)量的增加而增快。單個GPU時,Torch的訓(xùn)練融合速度最快,其次是Caffe、CNTK和MXNet,TensorFlow最慢。當(dāng)GPU的數(shù)量增加到4時,CNTK和MXNet的收斂速度率接近Torch,而Caffe和TensorFlow收斂相對較慢。 AlexNet-R:單個GPU時,CNTK,MXNet和Torch性能接近,且比Caffe和TensorFlow快得多。隨著GPU數(shù)量的增長,全部工具均實現(xiàn)高達40%的提速,而TensorFlow只有30%。 至于收斂速度,MXNet和Torch最快,CNTK稍慢,但也比Caffe和TensorFlow快得多。 ResNet-56:單GPU時,Torch用時最少。多個GPU時,MXNet往往更高效。 至于收斂速度,整體來說MXNet和Torch比其他三個工具更好,而Caffe最慢。 5. 討論 對于CPU并行,建議線程數(shù)不大于物理CPU內(nèi)核數(shù)。因為在計算過程中需要額外的CPU資源來進行線程調(diào)度,如果CPU資源全部用于計算則難以實現(xiàn)高性能。然而,借助于Eigen的BLAS庫(BLAS library),因其為了SIMD指令優(yōu)化過,因此隨著CPU內(nèi)核數(shù)的增長,TensorFlow的性能能更好。 在FCN神經(jīng)網(wǎng)絡(luò)上,如果只用一個GPU卡,那么Caffe、CNTK和Torch的性能要比MXNet和TensorFlow略好。 通常來說,訓(xùn)練一個網(wǎng)絡(luò)包含兩階計算(即前饋和后向傳播)。在前饋階段,矩陣乘法是最耗時的操作,評測的四個工具全部采用cuBLAS API:cublasSgemm。如果想要把矩陣A乘以矩陣B的轉(zhuǎn)置,可以將cublasSgemm API的第二個參數(shù)設(shè)置為CUBLAS_OP_T,即應(yīng)用in-place矩陣轉(zhuǎn)置。但這就導(dǎo)致與沒有轉(zhuǎn)置的矩陣乘法相比,性能減慢3倍(例如,C = A×B^T,其中 A∈R^1024×26752 ,B∈R^2048×26752)。這是因為in-place矩陣轉(zhuǎn)置非常耗時。CNTK和TensorFlow構(gòu)造自己的數(shù)據(jù)結(jié)構(gòu),從而用的是cublasSgemm的CUBLAS_OP_N,而Caffe和Torch使用CUBLAS_OP_T。 在后向傳播的階段,則需要使用矩陣乘法來計算梯度,并使用element-wise矩陣運算來計算參數(shù)。如果通過調(diào)用cuBLAS來將A乘以B的轉(zhuǎn)置,效率低時,可先轉(zhuǎn)置B(如果GPU具有足夠的內(nèi)存,則采用out-place)再應(yīng)用矩陣乘法可能會效果更好。 此外,cublasSgemm API完全支持后向傳播,因為它在矩陣乘法后添加了一個縮放的矩陣。因此,如果將梯度計算和更新操作合并到單個GPU核中,則可以提高計算效率。為了優(yōu)化FCN的效率,還可以在不轉(zhuǎn)置的情況下使用cublasSgemm API,并同時使用cublasSgemm來計算梯度及執(zhí)行更新操作。 在CNN上,所有工具包均使用cuDNN庫進行卷積運算。盡管API調(diào)用相同,但是參數(shù)可能導(dǎo)致GPU內(nèi)核不同。相關(guān)研究發(fā)現(xiàn),在許多情況下,與直接執(zhí)行卷積運算相比,F(xiàn)FT是更合適的解決方案。在矩陣的FFT之后,卷積計算可以被轉(zhuǎn)換為更快速的內(nèi)積運算(inner product operation)。 對于使用多個GPU卡的數(shù)據(jù)并行性,運算的擴展性受到梯度聚合處理的極大影響,因為其需要通過PCI-e傳輸數(shù)據(jù)。在本評測的測試平臺中,Telsa K80的PCIe 3.0的最高吞吐量約為8GB/秒,這意味著在FCN-R情況下需要0.0256秒的時間將GPU的梯度轉(zhuǎn)移到CPU。但是一個mini-batch的計算時間只有大約100毫秒。因此,減少GPU和CPU之間傳輸數(shù)據(jù)的成本將變得極為關(guān)鍵。 不同軟件工具的性能表現(xiàn)各異,且與并行設(shè)計的策略相關(guān)。在Caffe中,梯度更新在GPU端執(zhí)行,但它使用了樹減少策略(tree reduction strategy)。如果說有4個GPU用于訓(xùn)練,則兩對GPU將首先各自交換梯度(即GPU 0與GPU 1交換,GPU 2與GPU 3交換),然后GPU 0與GPU 2交換。之后,GPU 0負(fù)責(zé)計算更新的模型,再將模型傳送到GPU 1,然后0將模型傳送到1,2傳送模型到3,這是一個并行過程。 因此,Caffe的可擴展性(scalability)的性能在很大程度上取決于系統(tǒng)的PCI-e拓?fù)?。CNTK的作者在框架中添加了1比特的隨機梯度下降(1-bit stochastic gradient descent),這意味著PCI-e交換梯度的時間可大大縮短。因此,即使使用大型網(wǎng)絡(luò),CNTK的可伸縮性也依舊表現(xiàn)良好。 在這類網(wǎng)絡(luò)上,MXNet也表現(xiàn)出良好的可擴展性,因為它是在GPU上進行梯度聚合,這不僅減少了經(jīng)常傳輸梯度數(shù)據(jù)的PCI-e時間,并能利用GPU資源來進行并行計算。 然而,TensorFlow在CPU端進行梯度聚合和模型更新,這不僅需要很多時間通過PCI-e傳輸梯度,而且還使用單個CPU更新串行算法中的模型。因此TensorFlow的伸縮性不如其他工具。 對于多個GPU,Torch在擴展性上與TensorFlow類似。其梯度聚合和更新都在CPU端執(zhí)行,但Torch使用了并行算法來利用所有空閑的CPU資源。因此,其伸縮性要略好于TensorFlow,但仍然比不上Caffe、CNTK和MXNet。 總的來說,因為有了GPU計算資源,上述所有深度學(xué)習(xí)工具的速度與CPU的版本相比,都有了極大提高。這并不出奇,因為在GPU上的矩陣乘法以及FFT的性能要明顯優(yōu)于CPU。 未來作者還將評測更多的深度學(xué)習(xí)工具(比如百度的Paddle),也會把 AMD的GPU等也加入評測。并在高性能GPU集群上進行評測。 論文作者強調(diào)這是一個開源項目,所有配置文件和實驗數(shù)據(jù)均在 http: //www.comp.hkbu.edu.hk/~chxw/dlbench.html 公開,歡迎讀者指正。 【進入新智元公眾號,在對話框輸入“0128”下載論文】 新智元招聘 職位 執(zhí)行總編、主編 職位年薪:50萬(工資+獎金)-100萬元(工資+獎金+期權(quán)) 工作地點:北京-海淀區(qū) 所屬部門:編輯部 匯報對象:CEO 下屬人數(shù):20人 年齡要求:25 歲至 40 歲 語 言:專業(yè)英語八級以上或海外留學(xué)從業(yè)背景 職位背景:在IT媒體領(lǐng)域有專業(yè)團隊管理經(jīng)驗與主流話語權(quán)學(xué)歷要求:碩士及以上 職位描述:
職責(zé) 全權(quán)負(fù)責(zé)新智元內(nèi)容平臺策劃、生產(chǎn)與運營,對內(nèi)容質(zhì)量、用戶閱讀體驗、影響力負(fù)責(zé)。具體負(fù)責(zé)完成對內(nèi)容平臺定位和規(guī)劃,組建并管理采編團隊,策劃執(zhí)行重點選題,建立和維護供稿作者資源;監(jiān)控公眾號各項數(shù)據(jù)指標(biāo)變動,并以此為基礎(chǔ)改進提升內(nèi)容質(zhì)量。 新智元歡迎有志之士前來面試,更多招聘崗位請訪問新智元公眾號 |
|