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