国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

卷積神經(jīng)網(wǎng)絡(luò)并行訓(xùn)練的優(yōu)化研究

2018-08-21 01:59李相橋田麗華張玉龍
關(guān)鍵詞:梯度通訊服務(wù)器

李相橋,李 晨,田麗華,張玉龍

(1.西安交通大學(xué) 軟件學(xué)院,陜西 西安 710049;2.中航工業(yè)西安飛行自動(dòng)控制研究所,陜西 西安 710065)

0 引 言

近年來(lái),神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別、語(yǔ)音處理等方面取得了巨大的成果并得到了廣泛的關(guān)注。特別是2012年出現(xiàn)的AlexNet卷積神經(jīng)網(wǎng)絡(luò)在圖像分類(lèi)方面取得了巨大的突破,在ImageNet數(shù)據(jù)評(píng)測(cè)集上將錯(cuò)誤率大大降低[1]。之后改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)將錯(cuò)誤率降低到到人類(lèi)水平[2]。在語(yǔ)音處理與理解方面,微軟亞洲研究院以及其他研究學(xué)者們利用神經(jīng)網(wǎng)絡(luò)模型同樣獲得了非凡的效果[3]。

卷積神經(jīng)網(wǎng)絡(luò)(convolution neutral network,CNN)屬于人工神經(jīng)網(wǎng)絡(luò)(artificial neutral network,ANN)的一種,訓(xùn)練時(shí)采用誤差反向傳播算法(back propagation,BP)[4],該算法目前已經(jīng)廣泛應(yīng)用于機(jī)器學(xué)習(xí)和模型識(shí)別中。但由于CNN模型的計(jì)算量巨大,模型訓(xùn)練往往需要消耗大量的時(shí)間。目前一般使用多GPU的方式進(jìn)行并行訓(xùn)練,但在并行的過(guò)程中由于需要相互等待以及配置并行本身會(huì)引入額外的開(kāi)銷(xiāo)。隨著并行度的增大,同步等待時(shí)間不斷增大,使得GPU間的數(shù)據(jù)通訊變得緩慢,從而影響到了模型訓(xùn)練的速度,這無(wú)疑成為目前需要解決的一個(gè)問(wèn)題。

國(guó)內(nèi)外的學(xué)者已經(jīng)針對(duì)神經(jīng)網(wǎng)絡(luò)的并行訓(xùn)練問(wèn)題展開(kāi)了相關(guān)研究。文獻(xiàn)[5]提出了一個(gè)由1 000臺(tái)機(jī)器共16 000塊CPU組成的并行的神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練系統(tǒng)DistBelief,并對(duì)訓(xùn)練算法進(jìn)行了改進(jìn),拋棄傳統(tǒng)的同步算法改為異步的方式。異步算法無(wú)需等待,從而節(jié)省了同步等待時(shí)間,加快了模型的訓(xùn)練速度。但由于異步算法的不確定,無(wú)法保證網(wǎng)絡(luò)模型一定會(huì)收斂,有些神經(jīng)網(wǎng)絡(luò)模型由異步算法訓(xùn)練出來(lái)會(huì)有明顯的性能下降[6]。文獻(xiàn)[7]將每次所用的Minibatch進(jìn)行并行,將訓(xùn)練數(shù)據(jù)均勻劃分給GPU同時(shí)進(jìn)行計(jì)算,節(jié)約所需時(shí)間,同時(shí)還利用支持PCI-E 3.0規(guī)范的Peer-to-Peer協(xié)議來(lái)加速數(shù)據(jù)傳輸。文獻(xiàn)[8]則利用分布式內(nèi)存進(jìn)行模型的并行訓(xùn)練,訓(xùn)練數(shù)據(jù)以及中間結(jié)果都存儲(chǔ)在內(nèi)存中,減少磁盤(pán)I/O帶來(lái)的額外開(kāi)銷(xiāo)。文獻(xiàn)[9]在語(yǔ)音識(shí)別方面,利用多個(gè)GPU構(gòu)建了一個(gè)并行架構(gòu),并取得了不錯(cuò)的效果。文獻(xiàn)[10]對(duì)經(jīng)典的深度學(xué)習(xí)模型進(jìn)行性能測(cè)試,分析了深度學(xué)習(xí)及并行算法的性能問(wèn)題。

