李博文,謝在鵬,毛鶯池,徐媛媛,朱曉瑞,張 基
(河海大學計算機與信息學院,南京 211100)
近年來,深度學習技術已在語音識別[1-2]、計算機視覺[3-4]和自然語言處理[5]等領域得到廣泛應用并取得了眾多研究成果。在深度學習任務中常使用梯度下降(Gradient Descent,GD)算法作為深度神經網絡(Deep Neural Network,DNN)模型訓練的主要算法[6-7],然而由于數據量的爆炸式增長,現有單機系統已無法滿足梯度下降算法對計算資源的龐大需求。分布式技術通過多機協同計算的方式,使用多個計算節點擴充計算性能,可提供梯度下降算法所需的大量計算資源,因此研究梯度下降算法在分布式集群上的并行化計算非常必要[8]。
目前,深度神經網絡分布式訓練中通常使用數據并行化方法,基于數據并行化的梯度下降算法包括同步隨機梯度下降[9](Synchronized Stochastic Gradient Descent,SSGD)和異步隨機梯度下降[10](Asynchronized Stochastic Gradient Descent,ASGD)兩種算法。同步算法在每次迭代過程中通過同步各個節點的狀態來保持狀態一致,因此同步梯度下降能夠保持和單機串行算法相同的收斂方向,從而導致其所需的通信量相對其他算法更多,容易受分布式集群中的通信瓶頸影響,同時計算節點之間需要相互等待傳輸梯度更新結果,從而造成了計算資源的浪費。異步算法則無需等待節點狀態一致,每個節點在更新權值參數時不會檢查其他節點的運行狀態,獨立地更新本地模型到全局模型上,并獲取全局模型參數繼續執行下一步計算,如果在該計算過程中又有其他節點更新了全局模型,那么該節點用于執行下一步計算的全局模型參數就不是最新的,該數據交互模式將導致梯度延遲問題[11-12],而梯度延遲問題又會導致每個節點用于執行下一步計算的全局模型不一致。在大規模分布式集群中,隨著分布式集群中的節點數目增加,節點計算狀態保持一致的概率越來越小,節點之間所需傳輸的信息量逐漸增多,因此無論同步或異步算法,都在大規模分布式集群中存在亟待解決的效率問題。本文提出基于分布式編碼的同步隨機梯度下降算法CSSGD,通過分布式編碼策略[13-14]降低分布式集群上的通信負載。
近年來,分布式并行梯度下降算法得到了廣泛應用,研究人員針對分布式神經網絡訓練開展了大量研究工作,這些工作主要圍繞分布式異構計算和通信負載兩方面展開。分布式集群是典型的異構計算平臺,在該異構計算環境下,每個執行進程的執行速度和任務完成時間均不確定,在同步梯度下降算法中由于系統需要同步每一批次中各個計算節點的狀態,因此最慢節點的速度成為限制分布式集群整體任務運行速度的主要因素。文獻[15-16]通過對每個節點的計算和更新過程進行限時,使每個節點都在已有樣本上進行逐樣本迭代計算,以保證每個節點都能在任意時間內給出一個可用但不完整的中間梯度運算結果,降低了節點異構對整體任務的影響。文獻[17-18]針對大矩陣乘法的并行化問題,提出糾纏多項式碼,使用糾纏多項式碼對矩陣乘法運算進行拆解,并對原始矩陣計算任務添加一定量的冗余以加快運算速度。
此外,并行梯度下降算法還需在各個計算節點之間進行密集地數據交換,因此分布式集群的通信性能也是影響分布式神經網絡訓練性能的主要問題。文獻[19]提出1-Bit 數值量化方案,使用Adagrad算法進行學習率迭代并結合誤差累積回溯,在深度神經網絡中得到一種低通信負載的分布式神經網絡訓練方案。文獻[20]提出批次內并行化方法,使用較小的Block 劃分和基于動量的參數迭代方案提高了分布式神經網絡的訓練速度。文獻[21]提出改進的并行梯度下降算法,在改進算法中每個節點不再將本地計算結果推送給分布式集群中的所有節點,而是隨機選取一部分節點進行更新以降低通信負載。文獻[22]結合MDS 編碼和分布式通信編碼對分布式機器學習中的大矩陣乘法進行優化,有效解決了分布式系統慢節點和通信瓶頸問題,但其在編碼過程中的冗余量較大。
上述文獻分別從不同角度對分布式神經網絡的訓練過程進行分析與改進,然而在針對分布式通信瓶頸和分布式計算異構方面,使用量化或隨機策略不可避免地會影響網絡訓練精確度,而利用MDS 碼則會引入更多的通信冗余。本文設計一種用于同步梯度下降算法的分布式編碼策略,能夠降低分布式集群上的通信負載,并保證分布式神經網絡的訓練精確度。
梯度下降算法是用于求解目標函數最小值的常用優化算法,當網絡模型參數為w、數據集為x和y、目標方程為F(w;x,y)時,計算公式如式(1)所示,迭代過程的計算公式如式(2)所示,其中,?F(w;x,y)為目標函數的一階導數,η為迭代步長,又稱為學習率,t為迭代輪次。在分布式環境下,并行梯度下降算法在每個節點i上求其部分樣本的梯度,計算公式如式(3)所示,最終匯總至全局模型參數w(t) 上的計算公式如式(4)所示。

