卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的SGD的并行化設(shè)計(jì)_第1頁(yè)
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的SGD的并行化設(shè)計(jì)_第2頁(yè)
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的SGD的并行化設(shè)計(jì)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的SGD的并行化設(shè)計(jì)前段時(shí)間一直在關(guān)注CNN的實(shí)現(xiàn),查看了caffe的代碼以及convnet2的代碼。目前對(duì)單機(jī)多卡的內(nèi)容比較感興趣,因此特別關(guān)注convnet2關(guān)于multi-GPU的支持。其中cuda-convnet2的項(xiàng)目地址發(fā)布在:GoogleCode:cuda-convnet2關(guān)于multi-GPU的一篇比較重要的論文就是:Oneweirdtrickforparallelizingconvolutionalneuralnetworks本文也將針對(duì)這篇文章給出分析。

1、簡(jiǎn)介介紹一種卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的SGD的并行化方法。兩個(gè)變種模型并行:不同的workers訓(xùn)練模型的不同patrs,比較適合神經(jīng)元活動(dòng)比較豐富的計(jì)算。數(shù)據(jù)并行:不同的workers訓(xùn)練不同的數(shù)據(jù)案例,比較適合weight矩陣比較多的計(jì)算。2.觀察現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)主要由兩種層構(gòu)成,他們具有不一樣的屬性和性能:

1)卷積層,占據(jù)了90%~95%的計(jì)算量,5%的參數(shù),但是對(duì)結(jié)果具有很大的表達(dá)能力。

2)全連接層,占據(jù)了5%~10%的計(jì)算量,95%的參數(shù),但是對(duì)于結(jié)果具有相對(duì)較小的表達(dá)的能力。綜上:卷積層計(jì)算量大,所需參數(shù)系數(shù)W少,全連接層計(jì)算量小,所需參數(shù)系數(shù)W多。因此對(duì)于卷積層適合使用數(shù)據(jù)并行,對(duì)于全連接層適合使用模型并行。3.推薦的算法前向傳播1)Kworkers中的每一個(gè)worker都提供不同的128個(gè)examples的databatch,也就是每一個(gè)worker的數(shù)據(jù)都是不一樣的。

2)每一個(gè)worker都在其databatch上計(jì)算卷積層。每一個(gè)worker的卷積層是按照順序執(zhí)行的。

3)全連接層的計(jì)算,分為以下三種方式:

(a)每一個(gè)worker將其最后階段的卷積層activities傳遞給其他的worker。這些workers將這128K個(gè)examples配置成一個(gè)大的batch,然后在這個(gè)batch上計(jì)算全連接層。

(b)第一個(gè)worker將其最后階段的卷積層activities傳遞給其他workers,這些workers計(jì)算128個(gè)examples配置成的batch并且開始反向傳遞。(與這一次計(jì)算并行的同時(shí),第二個(gè)worker將卷積層的activities傳遞到所有的workers中,即實(shí)現(xiàn)了activities傳遞和計(jì)算之間的流水線)。

(c)全部的workers傳遞128/K個(gè)卷積層的activities到其他的workers,計(jì)算方式同(b)。對(duì)于上述(a~c)三種不同的全連接層實(shí)現(xiàn)方式,進(jìn)行如下的分析:(a)當(dāng)128Kimages配置到每一個(gè)worker的時(shí)候,所有有用的work必須要暫停。另外大的batches消耗大量的顯存,這對(duì)于GPU顯存有限制的設(shè)備是不希望發(fā)生的。另一方面,大的batches有利于GPU性能的發(fā)揮。(b)所有的workers輪流將他們的activities傳播到所有的workers上面。這里輪流執(zhí)行得到的最重要的結(jié)果是可以將大部分傳播通信時(shí)間隱藏(因?yàn)樗梢栽谏弦淮斡?jì)算的時(shí)候,與計(jì)算一起并行處理,確切是K-1次通信時(shí)間可以隱藏)。這樣做的意義非常的重大,可以實(shí)現(xiàn)一部分流水,使得通信時(shí)間隱藏,達(dá)到了很好的并行效果。(c)與(b)的方案類似。他的一個(gè)優(yōu)勢(shì)就是通信與計(jì)算的比例是常數(shù)K,對(duì)于(a)和(b),與K成比例。這是因?yàn)?a)和(b)方案經(jīng)常會(huì)受到每一個(gè)worker的輸出帶寬的限制,方案(c)可以利用所有的workers來完成這一任務(wù),對(duì)于大的K會(huì)有非常大的優(yōu)勢(shì)。反向傳播1)workers按照通常的方式在全連接層計(jì)算梯度。

2)按照前向傳播中不同的實(shí)現(xiàn)方案,這里會(huì)有對(duì)應(yīng)的三種方案:

(a)每一個(gè)worker都為整個(gè)128Kexamples的batch計(jì)算了activities的梯度。所以每一個(gè)worker必須將每一個(gè)example的梯度傳遞給前向傳播生成這個(gè)example的worker上面。這之后,卷積層的反向傳播按照常規(guī)方式獲取。

(b)每一個(gè)worker已經(jīng)為128examples的batch計(jì)算了activities的梯度,然后將這些梯度值傳遞給每一個(gè)與這個(gè)batch相關(guān)的workers上。(在傳播的同時(shí),可以進(jìn)行下一個(gè)batch的計(jì)算)。在經(jīng)過K次前向和反向的傳播,所有的梯度值都將被傳播到卷積層。

(c)與(b)類似。每一個(gè)worker計(jì)算了128examplesbatch的梯度,這128-examplebatch來自于每一個(gè)worker的128/K-examples,所以為了正確的分配每一個(gè)梯度,需要安裝相反的操作來進(jìn)行。Weight權(quán)值矩陣同步一旦反向傳播完成之后,workers就可以更新weight矩陣了。在卷積層,workers也必須同步weight矩陣。最簡(jiǎn)單的方式可以按如下進(jìn)行:

1)每一個(gè)worker指定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論