在上述研究的基礎(chǔ)上,文中針對(duì)卷積神經(jīng)網(wǎng)絡(luò)并行訓(xùn)練中的參數(shù)通訊以及數(shù)據(jù)加載進(jìn)行進(jìn)一步優(yōu)化,通過(guò)算法流程的重新排布使得計(jì)算和通訊可以同時(shí)進(jìn)行,同時(shí)改進(jìn)通訊的方式以加快數(shù)據(jù)通訊的速度,最后利用異步拷貝與預(yù)加載的方式將訓(xùn)練所需的數(shù)據(jù)提前加載,減少數(shù)據(jù)加載與拷貝的時(shí)間消耗。

1 模型訓(xùn)練

本節(jié)主要分析神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練中的BP算法以及并行訓(xùn)練過(guò)程,確定目前并行過(guò)程中影響并行效率的主要因素。

1.1 BP訓(xùn)練算法流程

假設(shè)一個(gè)神經(jīng)網(wǎng)絡(luò)模型被定義為輸入x到輸出y的映射,表達(dá)形式如下:

y=f(x,w)

(1)

其中,f(x,w)為一種映射;w為模型參數(shù)。

BP算法就是通過(guò)數(shù)據(jù)以及標(biāo)簽信息不斷地迭代計(jì)算,尋找最適合的模型參數(shù)w,使模型達(dá)到最優(yōu)的效果。BP算法的單次計(jì)算過(guò)程分為兩個(gè)部分:前向計(jì)算和后向計(jì)算。前向計(jì)算時(shí),一組輸入數(shù)據(jù)會(huì)逐層經(jīng)過(guò)網(wǎng)絡(luò)模型計(jì)算輸出結(jié)果,中間的每一層都會(huì)使用上一層的輸出作為本層的輸入進(jìn)行計(jì)算。后向計(jì)算中,首先根據(jù)網(wǎng)絡(luò)模型的輸出和真實(shí)的標(biāo)簽進(jìn)行比較,計(jì)算誤差函數(shù),然后將誤差項(xiàng)逐層傳遞并計(jì)算每一層參數(shù)的梯度,最后通過(guò)隨機(jī)梯度下降法(stochastic gradient descent,SGD)調(diào)整模型參數(shù)w,使誤差向減小的方向進(jìn)行。整個(gè)迭代計(jì)算并修改模型參數(shù)w的過(guò)程可以表示為:

wi+1=wi-ηE(wi)

(2)

其中,i為當(dāng)前的迭代次數(shù);η為學(xué)習(xí)率;E為誤差項(xiàng)。

在后向計(jì)算過(guò)程中,每一層根據(jù)來(lái)自上一層的誤差項(xiàng)計(jì)算本層參數(shù)的梯度,并計(jì)算本層的誤差項(xiàng),計(jì)算完成后將本層輸入誤差項(xiàng)傳遞給下一層。由此將誤差信息通過(guò)反向傳播的方式逐漸向下層傳遞。

1.2 并行訓(xùn)練過(guò)程

目前CNN模型的并行訓(xùn)練主要分為模型并行和數(shù)據(jù)并行兩種方式。在文獻(xiàn)[5]中主要利用數(shù)據(jù)并行方式實(shí)現(xiàn)大規(guī)模的并行訓(xùn)練,文獻(xiàn)[11]針對(duì)卷積神經(jīng)網(wǎng)絡(luò)給出了并行策略的使用建議。文獻(xiàn)[12]對(duì)于卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練給出了基于分布式的一些并行策略,文獻(xiàn)[13]中對(duì)數(shù)據(jù)并行與模型并行進(jìn)行了實(shí)驗(yàn)對(duì)比,說(shuō)明了數(shù)據(jù)并行的效率要高于模型并行,因此文中也主要針對(duì)數(shù)據(jù)并行進(jìn)行研究與優(yōu)化。在數(shù)據(jù)并行方式中,每次迭代計(jì)算時(shí)使用的一批數(shù)據(jù)構(gòu)成一個(gè)mini-batch,數(shù)據(jù)并行就是對(duì)mini-batch進(jìn)行劃分,每個(gè)GPU使用部分輸入數(shù)據(jù)進(jìn)行計(jì)算,最終再將所有計(jì)算結(jié)果匯聚起來(lái),進(jìn)行模型參數(shù)更新,其結(jié)構(gòu)如圖1所示。