本文算法是同步梯度下降算法的一種改進形式,算法執行步驟為:1)將目標樣本集合以預設批次大小進行劃分,在添加冗余后將其平均分配到各個節點上;2)每個節點都在已有樣本上執行反向傳播算法,并對中間梯度結果進行編碼,同時將中間梯度結果進行整合,實現數據分組交換;3)每個節點根據接收到的中間結果數據,解碼出該節點所需的內容,繼續執行訓練過程。本文算法在任務分配時使用冗余分發策略,因此每個節點所需的中間結果數據可以從r個包含該數據的節點處獲取,因此每個節點可以僅發送必要數據的1/r,由接收節點自行拼裝完整結果,如圖1 所示。同時,由于多個節點間存在冗余數據,因此一份數據可以被多個節點所共有,使用編碼策略將需要發送的多個數據分片累加,將中間結果數據多播給多個節點,每個節點接收到累加結果后減去已知部分,即可得到所需部分的結果,如圖2所示。本文結合上述兩種策略并將其擴展至梯度矩陣信息交換過程中,提出能夠有效降低梯度下降算法通信負載的方案。

圖1 冗余分發策略Fig.1 Redundant distribution strategy

圖2 編碼策略Fig.2 Coding strategy
本文同步隨機梯度下降算法的偽代碼如算法1所示,具體過程為在給定的訓練數據集F和迭代次數T的情況下獲取當前最終模型參數wf。
算法1本文同步隨機梯度下降算法

本文設計一種任務分配算法,在有n個計算節點的集群上,將訓練數據集F冗余r倍并平均分配到每個節點上,且每個節點上的樣本組合不重復。上述分配過程可以描述為一個簡單的排列組合過程,首先要實現r倍冗余的分配,且每個節點上的數據組合互不重復,需要將每個樣本的r份拷貝發送到任意r個不重復的計算節點上。其次要實現每個節點上的樣本數量一致,將要分配的樣本集合劃分為份,每一份樣本子集都可以對應一個唯一的分發路徑,依照組合結果進行分發,每個節點可以接收到(r?)個樣本集合,完成任務的平均分配。任務分配算法的偽代碼如算法2 所示,具體過程為在給定訓練數據集F、分布式節點集合U和訓練所用的批次大小b的情況下獲取每個計算節點i的本地樣本Di,其中,combinations(U,r) 返回U的r倍所有可能的組合結果,split_into_batch(F,b) 返回按照批次大小劃分后的數據集,split(Fj,C.size)返回Fj平均分為C.size 后的結果集合。
算法2任務分配算法

為闡述算法2 的執行過程,首先定義分布式集群中所有節點的集合為U,如式(5)所示。取U的r倍組合結果記作C,如式(6)所示,在C中的元素個數為。

