朱傳家 劉 鑫* 方佳瑞
1(江南計(jì)算技術(shù)研究所 江蘇 無錫 214083)2(清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系 北京 100084)
隨著機(jī)器學(xué)習(xí)技術(shù)的快速發(fā)展,深度學(xué)習(xí)已經(jīng)在圖像識(shí)別、語音識(shí)別、自然語言處理等領(lǐng)域進(jìn)行了成功的應(yīng)用[1]。隨著訓(xùn)練數(shù)據(jù)規(guī)模成倍的增長(zhǎng)和深度學(xué)習(xí)模型越來越復(fù)雜,訓(xùn)練這些網(wǎng)絡(luò)非常耗時(shí),訓(xùn)練時(shí)間通常幾天甚至數(shù)周,如何提高訓(xùn)練效率成為研究的熱點(diǎn)。分布式擴(kuò)展技術(shù)是一種有效的方法。分布式擴(kuò)展方式分類的方式有多種,按網(wǎng)絡(luò)通信的內(nèi)容是參數(shù)還是數(shù)據(jù)劃分可以分為數(shù)據(jù)并行和模型并行;按網(wǎng)絡(luò)通信的時(shí)序劃分可以分為同步方式和異步方式。常用的分布式擴(kuò)展方式有參數(shù)服務(wù)器分布式擴(kuò)展方式和去中心化的分布式擴(kuò)展方式兩種。為了更好地使用深度學(xué)習(xí)方法,工業(yè)界推出了多款開源的深度學(xué)習(xí)框架,影響比較廣泛的有伯克利大學(xué)推出的Caffe[2]、Google開發(fā)的Tensorflow[3]、微軟開發(fā)的CNTK[4]、Torch[5]等框架。其中,Caffe完全由C++編寫,具有代碼結(jié)構(gòu)清晰、模塊化好、運(yùn)算效率高、可移植性好的特點(diǎn)。
本文基于國(guó)產(chǎn)超級(jí)計(jì)算平臺(tái)“神威太湖之光”對(duì)開源深度學(xué)習(xí)框架Caffe進(jìn)行了分布式擴(kuò)展研究,對(duì)比了同步方式下參數(shù)服務(wù)器分布式擴(kuò)展方式和去中心化分布式擴(kuò)展方式在大規(guī)模并行時(shí)的性能。本文雖基于國(guó)產(chǎn)超算平臺(tái),但對(duì)大規(guī)模分布式擴(kuò)展有借鑒意義。
“神威太湖之光”是世界上首臺(tái)峰值運(yùn)算速度超過十億億次量級(jí)的超級(jí)計(jì)算機(jī),也是中國(guó)第一臺(tái)全部采用自主技術(shù)構(gòu)建的世界第一的超級(jí)計(jì)算機(jī)[6]。“神威太湖之光”計(jì)算機(jī)系統(tǒng)采用基于高密度彈性超節(jié)點(diǎn)和高流量復(fù)合網(wǎng)絡(luò)的高效能體系結(jié)構(gòu),由高速計(jì)算系統(tǒng)、輔助計(jì)算系統(tǒng)、高速計(jì)算互聯(lián)網(wǎng)絡(luò)、輔助計(jì)算互聯(lián)網(wǎng)絡(luò)、高速計(jì)算存儲(chǔ)系統(tǒng)、輔助計(jì)算存儲(chǔ)系統(tǒng)和相應(yīng)的軟件系統(tǒng)等組成。系統(tǒng)總體架構(gòu)如圖1所示。
圖1 “神威太湖之光”系統(tǒng)架構(gòu)圖
系統(tǒng)峰值運(yùn)算性能125.436 PFLOPS,實(shí)測(cè)LINPACK持續(xù)運(yùn)算性能為93.015 PFLOPS,LINPACK系統(tǒng)效率達(dá)到74.153%,內(nèi)存總?cè)萘? 024 TB,訪存總帶寬4 473.16 TB/s,互聯(lián)網(wǎng)絡(luò)的網(wǎng)絡(luò)鏈路帶寬14 GB/s,I/O聚合帶寬341 GB/s,網(wǎng)絡(luò)對(duì)分帶寬70 TB/s。系統(tǒng)功耗15.371 MW,性能功耗比6 051.131 MFLOPS/W。系統(tǒng)采用40 960個(gè)SW26010異構(gòu)眾核處理器[7]。SW26010處理器采用片上計(jì)算陣列集群和分布式共享存儲(chǔ)相結(jié)合的異構(gòu)眾核體系結(jié)構(gòu),使用64位自主神威指令集,全芯片260核心,芯片標(biāo)準(zhǔn)工作頻率1.5 GHz,峰值運(yùn)算速度3.168 TFLOPS。SW26010處理器的架構(gòu)如圖2所示。
圖2 SW26010異構(gòu)眾核處理器架構(gòu)
深度神經(jīng)網(wǎng)絡(luò)是一種能夠從高維數(shù)據(jù)中提取信息的神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)(CNN)是經(jīng)典的深度學(xué)習(xí)算法。
CNN由輸入層、輸出層和卷積層、池化層等多個(gè)隱藏層組成。輸入層一般為一個(gè)二維向量。卷積層是CNN的核心,用于從輸入層或較低級(jí)別的特征圖提取更高層次的特征。池化層的作用是簡(jiǎn)化卷積層的輸出。輸出層完成對(duì)結(jié)果的預(yù)測(cè),一般為一個(gè)Softmax函數(shù)。CNN組成如圖3所示。
圖3 CNN組成圖
CNN需要為給定的訓(xùn)練數(shù)據(jù)調(diào)整和更新其卷積核參數(shù)或權(quán)重。反向傳播是計(jì)算神經(jīng)網(wǎng)絡(luò)中權(quán)重梯度優(yōu)化所需梯度的有效方法[8]。反向傳播算法包括正向傳播和反向傳播。正向傳播過程中順著網(wǎng)絡(luò)結(jié)構(gòu)依次計(jì)算,最后得到網(wǎng)絡(luò)的輸出結(jié)果;反向傳播過程遵從鏈?zhǔn)椒▌t,計(jì)算損失函數(shù)相對(duì)于權(quán)重的梯度。最后采用優(yōu)化算法對(duì)權(quán)重進(jìn)行更新。
隨機(jī)梯度下降算法(SGD)[9]具有結(jié)構(gòu)簡(jiǎn)單、收斂速度快、效果好的優(yōu)點(diǎn),因此在深度神經(jīng)網(wǎng)絡(luò)算法中得到了廣泛應(yīng)用。在大數(shù)據(jù)背景下,深度神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)并行更多的是通過分布式隨機(jī)梯度下降算法。對(duì)于該算法中參數(shù)更新方式的選擇,目前主要有同步SGD和異步SGD兩種機(jī)制。同步SGD需要利用所有節(jié)點(diǎn)上的參數(shù)信息,而慢節(jié)點(diǎn)所帶來的同步等待使得數(shù)據(jù)并行時(shí)的加速比并不理想。異步SGD雖然單次訓(xùn)練速度快,但是其固有的隨機(jī)性使得網(wǎng)絡(luò)在訓(xùn)練過程中達(dá)到相同收斂點(diǎn)耗費(fèi)的時(shí)間更長(zhǎng),且在訓(xùn)練后期可能會(huì)出現(xiàn)震蕩現(xiàn)象。
隨機(jī)梯度下降算法的并行算法[10]如下:
Wt+1=Wt-ηE(ΔWt)
(1)
式中:Wt為第t次迭代的權(quán)重值;η為學(xué)習(xí)率;ΔWt為第t次迭代W關(guān)于損失函數(shù)的梯度;E(ΔWt)為第t次迭代各節(jié)點(diǎn)W關(guān)于損失函數(shù)的梯度的均值。
Caffe是伯克利視覺和學(xué)習(xí)中心(BVLC)推出的一款深度學(xué)習(xí)框架[2]。它具有以下優(yōu)點(diǎn):(1) 完全基于C++代碼,且結(jié)構(gòu)清晰,層次分明,具有非常好的效率和可移植性;(2) 采用了模塊化的架構(gòu),可以實(shí)現(xiàn)新的數(shù)據(jù)格式、網(wǎng)絡(luò)層、損失函數(shù)等的方便擴(kuò)展;(3) 具有非常完善的開發(fā)交流社區(qū)等。
Caffe模型[11]包括Solver、Nets、Layers和Blobs。Solver是求解器,負(fù)責(zé)協(xié)調(diào)模型的優(yōu)化;Nets、Layers和Blobs組成一個(gè)具體的模型。Nets是網(wǎng)絡(luò),通過逐層定義的方式定義,從數(shù)據(jù)輸入層到損失層自上而下的定義整個(gè)模型。一次迭代可以看作Net的一次正向和反向傳播。Layer是層,也是計(jì)算的基本單元,可以進(jìn)行很多運(yùn)算,比如卷積、池化、內(nèi)積等。blobs是Caffe的標(biāo)準(zhǔn)數(shù)組結(jié)構(gòu),它提供了統(tǒng)一的內(nèi)存接口。
BVLC版Caffe對(duì)多GPU并行有很好的支持,但不支持CPU的分布式擴(kuò)展。國(guó)家超級(jí)計(jì)算無錫中心已經(jīng)成功地將Caffe移植到“神威太湖之光”超級(jí)計(jì)算平臺(tái)上,并針對(duì)申威異構(gòu)眾核處理器開發(fā)出針對(duì)卷積、矩陣乘等深度學(xué)習(xí)核心計(jì)算模塊的算法庫swDNN[12]。swDNN的性能相比K40M圖形處理器上的cuDNN算法庫具有1.91~9.75倍的雙精度浮點(diǎn)數(shù)性能優(yōu)勢(shì)[6]。
隨著數(shù)據(jù)規(guī)模的急劇增大和模型的日趨復(fù)雜,采用分布式擴(kuò)展技術(shù)降低深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)間成為研究熱點(diǎn)。Google的DistBelief[13]和微軟的Adams[14]項(xiàng)目都是利用數(shù)據(jù)并行和模型并行訓(xùn)練大規(guī)模模型的分布式框架。文獻(xiàn)[15]提出了基于GPU集群的模型并行系統(tǒng),文獻(xiàn)[16]提出了基于異步交互的參數(shù)服務(wù)器方式用于解決分布式機(jī)器學(xué)習(xí)問題。Disha Shrivastava等提出了一種基于Apache Spark平臺(tái)的數(shù)據(jù)并行和模型并行混合的分布式方案。
上述的分布式擴(kuò)展方案在速度和精度方面展示了比較好的性能,然而,由于它們對(duì)通信的要求很高且大部分研究基于GPU平臺(tái),因此,我們不能在國(guó)產(chǎn)超算平臺(tái)上照搬上述的研究。我們提出了兩種基于同步方式的數(shù)據(jù)并行方式進(jìn)行Caffe的分布式擴(kuò)展,分別是參數(shù)服務(wù)器分布式擴(kuò)展方式和去中心化分布式擴(kuò)展方式。
參數(shù)服務(wù)器分布式擴(kuò)展方式由一個(gè)或多個(gè)參數(shù)服務(wù)器節(jié)點(diǎn)和多個(gè)計(jì)算節(jié)點(diǎn)組成。參數(shù)服務(wù)器節(jié)點(diǎn)(Parameter Server)存儲(chǔ)和更新全部的網(wǎng)絡(luò)參數(shù)W。計(jì)算節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)的前向特征計(jì)算和反向梯度計(jì)算。反向傳播時(shí),每個(gè)網(wǎng)絡(luò)層從下到上依次計(jì)算損失函數(shù)相對(duì)權(quán)重的梯度,并將所在層的梯度傳遞給參數(shù)服務(wù)器節(jié)點(diǎn)。參數(shù)服務(wù)器接收到所有層梯度信息后進(jìn)行參數(shù)更新操作,并將更新后的參數(shù)傳遞給計(jì)算節(jié)點(diǎn)。參數(shù)服務(wù)器分布式擴(kuò)展方式的架構(gòu)示意如圖4所示。
圖4 參數(shù)服務(wù)器方式架構(gòu)示意圖
我們將一個(gè)SW26010處理器作為一個(gè)節(jié)點(diǎn),采用基于MPI的并行編程語言。選用一個(gè)節(jié)點(diǎn)(通常為0號(hào)進(jìn)程)作為參數(shù)服務(wù)器節(jié)點(diǎn),其他節(jié)點(diǎn)(非0號(hào)進(jìn)程)作為計(jì)算節(jié)點(diǎn)。計(jì)算節(jié)點(diǎn)的數(shù)量根據(jù)分布式擴(kuò)展規(guī)模確定。
在一次迭代中,Caffe中算法實(shí)現(xiàn)流程為:
(1) 0號(hào)進(jìn)程向其他進(jìn)程廣播網(wǎng)絡(luò)參數(shù)。
(2) 非0號(hào)進(jìn)程進(jìn)行正向計(jì)算,從上向下依次計(jì)算每層的特征。
(3) 非0號(hào)進(jìn)程進(jìn)行反向計(jì)算。從下向上依次計(jì)算每層的網(wǎng)絡(luò)參數(shù)相對(duì)于損失函數(shù)的梯度。對(duì)層j,計(jì)算出該層網(wǎng)絡(luò)參數(shù)的梯度信息后,0號(hào)進(jìn)程對(duì)該層梯度信息進(jìn)行聚集操作。每層依次進(jìn)行,直至反向傳播完成。
(4) 所有層的梯度信息聚集操作完成后,0號(hào)進(jìn)程利用梯度信息進(jìn)行網(wǎng)絡(luò)參數(shù)的更新。
算法語言如算法1所示。
算法1參數(shù)服務(wù)器方式分布式擴(kuò)展算法
for(i=0; i { 0號(hào)進(jìn)程向其他進(jìn)程廣播網(wǎng)絡(luò)參數(shù)W; for(j=0; j { 非0號(hào)進(jìn)程 forward_cpu(); } for(j=Net_depth; j > 0; j--) { 非0號(hào)進(jìn)程計(jì)算層j梯度ΔW 0號(hào)進(jìn)程聚集ΔW } 0號(hào)進(jìn)程進(jìn)行梯度平均和參數(shù)更新; } 通過理論分析,我們發(fā)現(xiàn)第3節(jié)中參數(shù)服務(wù)器方式的分布式擴(kuò)展方式具有實(shí)現(xiàn)簡(jiǎn)單的特點(diǎn),但是也存在一些不足,具體表現(xiàn)在兩方面:一是參數(shù)服務(wù)器節(jié)點(diǎn)和多個(gè)計(jì)算節(jié)點(diǎn)之間存在一對(duì)多或多對(duì)一的通信,容易產(chǎn)生通信瓶頸;二是反向傳播過程中,每一層立刻對(duì)梯度信息進(jìn)行聚集操作,通信延遲比較大。針對(duì)這兩個(gè)問題,我們提出了去中心化方式的分布式擴(kuò)展框架。 去中心化方式的分布式擴(kuò)展中所有的節(jié)點(diǎn)都是計(jì)算節(jié)點(diǎn),且節(jié)點(diǎn)之間不分主次。計(jì)算節(jié)點(diǎn)擁有完全相同的完整的初始網(wǎng)絡(luò)參數(shù)。在網(wǎng)絡(luò)優(yōu)化時(shí),每個(gè)計(jì)算節(jié)點(diǎn)進(jìn)行獨(dú)立的網(wǎng)絡(luò)計(jì)算,即正向計(jì)算和反向計(jì)算。在完整的網(wǎng)絡(luò)計(jì)算完成后,計(jì)算節(jié)點(diǎn)對(duì)所有網(wǎng)絡(luò)層的梯度信息進(jìn)行聚集平均操作。計(jì)算節(jié)點(diǎn)自主進(jìn)行參數(shù)更新。 與參數(shù)服務(wù)器分布式擴(kuò)展算法相同,去中心化方式的分布式擴(kuò)展算法實(shí)現(xiàn)時(shí),也將一個(gè)SW26010處理器作為一個(gè)節(jié)點(diǎn),采用基于MPI的并行編程語言。具體的算法實(shí)現(xiàn)可以分為兩部分,即網(wǎng)絡(luò)參數(shù)初始化和網(wǎng)絡(luò)參數(shù)優(yōu)化。網(wǎng)絡(luò)參數(shù)初始化完成所有節(jié)點(diǎn)初始網(wǎng)絡(luò)參數(shù)的同步,整個(gè)訓(xùn)練過程只需要一次網(wǎng)絡(luò)參數(shù)初始化操作;網(wǎng)絡(luò)參數(shù)優(yōu)化通過數(shù)萬次的迭代優(yōu)化實(shí)現(xiàn)。 初始化時(shí),任意節(jié)點(diǎn)(通常為0號(hào)進(jìn)程)進(jìn)行網(wǎng)絡(luò)參數(shù)廣播,完成所有節(jié)點(diǎn)的網(wǎng)絡(luò)參數(shù)同步;后面為上萬次的網(wǎng)絡(luò)參數(shù)優(yōu)化迭代。在一次迭代中,去中心化方式的分布式擴(kuò)展的操作為: (1) 進(jìn)程從上向下對(duì)網(wǎng)絡(luò)中每層進(jìn)行特征計(jì)算; (2) 進(jìn)程從下向上對(duì)網(wǎng)絡(luò)中每層計(jì)算梯度ΔW; (3) 進(jìn)程計(jì)算出所有網(wǎng)絡(luò)層ΔW后,所有進(jìn)程進(jìn)行梯度信息聚集平均操作,聚集平均操作完成后,所有進(jìn)程擁有相同的梯度信息; (4) 所有進(jìn)程自主進(jìn)行網(wǎng)絡(luò)參數(shù)更新。 算法語言如算法2所示。 算法2去中心化分布式擴(kuò)展設(shè)計(jì) 0號(hào)進(jìn)程向其他進(jìn)程廣播網(wǎng)絡(luò)參數(shù)W for(i=0; i { for(j=0; j { 所有進(jìn)程 forward_cpu(); } for(j=Net_depth; j > 0; j--) { 所有進(jìn)程計(jì)算層j梯度ΔW 所有進(jìn)程聚集平均ΔW } 所有進(jìn)程進(jìn)行參數(shù)更新操作; } 由于BVLC版Caffe中每個(gè)網(wǎng)絡(luò)層梯度信息在內(nèi)存中的存放地址是不連續(xù)的,因此,去中心化方式的進(jìn)程梯度信息聚集操作具體實(shí)現(xiàn)時(shí)需要先將網(wǎng)絡(luò)層的梯度信息拷貝到連續(xù)的地址空間再進(jìn)行聚集操作。聚集操作完成后,再將梯度信息從連續(xù)的地址空間拷貝回各網(wǎng)絡(luò)層的梯度存放地址空間。這會(huì)浪費(fèi)大量的時(shí)間,特別是在迭代次數(shù)非常大時(shí)。因此,我們從Caffe框架層面對(duì)Caffe的梯度信息存放方式進(jìn)行了重構(gòu),將各層分散的梯度信息內(nèi)存分布方式改進(jìn)為連續(xù)的內(nèi)存存放方式,如圖5所示。 圖5 Caffe梯度信息內(nèi)存重分配 傳統(tǒng)的MPI_Allreduce算法是為低延遲的網(wǎng)絡(luò)設(shè)計(jì)的,在高性能計(jì)算中,MPI_Allreduce的效率比較低。我們將一種環(huán)狀的聚集算法引入到國(guó)產(chǎn)超級(jí)計(jì)算平臺(tái)上,如圖6所示。 圖6 SW26010 ringAllreduce 其具體步驟為:(1) scatter-reduce;(2) allgather。在第1步中,CPU將交換數(shù)據(jù),使得每個(gè)CPU最終都有一個(gè)最終結(jié)果的數(shù)據(jù)塊。在第2步中,CPU將交換那些塊,使得所有CPU最終得到完整的最后結(jié)果。 RingAllreduce和MPI_Allreduce在神威太湖之光的性能對(duì)比如圖7和圖8所示??梢钥吹?,在常用的深度學(xué)習(xí)模型下,512個(gè)節(jié)點(diǎn)上RingAllreduce相比MPI_Allreduce的性能提升可達(dá)2.3~4.1倍的加速效果。 圖7 RingAllreduce和MPI_Allreduce性能 對(duì)比圖(通信數(shù)據(jù)量為60.97 MB) 圖8 RingAllreduce和MPI_Allreduce性能對(duì)比圖 我們進(jìn)行了兩組實(shí)驗(yàn)以驗(yàn)證分布式擴(kuò)展算法的正確性(精度)和性能。 正確性測(cè)試主要測(cè)試分布式擴(kuò)展后的訓(xùn)練精度是否和單節(jié)點(diǎn)的訓(xùn)練精度一致。我們選取Cifar10模型對(duì)Cifar10數(shù)據(jù)集進(jìn)行訓(xùn)練,分別比較單節(jié)點(diǎn)、參數(shù)服務(wù)器分布式擴(kuò)展方式、去中心化分布式擴(kuò)展方式的訓(xùn)練精度。訓(xùn)練迭代次數(shù)為40 000次。具體參數(shù)及結(jié)果如表1所示。 表1 Caffe單節(jié)點(diǎn)及分布式訓(xùn)練精度表 參數(shù)服務(wù)器分布式擴(kuò)展方式和去中心化分布式擴(kuò)展方式中,網(wǎng)絡(luò)的前向計(jì)算和后行計(jì)算過程是相同的,不同的部分在于前者在每次迭代優(yōu)化中需要進(jìn)行一次網(wǎng)絡(luò)參數(shù)廣播操作和多次梯度信息聚集操作,后者只需要進(jìn)行一次梯度信息聚集操作。因此節(jié)點(diǎn)間的通信時(shí)間是衡量?jī)煞N分布式擴(kuò)展方式性能優(yōu)劣的評(píng)價(jià)標(biāo)準(zhǔn)。 我們?cè)凇吧裢狻背闫脚_(tái)上進(jìn)行實(shí)驗(yàn),一個(gè)SW26010處理器作為一個(gè)節(jié)點(diǎn),處理器選用大共享模式。選擇三個(gè)經(jīng)典的深度學(xué)習(xí)模型Alexnet、GoogleNet和ResNet進(jìn)行實(shí)驗(yàn)。數(shù)據(jù)集采用Imagenet數(shù)據(jù)集。分布式擴(kuò)展規(guī)模最大為512個(gè)計(jì)算節(jié)點(diǎn)。測(cè)試結(jié)果如圖9-圖11所示。 圖9 Alexnet模型下兩種分布式擴(kuò)展通信性能對(duì)比圖 圖10 Googlenet模型下兩種分布式擴(kuò)展通信性能對(duì)比圖 圖11 Resnet模型下兩種分布式擴(kuò)展通信性能對(duì)比圖 5.3.1正確性測(cè)試分析 參數(shù)服務(wù)器分布式擴(kuò)展方式和去中心化的分布式擴(kuò)展方式訓(xùn)練精度與單節(jié)點(diǎn)的訓(xùn)練精度相比,僅下降了0.1%和0.2%,在正常波動(dòng)范圍內(nèi)。這說明參數(shù)服務(wù)器分布式擴(kuò)展方式和去中心化的分布式擴(kuò)展方式的實(shí)現(xiàn)是正確的,得到的結(jié)果也是正確的。 5.3.2性能測(cè)試分析 對(duì)Alexnet網(wǎng)絡(luò),當(dāng)并行規(guī)模小于16時(shí),參數(shù)服務(wù)器方式和去中心化方式通信時(shí)間差別不大;當(dāng)并行規(guī)模大于16時(shí),去中心化方式通信時(shí)間隨著并行規(guī)模的擴(kuò)大增長(zhǎng)緩慢,參數(shù)服務(wù)器方式的聚集時(shí)間卻隨著并行規(guī)模的增加而急劇增長(zhǎng);當(dāng)并行規(guī)模為256時(shí),參數(shù)服務(wù)器方式所需通信時(shí)間是去中心化方式的10倍。 對(duì)GoogleNet網(wǎng)絡(luò),當(dāng)并行規(guī)模小于8時(shí),參數(shù)服務(wù)器方式和去中心化方式梯度聚集時(shí)間差別不大;當(dāng)并行規(guī)模大于8時(shí),去中心化方式梯度聚集時(shí)間隨著并行規(guī)模的擴(kuò)大增長(zhǎng)緩慢,而參數(shù)服務(wù)器方式的通信時(shí)間隨著并行規(guī)模的增加而急劇增長(zhǎng);當(dāng)并行規(guī)模為32時(shí),參數(shù)服務(wù)器方式所需通信時(shí)間是去中心化方式的77倍。 對(duì)ResNet網(wǎng)絡(luò),當(dāng)并行規(guī)模小于8時(shí),參數(shù)服務(wù)器方式和去中心化方式通信時(shí)間差別不大;當(dāng)并行規(guī)模大于8時(shí),去中心化方式通信時(shí)間隨著并行規(guī)模的擴(kuò)大增長(zhǎng)緩慢,參數(shù)服務(wù)器方式的聚集時(shí)間卻隨著并行規(guī)模的增加而急劇增長(zhǎng);當(dāng)并行規(guī)模為32時(shí),參數(shù)服務(wù)器方式所需通信時(shí)間是去中心化方式的98倍。 去中心化的分布式擴(kuò)展方式相比參數(shù)服務(wù)器方式的分布式擴(kuò)展方式在節(jié)點(diǎn)間通信指標(biāo)上可以加速最多達(dá)98倍。這個(gè)結(jié)果是合理的,因?yàn)槿ブ行幕姆植际綌U(kuò)展與參數(shù)服務(wù)器分布式擴(kuò)展相比,在每次迭代中少了網(wǎng)絡(luò)參數(shù)的廣播操作,并將多次的梯度信息聚集操作變?yōu)橐淮翁荻刃畔⒕奂僮?,這減少了網(wǎng)絡(luò)間通信的次數(shù)以及因?yàn)橥蕉鸬臅r(shí)延。 基于上述的設(shè)計(jì)和實(shí)驗(yàn)結(jié)果可得出結(jié)論,去中心化的分布式擴(kuò)展方式明顯優(yōu)于參數(shù)服務(wù)器分布式擴(kuò)展方式。因此,我們將在基于“神威太湖之光”平臺(tái)的Caffe上采用去中心化的分布式擴(kuò)展方式。 本文在“神威太湖之光”平臺(tái)上對(duì)深度學(xué)習(xí)框架Caffe進(jìn)行了基于同步梯度更新方式的分布式擴(kuò)展方式研究。首先實(shí)現(xiàn)了基于同步梯度更新方式的參數(shù)服務(wù)器分布式擴(kuò)展方式;其次實(shí)現(xiàn)了去中心化的分布式擴(kuò)展方式,對(duì)Caffe梯度信息存放內(nèi)存、梯度信息聚集算法等進(jìn)行了改進(jìn)。實(shí)驗(yàn)結(jié)果表明,兩種分布式擴(kuò)展方式均能很好地對(duì)Caffe框架進(jìn)行擴(kuò)展,但是去中心化的分布式擴(kuò)展方式在節(jié)點(diǎn)間的通信效率方面更有優(yōu)勢(shì),是更好的分布式擴(kuò)展算法。4 去中心化方式的分布式擴(kuò)展設(shè)計(jì)
4.1 Caffe梯度內(nèi)存存放位置的重構(gòu)
4.2 梯度信息聚集算法的優(yōu)化
5 實(shí) 驗(yàn)
5.1 正確性驗(yàn)證
5.2 性能測(cè)試
5.3 結(jié)果分析
6 結(jié) 語