圖1 數(shù)據(jù)并行結(jié)構(gòu)示意

從圖1可以看出,模型副本首先從參數(shù)服務(wù)器處獲取最新的模型參數(shù),接著在本地使用自己的訓(xùn)練數(shù)據(jù)進(jìn)行一次前向與后向計(jì)算,計(jì)算完成時(shí)將參數(shù)的梯度發(fā)送給參數(shù)服務(wù)器。參數(shù)服務(wù)器收到所有模型副本的梯度后,一般會(huì)利用隨機(jī)梯度下降法更新模型參數(shù)。最后將更新后的模型參數(shù)發(fā)送給各個(gè)模型副本開(kāi)始下一輪的迭代計(jì)算。這種方式與串行訓(xùn)練完全等效,并且實(shí)現(xiàn)也較為簡(jiǎn)單。但在上述過(guò)程中,由于參數(shù)服務(wù)器需要等待所有的模型副本發(fā)送完梯度后才能進(jìn)行參數(shù)更新,這樣已經(jīng)發(fā)送完成的模型副本就需要同步等待。當(dāng)模型副本數(shù)目較多時(shí),各自完成計(jì)算的時(shí)間稍有差異,導(dǎo)致同步等待時(shí)間過(guò)長(zhǎng),從而嚴(yán)重影響模型訓(xùn)練的速度。

2 優(yōu)化策略

針對(duì)上述過(guò)程中影響計(jì)算速度的因素,文中將通過(guò)改變通訊以及訓(xùn)練數(shù)據(jù)加載的方式,減少因等待帶來(lái)的額外開(kāi)銷(xiāo),提高模型訓(xùn)練的效率。

2.1 梯度計(jì)算和參數(shù)通訊的并行化

由1.1節(jié)可知,利用BP算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)分為前向計(jì)算和后向計(jì)算兩個(gè)部分,其中后向計(jì)算主要完成梯度的計(jì)算。在數(shù)據(jù)并行訓(xùn)練過(guò)程中,后向計(jì)算在完成梯度計(jì)算時(shí),還需要將計(jì)算的結(jié)果作為參數(shù)傳遞給參數(shù)服務(wù)器,參數(shù)服務(wù)器則利用接收到的數(shù)據(jù)對(duì)全局模型進(jìn)行更新。這個(gè)過(guò)程中一個(gè)很重要的問(wèn)題就是數(shù)據(jù)傳輸必須在梯度結(jié)果計(jì)算完成后進(jìn)行,這樣當(dāng)參數(shù)量較大時(shí)數(shù)據(jù)的通訊會(huì)消耗較多的時(shí)間。對(duì)于這個(gè)問(wèn)題,文中擬通過(guò)對(duì)計(jì)算流程重新排布的方式來(lái)做到并行執(zhí)行,利用梯度計(jì)算的時(shí)間來(lái)掩蓋參數(shù)通訊的時(shí)間。

由BP算法的介紹可知,在后向計(jì)算時(shí)每一個(gè)網(wǎng)絡(luò)層的梯度計(jì)算依賴(lài)于上一層計(jì)算的誤差項(xiàng),而不依賴(lài)上一層參數(shù)的梯度。下層在計(jì)算參數(shù)的梯度時(shí)不會(huì)對(duì)上層已經(jīng)計(jì)算好的梯度進(jìn)行修改,因此就可以重新排布計(jì)算流程,在下層梯度計(jì)算的同時(shí)可以將上一層計(jì)算后的梯度進(jìn)行傳輸,利用計(jì)算時(shí)間對(duì)通訊時(shí)間進(jìn)行覆蓋,減少額外的開(kāi)銷(xiāo)。參數(shù)的通訊被分解為逐層進(jìn)行,而不必等到所有網(wǎng)絡(luò)層后向計(jì)算完成時(shí)統(tǒng)一進(jìn)行,具體的結(jié)構(gòu)示意如圖2所示。

圖2 后向計(jì)算與數(shù)據(jù)通訊并行示意