同樣地,將訓練樣本按照輸入的批次大小b劃分為多個mini batch,并將每個mini batchFj平均分為份并記作P。將Pi和Ci一對一配對,依次將每個Pi發送至對應Ci表示的節點集合上。此時,每個節點上存在的待處理樣本塊個數為μ=r?/n,且每個樣本被拷貝并發送至r個不同節點上。依照上述算法流程可將數據集F平均分配到N中的每個計算節點上,每個節點上的樣本數據數目可根據節點的性能進行動態調整,且在一定限度內不會影響其他節點的負載。
本文通過對中間結果矩陣進行編碼,可壓縮每個節點發送的數據量,同時實現數據多播以減少發送時間。由于在任務分配時使用冗余分發策略,因此每個節點所需的中間結果數據可以從r個包含該數據的節點處獲取,因此每個節點可以僅發送必要數據的1/r,由接收節點自行拼裝完整結果。同時,由于多個節點間存在冗余數據,因此一份數據可以被多個節點共有,使用編碼策略將要發送的多個數據分片累加,將中間結果數據多播給多個節點,每個節點接收到累加結果后減去已知部分,即可得到所需部分的結果。上述編碼過程可在不影響計算速度的情況下有效降低發送的數據量,一般情況下該過程可將數據量降低至樸素方法的1/n。
數據傳輸編碼算法的偽代碼如算法3 所示,具體過程為在給定所有中間結果矩陣的列表B、當前節點N和冗余度r的情況下獲取中間結果集合C,其中,position_of(G,N)返回在編碼過程中節點N獲取梯度矩陣G的拆分子矩陣編號,block_id_of(G)返回用于計算G所使用的樣本塊編號,content_of(G,N)返回在編碼過程中節點N應獲取的對應G的拆分子矩陣,adversary_of(G)返回不具有G的所有節點,get_singularity(T)返回列表T中只出現一次的元素,pack(M,P,J,T)將內容M、P、J、T打包并等待發送。
算法3數據傳輸編碼算法

按照算法3 的執行過程,定義編碼的運算過程發生在節點Ni、神經網絡層Ll、批次樣本Fj和批次樣本中的塊Pq上,四元組(i,l,j,q)表示運算過程發生的環境,例如,在節點Ni和層Ll上批次為Fj且由全局編號為q的樣本塊計算所得的梯度記作G(i,l,j,q)。當某個對象的存在與某個下標對應的維度無關時,將其標記為數學中的任意符號?,例如樣本的存在與神經網絡層數無關,因此在節點Ni上批次為Fj且全局編號為i的樣本塊記作F(i,?l,j,q)。在樣本塊分發完畢后,每個節點在其接收到的樣本塊上執行前向傳播和反向傳播算法,計算以該樣本塊所得損失對網絡參數w(i,l,j,q)的一階梯度,一個塊內所有樣本的對應損失的梯度加和記作G(i,l,j,q)。
將節點Ni在任務分配階段獲得的μ個第j批次樣本塊在層Ll上計算得到的梯度矩陣記作G(i,l,j,?),如式(7)所示。在B(i,l,j,?q)中取r個元素進行組合,將包含個組合結果的結果集記作R(i,l,j,?q),如式(8)所示。將R(i,l,j,?q)中的組合結果記作,如式(9)所示。


圖3 梯度矩陣按列拆分的示例Fig.3 Example for splitting a gradient matrix by column

將Ci中的節點下標編號aq進行升序排序,獲取當前下標節點Nq在升序排列后的節點列表中的位置記作α,例如在節點組合{N1,N2,N3}中,節點N1對應的位置α=0,節點N3對應的位置α=2。獲取位置信息αi并將其添加至組合結果拆分位置信息,同時將該塊編號信息d添加至塊編號信息。對應每個樣本塊都可獲取一個該節點在該樣本塊分發列表中的位置αi,那么可以由上述數據求得,如式(12)所示。遍歷編碼所用的編碼梯度矩陣G(i,l,j,?q)求解Ai,如式(13)所示。疊加所有的Ai并獲取其中僅出現一次的節點,將其添加至編碼包的發送目標列表。

根據編碼時的累加結果和分片規則,解碼時應按照編碼時的運算過程反向求取節點所需的內容。首先通過減法減去節點已知的數據內容,求取未知的數據內容,然后按照分片規則,還原中間結果矩陣,以獲取完整的中間結果。數據傳輸解碼算法的偽代碼如算法4 所示,主要功能為在給定所有中間結果矩陣列表B和接收到的編碼數據包H的情況下輸出矩陣切片(content)、切片編號(parts_id)和切片位置(parts_ position),其中,can_get(B,id) 判斷節點是否包含樣本塊編號為id 所計算出的梯度矩陣,part_of(B,id,pos) 獲取對應編號id 的樣本塊計算出的梯度矩陣的第pos 個拆分子矩陣。
算法4數據傳輸解碼算法

