秦智勇
摘要:
建立在大型數(shù)據(jù)集上的現(xiàn)代神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)在各個應(yīng)用領(lǐng)域取得不錯的效果,雖然硬件設(shè)備性能不斷提升,但是在一臺機器上進(jìn)行網(wǎng)絡(luò)模型訓(xùn)練可能會花費很長時間。本文介紹了如何使用并行計算從而實現(xiàn)神經(jīng)網(wǎng)絡(luò)的高效分布式訓(xùn)練,以望為之后的研究者提供一定的參考。
關(guān)鍵詞:
分布式;計算并行;數(shù)據(jù)并行;模型并行
中圖分類號:
TP183
文獻(xiàn)標(biāo)識碼:
A
文章編號:
1672-9129(2020)15-0032-01
分布式機器學(xué)習(xí)的目標(biāo)是使機器學(xué)習(xí)算法通過使用計算機集群來從大數(shù)據(jù)中訓(xùn)練具有良好性能的大模型,為此,需要將計算任務(wù),訓(xùn)練數(shù)據(jù)和模型放入分布式內(nèi)存中,在匹配硬件資源和數(shù)據(jù)模型規(guī)模后,進(jìn)行分布式訓(xùn)練,分布式訓(xùn)練可分為并行計算,數(shù)據(jù)并行模式和模型并行模式。
1計算并行分布式訓(xùn)練
計算并行分布式訓(xùn)練中每個節(jié)點都有權(quán)讀取和寫入內(nèi)存中的數(shù)據(jù),因此在這樣的系統(tǒng)中實現(xiàn)分布式學(xué)習(xí)算法,我們不必特殊處理數(shù)據(jù)和模型,我們只需要關(guān)注如何使用適當(dāng)?shù)膬?yōu)化算法即可,這種工作節(jié)點共享內(nèi)存的并行模式稱為計算并行。
2模型并行分布式訓(xùn)練
如果訓(xùn)練的模型太大而不能存儲在本地存儲中,則需要對其進(jìn)行切割劃分,此時可以根據(jù)數(shù)據(jù)的緯度將數(shù)據(jù)劃分在不同的工作節(jié)點上,對于高度非線性的神經(jīng)網(wǎng)絡(luò),每個工作節(jié)點都無法獨立地進(jìn)行參數(shù)形成和更新,需要與其它節(jié)點相結(jié)合。
2.1線性模型。根據(jù)維度將模型和數(shù)據(jù)均勻劃分到不同的工作節(jié)點,采用坐標(biāo)下降法對每個工作節(jié)點進(jìn)行優(yōu)化,對于線性模型,每個變量的目標(biāo)函數(shù)是可分離的,即特定維度的更新或梯度參數(shù)更新僅取決于與目標(biāo)函數(shù)值相關(guān)的一些全局變量,而不取決于其他維度的參數(shù)值。要更新本地參數(shù),我們只需要對這些全局變量進(jìn)行通信而無需與其他節(jié)點的模型參數(shù)通信。
2.2神經(jīng)網(wǎng)絡(luò)。由于神經(jīng)網(wǎng)絡(luò)的強非線性,參數(shù)之間的依賴性遠(yuǎn)遠(yuǎn)大于線性模型。它不能輕易共享,我們也不能使用諸如線性模型之類的功能來通過中間全局變量并行實現(xiàn)高效模型。但是,神經(jīng)網(wǎng)絡(luò)的層級也給并行模型帶來了一些便利,例如,可以通過神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)層進(jìn)行橫向或縱向的劃分,通信內(nèi)容和通信量因不同的分區(qū)模式而有所不同。
2.3橫向按層劃分。當(dāng)神經(jīng)網(wǎng)絡(luò)的層數(shù)很多時,有一種簡單且有效的并行方式是將整個神經(jīng)網(wǎng)絡(luò)橫向地劃分為k個部分,每個工作節(jié)點承擔(dān)一層或多層計算任務(wù),如果某個計算節(jié)點沒有計算所需的信息,它可以向其他工作節(jié)點請求相應(yīng)的信息,在橫向劃分模型時,我們通常會結(jié)合每一層中的節(jié)點數(shù),以盡可能地平衡每個工作節(jié)點的計算量。
2.4縱向跨層劃分。除了寬度之外,神經(jīng)網(wǎng)絡(luò)還具有深度。因此,除了橫向劃分網(wǎng)絡(luò)層之外,還可以縱向劃分網(wǎng)絡(luò)層,即每個層的包含的節(jié)點可以分配給不同的工作節(jié)點,工作節(jié)點存儲并更新這些縱向的網(wǎng)絡(luò)層參數(shù),在正向和反向傳輸中,當(dāng)需要激活函數(shù)和子誤差傳播值時,可以向?qū)?yīng)的工作節(jié)點來請求更新這些參數(shù),橫向劃分網(wǎng)絡(luò)和縱向劃分網(wǎng)絡(luò)在傳輸量和傳輸時間上存在著一定的差異,在真實的應(yīng)用場景中,可以根據(jù)具體的網(wǎng)絡(luò)結(jié)構(gòu)選擇合適的網(wǎng)絡(luò)劃分方法,一般情況下,當(dāng)每一層的神經(jīng)元數(shù)量少,層數(shù)很大,可以考慮橫向分割網(wǎng)絡(luò)。相反,如果每層中的神經(jīng)元數(shù)量大而層數(shù)少,則應(yīng)考慮縱向劃分網(wǎng)絡(luò)。如果神經(jīng)網(wǎng)絡(luò)層的數(shù)量和每層中神經(jīng)元的數(shù)量大,則可以需要將橫向劃分網(wǎng)絡(luò)與縱向劃分網(wǎng)絡(luò)相結(jié)合,以發(fā)揮網(wǎng)絡(luò)劃分的最佳性能。
2.5模型隨機并行。由于橫向和縱向劃分網(wǎng)絡(luò)的成本太大,為此提出了針對大型復(fù)雜神經(jīng)網(wǎng)絡(luò)的隨機分割方法,它的主要原理是發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)具有一定程度的冗余度,可以找到更小的子網(wǎng)絡(luò)在效果差不多的情況下代替原有網(wǎng)絡(luò),這樣就可以根據(jù)一定的條件在原始網(wǎng)絡(luò)中選擇骨架網(wǎng)絡(luò),并將其存儲在每個工作節(jié)點中作為公共子網(wǎng)。除了骨架網(wǎng)絡(luò),每個工作節(jié)點還隨機選擇一些其他節(jié)點來存儲信息來代表骨架網(wǎng)絡(luò)之外的信息,定期地隨機選擇骨架網(wǎng)絡(luò),并且每次選擇的網(wǎng)絡(luò)節(jié)點也是隨機的。
3數(shù)據(jù)并行
3.1參數(shù)平均。數(shù)據(jù)并行是參數(shù)平均最簡單有效的方法,它的主要步驟分為以下五步:第一步是根據(jù)模型的網(wǎng)絡(luò)結(jié)構(gòu)隨機初始化網(wǎng)絡(luò)模型的參數(shù)。第二步是將當(dāng)前參數(shù)集分配給每個工作節(jié)點。第三步,在每個工作節(jié)點訓(xùn)練部分的數(shù)據(jù)集。第四步,將每個工作節(jié)點的參數(shù)平均值視為全局參數(shù)值。第五步,如果訓(xùn)練不涉及訓(xùn)練數(shù)據(jù),則從步驟二繼續(xù)。在該方法中,出去計算成本,額外的成本非常大,網(wǎng)絡(luò)通信和同步的成本可以抵消采用該方法帶來的效率優(yōu)勢,因此,參數(shù)平均方法的平均周期通常大于1。如果平均周期太長,則每個節(jié)點之間得到的參數(shù)相差十分大,均值后的模型效果非常差。。
3.2異步隨機梯度下降。如果參數(shù)同步更新,則參數(shù)均值方法相當(dāng)于基于更新的數(shù)據(jù)并行化。非同步的參數(shù)均值方法即是異步隨機梯度節(jié)點可以花更多的時間計算數(shù)據(jù),而不必等待中間參數(shù)計算的完成,這可以增加分布式系統(tǒng)的數(shù)據(jù)吞吐量。異步隨機梯度下降的節(jié)點可以更快地從其他節(jié)點接收信息,異步隨機梯度下降也有一些缺點。當(dāng)節(jié)點計算梯度值并將其與全局參數(shù)向量合并時,參數(shù)已刷新幾次,此時的參數(shù)可能是無效的,異步機器梯度下降的簡單實現(xiàn)可能會導(dǎo)致非常嚴(yán)重的梯度值過時。
3.3分步式異步隨機梯度下降。分步式異步隨機梯度下降沒有用中心參數(shù)服務(wù)器,而是使用點對點參數(shù)傳遞來學(xué)習(xí)數(shù)據(jù)之間的關(guān)系并進(jìn)行更新,壓縮更新量如此之大,從而使網(wǎng)絡(luò)的通信規(guī)模減少了三個數(shù)量級,具有經(jīng)濟的優(yōu)勢。這種方法的缺點是在訓(xùn)練開始時收斂可能會出現(xiàn)問題,并且縮減和量化過程這將花費一些時間和引入了其他需要檢查的參數(shù)。。
4總結(jié)
根據(jù)不同的應(yīng)用場景采取相應(yīng)的分布式并行模式以減少訓(xùn)練時間、降低訓(xùn)練成本和提高訓(xùn)練效果是基于分布式的神經(jīng)網(wǎng)絡(luò)訓(xùn)練研究的重難點。本文介紹了基于分布式的神經(jīng)網(wǎng)絡(luò)訓(xùn)練的相關(guān)原理和方法,如何更好地發(fā)揮分布式訓(xùn)練的優(yōu)點還需要研究者們進(jìn)行進(jìn)一步的探究。
參考文獻(xiàn):
[1]深度學(xué)習(xí)框架Tensorflow的數(shù)據(jù)并行優(yōu)化調(diào)度研究[D].黃文強.電子科技大學(xué);2019
[2]深度學(xué)習(xí)框架TensorFlow的高效分布式并行算法研究[D].何馬均.電子科技大學(xué);2019
[3]基于HPC環(huán)境的深度學(xué)習(xí)并行優(yōu)化[J].陳孟強,顏子杰,葉彥,吳維剛.計算機工程與科學(xué).2018(S1)