參數(shù)服務(wù)器對(duì)于全局模型的更新也可同樣分解為逐層更新,即在第i層進(jìn)行梯度計(jì)算的同時(shí)只要接收完所有模型副本發(fā)送的第i+1層的梯度即可對(duì)第i+1層進(jìn)行參數(shù)更新。通過(guò)這種重新排布計(jì)算流程的方式可以盡可能地利用計(jì)算時(shí)間,通過(guò)流水并行的形式來(lái)減小因數(shù)據(jù)并行帶來(lái)的額外開(kāi)銷(xiāo)。

2.2 基于二叉樹(shù)的歸約通訊

在數(shù)據(jù)并行中,參數(shù)服務(wù)器需要接收所有模型副本的梯度值并進(jìn)行求和,計(jì)算結(jié)果作為一個(gè)mini-batch的梯度進(jìn)行模型參數(shù)的更新。隨著并行規(guī)模的增大,數(shù)據(jù)通訊所需要的時(shí)間不斷增加。特別是在多臺(tái)機(jī)器上進(jìn)行時(shí),雖然梯度計(jì)算可以和參數(shù)通訊同時(shí)進(jìn)行,但由于數(shù)據(jù)通訊所需的時(shí)間較多導(dǎo)致計(jì)算時(shí)間無(wú)法完全掩蓋住通訊所需時(shí)間。

參數(shù)服務(wù)器和模型副本之間實(shí)現(xiàn)數(shù)據(jù)的通訊最簡(jiǎn)單的方式就是采用點(diǎn)對(duì)點(diǎn)通信方式,其通訊過(guò)程如圖3所示。由于參數(shù)服務(wù)器存儲(chǔ)著全部的模型參數(shù)并且所有的模型副本都需要與其進(jìn)行通訊,在模型副本數(shù)目較多時(shí)它作為一個(gè)單節(jié)點(diǎn)存在負(fù)載壓力相對(duì)較大的問(wèn)題,成為瓶頸制約整個(gè)參數(shù)通訊的過(guò)程。

圖3 點(diǎn)對(duì)點(diǎn)串行通訊示意

針對(duì)這個(gè)問(wèn)題,文中設(shè)計(jì)一種基于二叉樹(shù)的歸約通訊方式,其通訊過(guò)程如圖4所示。在基于二叉樹(shù)的歸約通訊中,模型副本間首先進(jìn)行兩兩間的求和運(yùn)算,其次將中間計(jì)算結(jié)果進(jìn)行累加,最終全局求和的結(jié)果匯聚到參數(shù)服務(wù)器處。整個(gè)求和結(jié)果的匯聚過(guò)程如同一棵二叉樹(shù),計(jì)算結(jié)果從葉子節(jié)點(diǎn)不斷向根節(jié)點(diǎn)匯聚。

圖4 歸約通訊示意

與傳統(tǒng)點(diǎn)對(duì)點(diǎn)的串行通訊相比,歸約通訊中各個(gè)節(jié)點(diǎn)相互之間相對(duì)獨(dú)立,因此兩兩求和的過(guò)程可以同時(shí)進(jìn)行,節(jié)省通訊所需的時(shí)間。假設(shè)共有p個(gè)模型副本,單次通訊與求和的時(shí)間為t,則使用歸約通訊時(shí),二叉樹(shù)的高度為log(p),求全局和的總時(shí)間為log(p)t,而串行的通訊求和需要時(shí)間為pt。顯然當(dāng)p較大時(shí),歸約通訊則可以節(jié)省大量的時(shí)間。

利用歸約的通訊方式,原本參數(shù)服務(wù)器的求和任務(wù)被分解為一個(gè)一個(gè)小的子任務(wù)由各個(gè)模型副本共同完成,減少了參數(shù)服務(wù)器的通訊量以及計(jì)算量,解決了參數(shù)服務(wù)器負(fù)載壓力相對(duì)較大的問(wèn)題。

2.3 多流異步拷貝的數(shù)據(jù)預(yù)加載

為了減少每次訓(xùn)練數(shù)據(jù)從硬盤(pán)讀取所帶來(lái)的額外時(shí)間,可以在每一輪進(jìn)行迭代計(jì)算時(shí)將下一次需要用到的數(shù)據(jù)提前加載,這樣利用網(wǎng)絡(luò)模型計(jì)算的時(shí)間覆蓋數(shù)據(jù)加載的時(shí)間。利用預(yù)加載訓(xùn)練數(shù)據(jù)的方式對(duì)數(shù)據(jù)進(jìn)行讀取,在單次計(jì)算完成后,下一次計(jì)算所需的數(shù)據(jù)已經(jīng)加載到內(nèi)存空間中,這樣就可以節(jié)約訪(fǎng)問(wèn)硬盤(pán)所需要的時(shí)間。