在編碼包中已包含編碼所用樣本塊編號和編碼拆分矩陣的位置信息,依據發送規則可從編碼包中提取節點Ni缺失的信息,將發送編碼包給節點Ni的節點記作Ni,,將節點Ni,發送返回的信息記作。由于編碼包中已包含樣本塊和拆分子矩陣位置信息,因此可利用節點Ni已有的信息解碼未知信息,如式(15)所示。根據任務分配算法,將節點Ni缺失的樣本塊記作-μ,對應這些缺失樣本所需的梯度中間結果記作G(i,l,j,qv),v=1,2,…,-μ。當節點Nq獲取到所有缺失信息后,將其依照拆分規則進行合并,如式(16)所示。當節點Nq獲取到所有樣本塊對應的缺失梯度時,使用式(16)和式(17)計算全局梯度,該全局梯度即進一步迭代所需的模型參數增量,如式(18)所示。

若假設本文同步隨機梯度下降算法的通信負載為Lcoding,傳統不使用多播技術的梯度下降算法的通信負載為Lnormal,則兩者存在式(19)所述的關系:

對上述關系進行證明,具體證明過程如下:使用編碼策略進行任務分發和交換,節點數目為n,數據分配冗余度為r,每個劃分占總批次大小為a1,a2,…,ap,其中p=,每個節點獲取a1,a2,…,ap中的Dhave個樣本塊(如式(20)所示),并缺少其中的Dleft個樣本塊(如式(21)所示)。將節點i包含的所有樣本塊集合記作Di,如式(22)所示。

對于n個節點中任意r個節點組成的節點子集,其中一定存在1 個樣本塊被這r個節點所共有,因為樣本塊分發標簽包含了所有節點編號可以形成的組合,所以任意r個節點必然屬于種選擇中的一個節點,如式(23)所示。同理,對于任意r+1 個節點組成的節點組至少存在個這樣的樣本塊,如式(24)所示。在n個節點組成的集群中共有個節點組,每個節點組選取其中個樣本塊Dexchange進行數據交換,每個節點僅發送由樣本塊Dsend計算所得的數據,如式(25)、式(26)所示。

由于節點Ni完成所有分組交換后數據都不重復,因此其能夠獲得所有的Dleft中間信息,使用個節點組進行完全分組信息交換后,總的多播通信量如式(28)所示。對于具有同樣冗余度的傳統通信方式,每個節點所需通信量如式(29)所示,本文中的冗余度是指在同一樣本塊上進行計算的節點數量。對于不使用冗余策略的普通通信方式,每個節點缺少的數據是相互獨立的,所需的通信量如式(30)所示。綜上,式(19)所述的編碼策略通信負載與傳統方法通信負載之間的關系得以證明。

本文通過神經網絡對SSGD、ASGD和本文CSSGD算法進行分布式訓練實驗,對比在不同節點數目的情況下3 種算法到達指定訓練精確度所需物理時鐘時間和數據傳輸量,并利用集群模擬對上述指標進行實驗驗證,實驗中共使用10 個計算節點,每個計算節點的配置信息如表1 所示。本文使用MNIST 和CIFAR-10數據集在卷積神經網絡(Convolutional Neural Network,CNN)和DNN 上進行實驗。表2 給出CNN 和DNN 在不限時單機執行環境下所得的測試精確度,以此測試精確度作為最優測試精確度,并在實驗中對比3 種算法的測試精確度。

表1 計算節點配置信息Table 1 Configuration information of computing node

表2 實驗數據集上的測試精確度Table 2 Test accuracy on the experimental dataset
為保證浮點數執行編碼運算后的精確度,本文對計算產生的中間結果進行量化,使用32 位整型保存運算所需的浮點數據,設置中間結果區間為[-10,10],取0x7FFFFFFF 為10,取0x80000001 為-10,等區間劃分取值,并使用該量化結果進行運算和編碼。本文在實驗中對不同節點的網絡使用不同的樣本劃分,在2 個節點上只執行二分類,在3 個節點上只執行三分類任務,以此類推,保證每次測試時每個節點都能夠執行相同數據量的任務,分析由通信瓶頸導致的性能損失問題,同時以串行算法測試所得結果作為目標精確度。
本文首先對CSSGD 算法在DNN 與CNN 上的訓練結果進行評估,然后使用SSGD、ASGD 和CSSGD 算法在MNIST 數據集上訓練DNN、在CIFAR-10 數據集上訓練CNN。在訓練過程中,使用10 個訓練節點(ASGD 算法額外使用一個參數服務器)并記錄測試精確度的變化情況。由于CSSGD 算法的目的是減少訓練執行時間,因此實驗著重討論3 種算法到達相同測試精確度的時間。
3.2.1 訓練性能分析
DNN 和CNN 的訓練結果如圖4 和圖5 所示,可以看出CSSGD、SSGD 和ASGD 算法在充足的訓練時間下,均可達到最終的測試精確度。