考慮到進(jìn)行數(shù)據(jù)的預(yù)加載時(shí),可能會(huì)因?yàn)橛脖P(pán)存在壞道等原因造成讀取數(shù)據(jù)緩慢導(dǎo)致下一次計(jì)算時(shí)所需的數(shù)據(jù)未加載完成,此時(shí)讀取完下一次計(jì)算所需的數(shù)據(jù)還需要消耗一部分額外的時(shí)間。目前訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型時(shí)大多采用GPU進(jìn)行計(jì)算,而GPU無(wú)法直接使用內(nèi)存中的數(shù)據(jù)進(jìn)行數(shù)值計(jì)算,需要將內(nèi)存中的數(shù)據(jù)拷貝到顯存空間中才能使用。因此加載到內(nèi)存中的數(shù)據(jù)仍需要進(jìn)行拷貝過(guò)程才可以被使用,當(dāng)計(jì)算規(guī)模較大時(shí)這種時(shí)間消耗也成為制約計(jì)算并行加速的因素之一。

針對(duì)上述的實(shí)際問(wèn)題,文中設(shè)計(jì)了一種多流異步拷貝的數(shù)據(jù)預(yù)加載優(yōu)化策略。首先,在預(yù)加載單次計(jì)算所需數(shù)據(jù)的基礎(chǔ)上進(jìn)行擴(kuò)展,變?yōu)轭A(yù)加載多次計(jì)算所需數(shù)據(jù)的預(yù)加載,即單緩存變?yōu)槎嗑彺?。利用多個(gè)線(xiàn)程同時(shí)進(jìn)行數(shù)據(jù)的預(yù)加載,這樣即使某個(gè)線(xiàn)程數(shù)據(jù)記載緩慢也會(huì)有其他線(xiàn)程加載的數(shù)據(jù)作為備份,盡可能避免在下一次計(jì)算時(shí)等待數(shù)據(jù)加載完成。其次,利用CUDA中多流的方式進(jìn)行數(shù)據(jù)的異步拷貝,在GPU進(jìn)行計(jì)算的同時(shí)將預(yù)加載在內(nèi)存中的數(shù)據(jù)異步拷貝到GPU顯存空間。利用CUDA提供基于流的操作,創(chuàng)建一個(gè)新的流,在計(jì)算的同時(shí)異步地將數(shù)據(jù)拷貝到GPU顯存空間。下一次迭代計(jì)算開(kāi)始時(shí),預(yù)加載的數(shù)據(jù)已經(jīng)存在于GPU的顯存空間中,此時(shí)只需要進(jìn)行一個(gè)指針的交換將網(wǎng)絡(luò)模型輸入數(shù)據(jù)塊的指針指向已經(jīng)加載好的數(shù)據(jù)塊即可。經(jīng)過(guò)這樣處理后,可以充分利用網(wǎng)絡(luò)模型前向與后向計(jì)算的時(shí)間與數(shù)據(jù)加載的時(shí)間進(jìn)行并行,將數(shù)據(jù)加載帶來(lái)的額外開(kāi)銷(xiāo)減到最小。

3 實(shí) 驗(yàn)

3.1 實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)使用的卷積神經(jīng)網(wǎng)絡(luò)為文獻(xiàn)[2]中的GoogleNet網(wǎng)絡(luò)模型,共含有22個(gè)參數(shù)層。使用的數(shù)據(jù)集為ImageNet圖像數(shù)據(jù)集[14],在該數(shù)據(jù)集上對(duì)GoogleNet網(wǎng)絡(luò)模型進(jìn)行分類(lèi)任務(wù)的訓(xùn)練。實(shí)驗(yàn)平臺(tái)采用多臺(tái)GPU服務(wù)器,其中單臺(tái)服務(wù)器內(nèi)含有2塊Intel Xeon E5-2630 2.4 GHz的CPU,內(nèi)存大小為128 GB,同時(shí)每臺(tái)服務(wù)器配備4塊顯存為12 GB的Nvidia GTX Titian X。實(shí)驗(yàn)中的網(wǎng)絡(luò)環(huán)境采用Infiniband交換機(jī),最大速率可以達(dá)到56 Gb/s。

文中提出的策略在優(yōu)化效率的基礎(chǔ)上,并沒(méi)有引入額外的誤差,因此優(yōu)化后的數(shù)據(jù)并行算法在收斂性方面與原算法保持一致。

3.2 實(shí)驗(yàn)結(jié)果與分析

網(wǎng)絡(luò)模型更新時(shí)的平均單次迭代計(jì)算所消耗的時(shí)間作為一個(gè)性能指標(biāo),用來(lái)衡量?jī)?yōu)化前后的加速效果。在訓(xùn)練GoogleNet網(wǎng)絡(luò)時(shí)使用不同數(shù)目的GPU進(jìn)行實(shí)驗(yàn),數(shù)據(jù)緩存塊數(shù)目設(shè)置為3,每個(gè)GPU作為一個(gè)模型副本進(jìn)行數(shù)據(jù)并行的訓(xùn)練。初始學(xué)習(xí)率為0.1,單個(gè)GPU每次迭代計(jì)算使用的minibatch大小為128。表1給出了在不同GPU數(shù)目下,優(yōu)化前后完成單次迭代計(jì)算時(shí)間的對(duì)比。

表1 優(yōu)化前后單次迭代計(jì)算時(shí)間對(duì)比 s

由表1可以看出,在不同GPU數(shù)目下,優(yōu)化方法的單次迭代計(jì)算時(shí)間都相比優(yōu)化前有所減少。相比GPU數(shù)目為1的基準(zhǔn),GPU數(shù)目為4時(shí)單次迭代計(jì)算時(shí)間較為接近,大部分的通訊時(shí)間以及數(shù)據(jù)加載時(shí)間都被網(wǎng)絡(luò)的前向與后向計(jì)算所掩蓋,并行的加速效果最好。隨著并行度的增大,使用優(yōu)化策略后節(jié)省的時(shí)間不斷增大,說(shuō)明優(yōu)化策略能夠有效提高卷積神經(jīng)網(wǎng)絡(luò)的并行訓(xùn)練效率。

隨著并行GPU數(shù)目的增加,網(wǎng)絡(luò)完成單次迭代計(jì)算時(shí)間不斷增加,額外的開(kāi)銷(xiāo)也不斷增加。單個(gè)GPU完成一批次采樣訓(xùn)練所需的時(shí)間與使用p個(gè)GPU所用時(shí)間的比值為加速比,它作為一個(gè)重要的性能指標(biāo)衡量整個(gè)并行訓(xùn)練的效率。在理想情況下,參數(shù)通訊和數(shù)據(jù)加載都不存在額外開(kāi)銷(xiāo),加速倍數(shù)可以達(dá)到線(xiàn)性加速。圖5展示了文中提出的優(yōu)化策略以及文獻(xiàn)[15]中的優(yōu)化策略所取得的加速倍數(shù)。

圖5 優(yōu)化后加速比與理想加速比對(duì)比