圖4 利用CSSGD、SSGD 和ASGD 算法訓練DNN 的測試精確度比較Fig.4 Comparison of test accuracy of training DNN with CSSGD,SSGD and ASGD algorithms

圖5 利用CSSGD、SSGD 和ASGD 算法訓練CNN 的測試精確度比較Fig.5 Comparison of test accuracy of training CNN with CSSGD,SSGD and ASGD algorithms
本節實驗著重分析3 種算法訓練所需的時間,在限定的測試精確度下比較算法執行所需的時間以評估算法執行效率。實驗在CNN 和DNN 的原始訓練結果中,在接近目標精確度附近選取一個相對3 種算法差異最大的基準測試精確度進行后續實驗。如圖6、圖7 所示,對于使用MNIST 數據集的DNN,其選取的基準測試精確度為82%,對于使用CIFAR-10 數據集的CNN,其選取的基準測試精確度為70%。下文將針對這組基準測試精確度,比較3 種算法的執行效率。

圖6 DNN 訓練中的基準測試精確度Fig.6 Benchmark test accuracy of DNN training

圖7 CNN 訓練中的基準測試精確度Fig.7 Benchmark test accuracy of CNN training
后續實驗從3 個方面詳細分析了CSSGD 算法的執行效率:1)由于ASGD 算法無獨占通信時間,因此在DNN 和CNN 訓練過程中,對比使用CSSGD 與SSGD 算法在訓練時間和通信總量上的差別;2)針對理論推導結果,通過實驗驗證不同冗余度設置下CSSGD 算法的每批次訓練時間;3)使用相同的樣本數據集和神經網絡在上述集群環境下,對比ASGD、SSGD 和CSSGD 算法訓練至基準測試精確度所需的訓練時間。
3.2.2 DNN 實驗結果分析
圖8 展示了DNN 訓練中SSGD 和CSSGD 算法在MNIST 數據集上達到82%測試精確度所需的時間,其中,SSGD Multicast 和SSGD Unicast 分別表示基于多播技術的SSGD 算法和基于單播技術的SSGD 算法,CSSGDr=2 和CSSGDr=3 分別表示冗余度為2 的CSSGD 算法和冗余度為3 的CSSGD 算法,可以看出CSSGD 算法能夠有效降低SSGD 算法執行所需時間。圖9 展示了DNN 訓練中SSGD Multicast 和CSSGD 算法占用的網絡數據通信總量,可以看出CSSGD 算法占用的網絡數據通信總量相對SSGD 算法更少。

圖8 在DNN 訓練中SSGD 和CSSGD 算法達到基準測試精確度所需時間Fig.8 The time required for SSGD and CSSGD algorithms to reach benchmark test accuracy in DNN training

圖9 在DNN 訓練中SSGD 和CSSGD 算法達到基準測試精確度所需通信總量Fig.9 The total amount of communication required for SSGD and CSSGD algorithms to reach benchmark test accuracy in DNN training
3.2.3 CNN 實驗結果分析
圖10 展示了CNN 訓練中SSGD 與CSSGD 算法在CIFAR-10 數據集上達到70%測試精確度所需的時間。在DNN 訓練過程中產生的權值矩陣相對CNN 更大,容易由于網絡速度限制造成計算瓶頸,如果對該類別網絡使用CSSGD 算法,則可以有效緩解通信瓶頸問題。在CNN 中執行計算所需時間比DNN 更多,因此其對通信瓶頸的影響相對DNN 更小,在使用CSSGD 算法進行編碼梯度下降時,其所能獲得的測試精確度相對DNN 更低。圖11 展示了CNN 訓練中SSGD Multicast 和CSSGD 算法占用的網絡數據通信總量,可以看出CSSGD 算法在CNN和DNN 訓練中都能夠有效降低中間結果的通信總量,但是CNN 計算中數據通信所占時間相較DNN更少,因此數據通信優化對總體執行性能的影響較小。

圖10 在CNN 訓練中SSGD 和CSSGD 算法達到基準測試精確度所需時間Fig.10 The time required for SSGD and CSSGD algorithms to reach benchmark test accuracy in CNN training