由圖5可以看出,在不同GPU數(shù)目的實(shí)驗(yàn)中,文中的優(yōu)化策略所取得的加速倍數(shù)要高于文獻(xiàn)[15]中的方法。在文獻(xiàn)[15]中,針對(duì)每次訓(xùn)練使用數(shù)據(jù)量較小的情況利用流水線(xiàn)的方式做出了前向計(jì)算與后向計(jì)算并行執(zhí)行的優(yōu)化,提高了GPU的利用率。同時(shí)也采用了預(yù)加載數(shù)據(jù)的方式,利用計(jì)算時(shí)間掩蓋數(shù)據(jù)加載的時(shí)間。此外,還提出在參數(shù)通訊時(shí)盡可能使用服務(wù)器內(nèi)同一PCI-E總線(xiàn)上的GPU,進(jìn)行P2P(peer to peer)通信。文中提出的優(yōu)化策略在參數(shù)通訊方式上進(jìn)行了進(jìn)一步的優(yōu)化,通過(guò)重排計(jì)算流程將參數(shù)通訊隱藏在后向計(jì)算的背后,同時(shí)利用基于二叉樹(shù)的歸約通訊可以大大減少參數(shù)服務(wù)器每次與模型副本參數(shù)通訊所消耗的時(shí)間。在數(shù)據(jù)加載方面,提前將下次計(jì)算所需的數(shù)據(jù)進(jìn)行加載并異步拷貝到GPU的顯存空間中,進(jìn)一步節(jié)省了部分?jǐn)?shù)據(jù)拷貝時(shí)間,同時(shí)多緩存的存在盡可能避免了單緩存因數(shù)據(jù)讀取緩慢而導(dǎo)致的額外等待時(shí)間。相比文獻(xiàn)[15],文中提出的優(yōu)化策略在參數(shù)通訊以及數(shù)據(jù)加載優(yōu)化方面都有進(jìn)一步的提高,因此會(huì)獲得更高的加速倍數(shù)。在GPU數(shù)目為4時(shí),該優(yōu)化策略加速比達(dá)到了3.9,與理論最優(yōu)值4相比已經(jīng)非常接近。隨著GPU數(shù)目的增多,完成參數(shù)通訊時(shí)間也在增加,并且各GPU在計(jì)算時(shí)間上略微的差異都會(huì)在歸約通訊時(shí)間產(chǎn)生一定的影響,使得梯度計(jì)算時(shí)間無(wú)法完全覆蓋通訊時(shí)間,加速比有所下降??傮w來(lái)說(shuō),加速比依然維持在一個(gè)較高的水平,當(dāng)GPU數(shù)目為16時(shí),加速比可以達(dá)到13.5倍。

4 結(jié)束語(yǔ)

針對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練耗費(fèi)時(shí)間較長(zhǎng)的問(wèn)題進(jìn)行了分析,給出了參數(shù)通訊以及數(shù)據(jù)加載兩方面的優(yōu)化方法,包括梯度計(jì)算和參數(shù)通訊的并行、基于二叉樹(shù)的歸約通訊以及多流異步拷貝的數(shù)據(jù)預(yù)加載。通過(guò)梯度計(jì)算和參數(shù)通訊并行的方式,將參數(shù)通訊時(shí)間盡可能減少。同時(shí)利用歸約的通訊方式緩解參數(shù)服務(wù)器作為單節(jié)點(diǎn)壓力較大的問(wèn)題,并減少通訊所需開(kāi)銷(xiāo)。通過(guò)多流異步拷貝的方式預(yù)先加載數(shù)據(jù)并拷貝到GPU的顯存空間中,在下一次計(jì)算時(shí)可以直接使用,減少數(shù)據(jù)加載帶來(lái)的額外開(kāi)銷(xiāo)。通過(guò)在ImageNet數(shù)據(jù)集上對(duì)GoogleNet卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類(lèi)訓(xùn)練,實(shí)驗(yàn)結(jié)果表明優(yōu)化策略能有效減少時(shí)間消耗。特別在GPU數(shù)目為16的情況下,取得了13.5倍的加速效果,大大提高了卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度,有利于卷積神經(jīng)網(wǎng)絡(luò)在實(shí)踐中得到更好的應(yīng)用。

猜你喜歡
梯度通訊服務(wù)器
《茶葉通訊》簡(jiǎn)介
《茶葉通訊》簡(jiǎn)介
磁共振梯度偽影及常見(jiàn)故障排除探討
服務(wù)器組功能的使用
理解Horizon 連接服務(wù)器、安全服務(wù)器的配置
PowerTCP Server Tool
一個(gè)具梯度項(xiàng)的p-Laplace 方程弱解的存在性
基于A(yíng)MR的梯度磁傳感器在磁異常檢測(cè)中的研究
基于數(shù)字虛擬飛行的民機(jī)復(fù)飛爬升梯度評(píng)估
國(guó)內(nèi)首個(gè)AR通訊應(yīng)用浮出水面
华亭县| 沙湾县| 柞水县| 顺义区| 康乐县| 伊川县| 故城县| 双流县| 讷河市| 论坛| 青阳县| 宁明县| 阿瓦提县| 漠河县| 项城市| 赤水市| 青龙| 尚义县| 绍兴县| 宝清县| 宿松县| 广饶县| 沐川县| 铜鼓县| 长丰县| 天台县| 星座| 读书| 商丘市| 安平县| 凭祥市| 佛学| 会昌县| 神木县| 祁门县| 若羌县| 五莲县| 湟中县| 玉屏| 彩票| 玉门市|