圖11 在CNN 訓練中SSGD 和CSSGD 算法達到基準測試精確度所需通信總量Fig.11 The total amount of communication required for SSGD and CSSGD algorithms to reach benchmark test accuracy in CNN training
3.2.4 冗余度分析
根據上文對編碼過程的理論推導可以得出,當所需通信時間與數據通信總量呈線性相關時,CSSGD 算法單一批次訓練所需時間TCSSGD可表示為每批次計算時間和每批次通信時間之和,假設SSGD 多播算法中一個批次計算所需時間為Tcalculate、中間結果傳輸所需時間為Tcommunicate,則TCSSGD可表示為TCSSGD=r·Tcalculate+1/r·Tcommunicate,可以看出,當Tcalculate和Tcommunicate為定值時存在一個確定的冗余度使得TCSSGD最小。本文在8 個計算節點的情況下對不同冗余度的CSSGD 算法單一批次迭代所需時間進行實驗,結果如圖12、圖13 所示,可以看出在DNN 和CNN 訓練中的最佳冗余度分別為3 和2。由實驗結果可以得出和理論推導相同的結論,即在固定的計算時間和傳輸時間下,每個節點都存在確定的冗余度,當冗余度為r時整個分布式集群單一批次的訓練時間最短。

圖12 在DNN 訓練中CSSGD 算法冗余度與單一批次訓練時間的關系Fig.12 The relationship between the redundancy and the training time of single batch of CSSGD algorithm in DNN training

圖13 在CNN 訓練中CSSGD 算法冗余度與單一批次訓練時間的關系Fig.13 The relationship between the redundancy and the training time of single batch of CSSGD algorithm in CNN training
3.2.5 訓練時間分析
本節對比ASGD、SSGD Multicast和最優冗余度下的CSSGD(CSSGD Optimal)算法的實際訓練時間,如圖14 和圖15 所示,由于ASGD 算法異步執行過程導致其執行狀態難以確定,最終收斂所需次數也存在一定的隨機性,因此對ASGD 算法進行10 次實驗取訓練時間的平均值。可以看出,在通信瓶頸問題較嚴重的DNN訓練過程中,CSSGD 算法相對于SSGD 和ASGD 算法可取得明顯的效率提升,在DNN 的分布式訓練中,相對SSGD 和ASGD 平均能減少53.97%和26.89%的訓練時間。在CNN 訓練過程中由于計算執行過程占總執行時間的比例較高,因此通過添加冗余編碼來降低通信負載的CSSGD 算法效率提升較少,但是ASGD 算法需要更多的計算開銷來消除梯度延遲問題帶來的干擾,因此CSSGD 算法相對SSGD 和ASGD 算法效率依然有一定的提升,在CNN 分布式訓練中,相對SSGD 和ASGD 平均能減少39.11%和26.37%的訓練時間。實驗中給出10 個計算節點以內的訓練時間結果,可以看出,ASGD 和CSSGD 算法在分布式系統上的性能不能隨節點數目線性提升,隨著節點數目的增多,ASGD 算法的理論同步更新概率會越來越小,迭代所需時間會繼續增加,CSSGD 算法也會受到額外通信負載和多播帶寬擁塞的影響,但是其在更多節點加入后可更新其最優冗余度參數配置,能夠達到更好的訓練效果。

圖14 在DNN 訓練中SSGD、ASGD 和CSSGD 算法達到基準測試精確度所需時間Fig.14 The time required for SSGD,ASGD and CSSGD algorithms to reach benchmark test accuracy in DNN training

圖15 在CNN 訓練中SSGD、ASGD 和CSSGD 算法達到基準測試精確度所需時間Fig.15 The time required for SSGD,ASGD and CSSGD algorithms to reach benchmark test accuracy in CNN training
本文針對異步隨機梯度下降算法的高通信負載問題,提出一種基于分布式編碼計算的同步梯度下降算法,通過冗余分發策略降低通信負載并消除通信瓶頸對分布式集群的影響。實驗結果表明,當配置合適的超參數時,與SSGD 和ASGD 算法相比,該算法在DNN分布式訓練中能平均減少53.97%和26.89%的訓練時間,在CNN 分布式訓練中能平均減少39.11%和26.37%的訓練時間,降低了分布式集群上的通信負載。下一步將研究并行梯度下降算法在分布式集群上的應用,并分析數值量化誤差對最終損失函數收斂性能的影響。