999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

深度神經網絡動態分層梯度稀疏化及梯度合并優化方法

2024-09-15 00:00:00巨濤康賀廷劉帥火久元
西安交通大學學報 2024年9期

摘要:針對數據并行方法加速大規模深度神經網絡時易出現的通信開銷大、訓練耗時長、資源利用率不高的問題,提出了一種深度神經網絡動態分層梯度稀疏化及梯度合并優化方法。首先,將梯度稀疏化壓縮與流水線并行技術相結合,提出動態分層梯度稀疏優化方法,為每層神經網絡匹配一個合適的閾值,通過在后續迭代時動態調整該閾值,實現對每層網絡傳輸梯度的自適應壓縮。然后,提出了層梯度合并方法,利用動態規劃算法對層梯度合并時的通信開銷、稀疏化及層梯度計算時間進行權衡優化,求解出最佳的層梯度合并組合,并將多層小尺度梯度張量合并為一層通信,以降低分層梯度決策時引入的過高通信延遲開銷。最后,將求解出的最佳層梯度合并組合應用于具體的訓練迭代過程。實驗結果表明:與已有方法相比,所提方法可在保證模型訓練精度的同時大大降低通信開銷,提升模型的訓練速度;與未壓縮方法相比,訓練速度最大可提升1.99倍。

關鍵詞:深度神經網絡;分布式訓練;同步數據并行;梯度壓縮;層梯度合并

中圖分類號:TP311 文獻標志碼:A

DOI:10.7652/xjtuxb202409011 文章編號:0253-987X(2024)09-0105-12

A Dynamic Layer-Wise Gradient Sparsity and Gradient Merging Optimization Method for Deep Neural Networks

JU Tao, KANG Heting, LIU Shuai, HUO Jiuyuan

(School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China)

Abstract:A dynamic layer-wise gradient sparsity and gradient aggregation optimization strategy for deep neural networks is proposed to address the challenges posed by substantial communication overhead, prolonged training duration, and suboptimal resource utilization associated with the acceleration of large-scale deep neural networks through data parallelism. Initially, a dynamic layer-wise gradient sparsity optimization method is proposed by combining gradient sparsity compression with pipeline parallelism. Each neural network layer is assigned an appropriate threshold, which is adjusted dynamically in subsequent iterations to achieve adaptive compression of gradient transmission for each layer. Subsequently, a layer-wise gradient merging method is introduced. Leveraging dynamic programming, this method optimizes communication overhead, sparsity, and layer gradient computation time during layer-wise gradient merging, determining the optimal combination for merging multiple layers of small-scale gradient tensors into a single communication layer. This aims to reduce the high communication latency introduced during layer-wise gradient decision-making. Finally, the determined optimal layer-wise gradient merging combination is applied to the specific training iteration process. Experimental results demonstrate that the proposed method, compared to existing methods, significantly reduces communication overhead and enhances model training speed while ensuring model training accuracy. It achieves a maximum training speed up of 1.99 times compared to the uncompressed method.

Keywords:deep neural network; distributed training; synchronous data parallelism; gradient compression; layer gradient merging

近年來,隨著深度學習在各應用領域的快速發展,加之復雜模型架構的不斷更迭和數據量的不斷增加,訓練大規模深度神經網絡需要更多的算力資源支撐。由于單個加速設備的計算能力和存儲容量已不能滿足訓練大規模模型的需求,因此采用分布式思想對模型進行并行化訓練已成為現行的一種有效方式[1-2]。較為常見的并行化訓練是基于參數服務器架構的同步數據并行方法,即各個計算節點通過維護模型參數副本的一致性,在每次訓練中使用不同的小批量樣本計算梯度并進行模型參數的迭代更新。具體執行思想為:每個節點在完成對本地局部梯度的計算后,將局部梯度發送給服務器節點;隨后,服務器節點將來自所有計算節點的局部梯度進行聚合平均得到全局梯度,并將全局梯度用于更新模型參數[3];之后,各個計算節點從服務器節點獲取最新的模型參數進行下一輪迭代,直至收斂[4-5]。其中,同步隨機梯度下降算法因具有良好的收斂性,現已成為分布式深度學習訓練常用的一種優化方法[6]。

然而,由于計算節點在完成反向傳播后,需要將本地局部梯度發送給服務器節點并從服務器節點獲取最新的模型參數,因此節點之間會產生頻繁的梯度傳輸操作,這將使得額外的通信開銷超過計算開銷,逐漸成為加速深度神經網絡分布式訓練的主要制約因素[7]。因此,如何在不影響模型訓練精度的前提下實現計算節點間的高效通信,是基于參數服務器架構的同步數據并行訓練中亟待解決的問題。

1 相關工作

1.1 梯度壓縮

目前,在深度神經網絡分布式訓練通信優化方面已有大量的研究。梯度壓縮是常采用的一種有損壓縮優化技術,通過減少深度神經網絡訓練時傳輸的梯度量來優化通信,主要分為量化[8-9]和稀疏化[10]兩類方法。量化采用低精度的數據表示方法,通過減少每個梯度值的比特數來壓縮通信量。然而,由于量化后至少需要一個比特來維持原本的梯度信息,理論上只能將梯度張量最多壓縮32倍,無法更進一步實現高效的通信效率提升[11]。稀疏化采用更激進的通信壓縮方式,通過降低無更新操作梯度的傳輸頻率,并選擇重要梯度進行傳輸,可以在確保模型收斂的前提下顯著減少通信量。文獻[12]提出了一種基于固定閾值的梯度稀疏方法,當梯度值大于設定閾值時進行傳輸操作,但該方法對每層梯度使用統一的均勻壓縮,忽略了模型不同層之間的異構性,且難以對各類深度神經網絡設置合理的閾值,缺少良好的泛化性。針對該問題,文獻[13-14]提出了局部選擇和動態閾值調整方法,該方法通過局部梯度選擇和動態閾值調整,選擇一定比例的梯度值進行訓練時的通信傳輸操作。然而,在高壓縮率的情況下,容易造成模型訓練精度的損失。稀疏化的一種變體是更新重要梯度(Top-K)方法[15-17],主要通過將所有梯度進行Top-K操作后,篩選對模型更新影響率較大的梯度值進行傳輸;但在進行大規模深度神經網絡訓練時,由于梯度張量非常龐大,Top-K操作往往會造成很大的時間開銷。為此,文獻[18]通過隨機選擇一定比例的梯度值進行Top-K操作后得到稀疏閾值,最終在全部梯度上使用此閾值進行梯度篩選;但該方法對閾值計算不夠準確,在原始梯度向量的子集上需要進行兩次Top-K采樣,會造成較高的額外計算開銷。Top-K方法雖然可以顯著減少通信量,但忽視了深度神經網絡的分層結構特性,并且稀疏化操作通常在所有層梯度計算結束后進行,使得計算和通信無法達到良好的并行效果。為此,文獻[19]提出了分層自適應梯度稀疏方法(LAGS),即在每層中通過執行Top-K操作選擇梯度,并證明了該方法的收斂性。該方法可在梯度計算和梯度通信盡可能并行執行的前提下,壓縮傳輸過程中的通信量,但該方法對梯度的選擇不夠高效,導致稀疏化時間占比較大,不能有效減少模型訓練時間。

1.2 梯度分布

為實現梯度張量的高效壓縮,減少稀疏化時間開銷,許多研究通過探索深度神經網絡訓練過程中的梯度分布情況來估計壓縮閾值。文獻[20-21]通過理論分析與實驗驗證指出,訓練過程中梯度大多位于0附近并遵循高斯分布,并提出了一種高效的梯度選擇算法Gassian K,大幅度降低了稀疏化的時間開銷,但隨著訓練的進行,梯度值越來越接近于0。該方法根據高斯分布預測的閾值較大,導致模型在相同訓練時間內往往難以收斂。為更準確地模擬梯度分布特征,文獻[22]將訓練過程中梯度分布建模為雙指數分布、雙伽馬分布和雙廣義帕累托分布3種分布,并提出了一種基于稀疏分布的壓縮方法,通過多段式的估計方法計算閾值,但當壓縮比變大時,對真實梯度分布的擬合會出現較大的偏差,影響模型的收斂性。文獻[23]利用對數正態分布較高斯分布更準確的特點,結合梯度量化方法提出了一種基于對數正態分布的壓縮方法,達到了80%的稀疏度,大幅度減少了通信量,但該方法仍存在對訓練過程中閾值預測不夠準確的問題,影響了訓練精度。

1.3 計算與通信重疊

在深度神經網絡的反向傳播過程中,梯度從后往前依次進行計算,即前一層網絡的梯度計算獨立于后一層的通信,后一層的參數更新也與前一層無關。因此,可以通過將通信任務與計算任務重疊來隱藏部分通信開銷[24]。然而,計算任務與通信任務重疊本質上并沒有真正減少通信時間,只是盡可能將計算和通信并行執行,從而提高模型的整體訓練效率。文獻[25]提出了一種無等待反向傳播(WFBP)算法,實現了層間梯度通信和計算的流水線并行,但由于不同層之間計算和通信時間的差異性,在高延遲或低帶寬的網絡環境中難以隱藏額外的通信開銷。文獻[26]在WFBP算法的基礎上進行擴展,提出了基于優先級傳輸的方法,通過將每一層梯度張量按照預設的閾值進行切分,并利用任務間的優先級實現調度傳輸,達到計算和通信重疊的效果;但由于處理不同運行環境時需要頻繁的超參數調整操作,使得該方法難以適應軟硬件資源動態變化的適行環境。由于一些大張量的通信可能會阻塞較高優先級張量的執行,因此文獻[27]提出了優先級調度中的張量分區,將大張量切分成若干小張量執行,以實現更大程度的計算與通信重疊;但每個切分后的小張量需要插入推送操作,切分過多的小張量會帶來更長的總啟動時間,導致帶寬利用率較差。

綜上,在深度神經網絡模型的分布式訓練中,需要結合具體的計算資源進行動態分析,通過梯度分布規律設計梯度壓縮方式,將計算與通信進行重疊調度執行,可進一步優化通信傳輸開銷,提高訓練效率。

針對以上分布式數據并行訓練大規模深度神經網絡過程中存在的問題,本文提出一種深度神經網絡動態分層梯度稀疏化及分層梯度合并優化方法DLGS。首先,將全局Top-K稀疏化與流水線并行技術相結合,提出動態分層梯度稀疏決策,為每層神經網絡計算一個合適的閾值,并通過在后續迭代時動態調整該閾值,實現對每層傳輸梯度的自適應壓縮。其次,為了進一步降低通信延遲,加速模型訓練,提出了層梯度合并方法,利用動態規劃算法對層梯度合并時的通信耗時、稀疏化計算及層梯度計算時間進行權衡優化,求解出最優的層合并組合,將多層小尺度梯度張量合并為一層進行通信。然后,將最優的層合并組合應用于具體的訓練迭代過程。最后,通過實驗測試,驗證了本文方法的有效性。

2 動態分層梯度稀疏化

首先,通過對已有全局Top-K梯度稀疏方法的局限性分析,引入分層Top-K梯度稀疏化方法,為每層計算一個合適的壓縮閾值,使得稀疏化不需要等待反向傳播的完成,將部分梯度通信開銷隱藏于梯度計算過程中;之后,為了減少梯度稀疏化的時間開銷,設計了閾值重用,實現對梯度高效壓縮,進一步提高神經網絡訓練速度。

2.1 全局Top-K梯度稀疏化局限性分析

基于Top-K稀疏化具有較大絕對值的梯度對模型收斂影響更大的特點,在梯度更新過程中,每個計算節點只傳遞小部分絕對值最大的梯度值,剩余未選擇的梯度值累積為本地梯度殘差,添加到下一次迭代計算的梯度中。全局Top-K方法依賴于所有層梯度,如圖1所示Top-K稀疏化執行過程,當反向計算完所有層梯度后,才開始對所有層梯度執行稀疏化和梯度通信等操作,由于不會使得反向傳播過程中梯度計算和通信操作重疊,因此會導致訓練效率較低。

2.2 動態分層梯度稀疏化方法

為了使梯度計算和通信在盡可能并行執行的前提下減少梯度傳輸的通信量,本文在每一層上應用Top-K梯度稀疏化和殘差累積,具體執行時不是從所有層選擇K個梯度值,而是從每層l中選擇K個梯度值,當層l計算完成梯度后,立即對該層計算得到的梯度進行稀疏化操作,這樣不僅利用稀疏化方法減少了傳輸過程中的通信量,而且還利用深度神經網絡的分層結構使得梯度計算和通信重疊。具體層閾值計算與動態更新過程為:初始迭代時,對每層l計算得到的梯度應用Top-K方法,將每層中通過Top-K方法選擇的第K個梯度值作為層l的閾值,表示為Hl,用閾值列表V=[H1,H2,…,Hl]存儲每層的閾值。通過比較多次迭代后每層的閾值變化,發現閾值只有輕微的差異,因此不需要在每次迭代過程中對層l計算得到的梯度執行Top-K操作計算閾值,而是每隔s次迭代,使用Top-K操作計算每層的準確閾值,并使用所計算的準確閾值來動態更新層閾值列表V。然后,在接下來的(s-1)次迭代過程中重用該閾值。通過閾值重用,可以減少在層l執行Top-K的時間,從而進一步降低稀疏化的時間開銷。

整個動態分層梯度壓縮執行過程如圖2所示。首先層l計算出第i次訓練的梯度gn,li(n為計算節點),將層l計算的梯度gn,li與該層中的梯度殘差en,li-1相加,梯度殘差是計算節點中層l局部累積的所有先前未傳輸梯度的總和;然后對該層梯度執行Top-K操作,得到該層梯度壓縮閾值Hl,通過該閾值對層l的梯度gn,li壓縮;最后將壓縮后的梯度C(gn,li)發送給參數服務器,并累積本次迭代的梯度殘差en,li,用于之后迭代計算得到的梯度中。

2.3 動態分層梯度壓縮算法

在對每層梯度計算合適的壓縮閾值基礎上,利用每層計算的閾值,實現分層梯度壓縮。假設在計算節點n上給定一個具有L層的深度神經網絡M,在第i次訓練時將壓縮后的梯度C(gn,li)發送給參數服務器,當參數服務器收到各個計算節點計算的梯度后,對所有梯度求平均值并更新模型參數。具體的參數更新公式為

wli+1=wli-αi1N∑Nn=1C(gn,li)(1)

式中:wli表示第i次迭代層l模型參數;αi是學習率;N為計算節點數;gn,li表示計算節點n在第i次迭代中計算的無偏隨機梯度與層l的本地梯度殘差的累加和;C(gn,li)表示對層l計算的梯度gn,li進行壓縮。動態分層梯度壓縮算法迭代訓練的具體過程見算法1。

算法1 動態分層梯度壓縮算法

輸入:數據集D,每層初始權重wl,層壓縮率K,學習率α,迭代次數T,節點數量N

輸出:模型參數wT

1 初始化V=[H1,…,HL]=0

2 初始化E=[en,1i,…,en,Li]=0

3 for i=1 to T do

4" 從數據集D中采樣小批量數據Dni

5" 前向計算;

6" for l=L to 1 do

7"" gn,li=en,li-1+ΔLoss(wt, Dn,li);

8"" M=|gn,li|gt;Hl;

9"" C(gn,li)=gn,l⊙M;

10" en,li=gn,li⊙M;

11" gn,lgolobal=AVG(Reduce(C(gn,li));

12 end for

13 if i mod s == 0 then

14"" update V

end if

15 wli+1=wli-αign,lglobal

16end for

算法主要執行步驟如下。

步驟1 每個計算節點加載訓練模型和部分訓練數據集,初始化每層梯度閾值列表V,初始化每層梯度壓縮殘差矩陣E。

步驟2 迭代訓練,共迭代訓練T次,每次迭代從數據集D中采樣小批量數據Dni,前向計算損失。

步驟3 從最后一層L逐層往前計算梯度gn,li,將層l梯度值同該層梯度殘差en,li-1相加得到gn,li=gn,li+en,li-1,之后根據該層中的閾值Hl對該層梯度進行壓縮,將壓縮后的梯度C(gn,li)發送給參數服務器更新模型參數,并將小于閾值的梯度在本地累積為梯度殘差,用于之后的迭代訓練。

步驟4 參數服務器收到所有計算節點計算的梯度后,對梯度求平均值,并用式(1)更新模型參數。

步驟5 參數服務器將最新的模型參數廣播給計算節點,更新計算節點的模型參數,并開始下一輪的迭代訓練。

3 層梯度合并

分層梯度稀疏化通過減少通信量可以有效降低通信開銷,加速模型訓練過程,但在分層壓縮后的梯度通信過程中,對于不同類型的層,要通信的梯度張量大小存在較大差異,傳輸過多層的小張量不僅會導致帶寬利用不足,還會增加通信延遲[28]。為此,本文提出多層梯度合并方法,將多個層的梯度張量合并一起發送,以降低通信延遲開銷,加速模型訓練過程。

3.1 層梯度合并策略

層梯度合并的目標是在訓練過程中盡可能多地將多個稀疏后的梯度張量合并到一起通信,在實現梯度計算和梯度通信最佳重疊的同時,最小化通信延遲開銷。在合并多個層梯度張量過程中,如將整個模型的梯度張量合并成一個單一張量,雖然通信操作只調用一次,通信延遲最小,但通信過程必須等待反向傳播結束,沒有使梯度計算與通信重疊,從而影響訓練效率。為了獲得最佳的層梯度合并結果,應同時考慮梯度計算時間、梯度壓縮時間和梯度通信時間對整個訓練效率的影響。本文首先將層梯度合并問題轉化為使得一次迭代最小的優化問題,優化目標是通過層梯度合并來降低通信延遲開銷,從而最小化迭代時間;然后,對訓練過程中梯度計算時間、梯度壓縮時間和梯度通信時間進行分析,判斷層梯度合并的前提條件;最后,利用動態規劃算法求解最佳的層梯度合并組合,并用于之后的迭代訓練過程。

3.1.1 訓練過程分析

本文提出的動態分層梯度稀疏化方法,一次迭代訓練時間titer由前向計算損失時間、反向逐層計算梯度時間、層梯度壓縮時間和壓縮后梯度通信時間4部分組成,表示如下

titer=tf+∑Ll=1tlb+∑Ll=1tls+tnoc(2)

式中:titer表示一次迭代總時間;tf表示前向計算時間;tlb表示層l的反向計算時間;tls表示層l的稀疏化時間;tnoc表示沒有重疊的通信時間。τlb、τls、τlc計算公式分別為

τlb=tf, l=L

τl+1s+tl+1s, 1≤llt;L(3)

τls=τlb+tlb(4)

τlc=τls+tls, l=L

max{τls+tls, τl+1c+tl+1c}, 1lt;l≤L(5)

式中:τlb表示層l開始計算梯度的時刻,取值為前向計算結束的時刻或者其前一層(l+1)稀疏化結束時刻;式(4)表示層l的開始稀疏化的時刻τls,取值為層l的梯度計算結束時刻;式(5)中,τlc表示層l開始通信的時刻,它由層l的稀疏化結束時刻和其前一層(l+1)的通信結束時刻決定。

3.1.2 合并過程分析

層梯度合并過程中,將多個層梯度張量合并到一起通信,雖然會緩解通信延遲開銷,但是會推遲前一層或者幾層梯度開始稀疏化和通信的時刻,如圖3a中,層L計算完梯度并壓縮后會在時刻1開始該層梯度通信,圖3b中將層L和層(L-1)合并一起通信,會將層L開始梯度通信的時刻延遲到時刻2。如果將所有層梯度合并到一起發送,則通信延遲開銷最低,從而使得通信成本最低,但這種通信方式需要計算完所有層梯度才開始通信,不能實現梯度計算和通信并行執行。因此,層梯度合并的目標是在訓練過程中盡可能將層梯度張量合并的同時,實現梯度通信和計算的最佳重疊。

將合并層定義為:如果在時刻τ處,將層l的梯度合并到層(l-1),并不壓縮和通信層l的梯度,則層l為合并層,表示為l(l-1)。用符號lm表示合并層,用符號ln表示普通層,則

l=lm

s.t. lmgt;1

tlc=tls=0

dl-1=dl+dl-1

τl-1b=τlb+tlb(6)

式中:lmgt;1表明第1層不能為合并層,因為沒有前

一層要合并;tlc=tls=0表明lm這一層梯度計算完成后沒有壓縮和通信;dl-1=dl+dl-1表明lm這一層的梯度張量dl將會累積到前一層張量dl-1中;τl-1b=τlb+tlb表示層(l-1)的梯度計算可以在層l梯度計算完成后立即開始。

對于一個具有L層的深度神經網絡模型,若某層l屬于普通層或者合并層,則所有的層梯度合并可能的組合O有2L-1種。在對梯度分層通信過程中,由于反向計算梯度是從后往前逐層進行的,因此一次迭代結束時間titer為第1層梯度通信結束時刻,可寫為

titer=τ1c+t1c(7)

式中:τ1c是第1層開始通信的時刻;t1c是第1層通信的時間。式(7)表示一次迭代結束時刻titer等價于第1層梯度通信結束時刻。同時由式(5)可知,第1層的通信開始時刻由第1層的梯度稀疏化結束時刻和第2層通信結束時刻決定,第2層中的通信開始時刻由第2層中的梯度稀疏化結束時刻和第3層通信結束時刻決定,如此類推,直到第L層開始計算梯度為止。

3.2 優化目標

給定一個具有L層的深度神經網絡模型M,優化目標是從所有的層梯度可能的組合O中找到一種組合m∈O,使得一次迭代時間titer最小,在最小化通信延遲開銷的同時達到最佳的梯度計算與梯度通信的重疊,用公式表示為

min titer=tf+∑Li=1(τlc+tlc)

s.t. m∈O(8)

式中:τlc表示層l開始通信的時刻;tlc表示層l通信的時間;τlc+tlc表示計算層l通信結束的時刻。層l開始通信的時刻τlc,由層(l+1)的通信時間或層l的稀疏化時間決定,即τlc=max{τl+1c+tl+1c,τls+tls}。式(8)的目標是找到一個最優的組合m最小化迭代時間titer。

3.3 層梯度合并算法

在對優化目標迭代求解過程中,關鍵是確定合并一個層是否能減少迭代時間titer,如果可以減少迭代時間,則將該層設為合并層,否則,將該層保持為普通層。對于任意層l,若將其梯度合并后總的迭代時間變為t′iter,如果使得t′iterlt;titer,則將層l的梯度合并,否則不合并。圖4描述了具體迭代規劃合并過程。

假設已經將層L、L-1、L-2進行了合并,形成層梯度組合m1=[L,L-1,L-2],則在該組合中,當層L和層(L-1)的梯度計算完成后,沒有立即壓縮和通信,而是將層L和層(L-1)的梯度張量累積到層(L-2)中,即dL-2=dL-2+dL-1+dL。接著,從層(L-3)開始,對剩余部分層繼續進行迭代規劃,形成下一個層梯度組合mj(1≤j≤x)。當所有層都遍歷完之后,所有層被劃分構成一個層梯度組合m={m1,m2,…,mx}。在之后的訓練過程中,將每個組合mj中所包含的若干層進行一次通信即可。

具體合并過程實現如算法2所示,其中函數CommTime( )表示返回層l的通信時間,函數TopKTime( )表示返回層l稀疏化的時間,函數CommStartTime( )和CompStartTime( )是預先設置用于計算層l梯度開始通信時刻τc和梯度計算的起始時刻τb;函數Merge( )執行梯度合并操作,將預定義的普通層更改為合并層。

算法2 最優層梯度合并算法

1 初始化m[1,…,L]={ln}

2 for l=L to 2 do

3"" μ=τb[l]+tb[l]+tb[l-1]

4"" if t′iterlt;titer do

5""" Merge(tb,ts,tc,d[l])

6""" τb2,τs2,ts2=CompStartTime (tb[1,…,L],d[1,…,L],τb[l]+tb[l]);

7""" τb[1,…,L]=τb2,τs[1,…,L]=τs2;

8""" τc,tc=CommStartTime(ts,τc,d[l]);

9""" m[l]=lm;

10"" end if

11 end for

12 return m;

13 Procedure Merge(tb,ts,tc,l)

14"" tb[l-1]=tb[l-1]+tb[l];

15"" d[l-1]=d[l-1]+d[l];

16"" tc[l-1]=CommTime(d[l-1]);

17"" ts[l-1]=Top K Time(d[l-1]);

整個合并算法主要執行步驟如下。

步驟1 初始化神經網絡所有層為普通層,通過函數CommStartTime()和CompStartTime()記錄層l梯度開始通信和計算的起始時刻。

步驟2 從最后一層L開始向前逐層遍歷,對于遍歷到的每一層l,判斷合并該層到前一層(l-1)與不合并該層是否可以減少迭代時間。

步驟3 如果可以減少迭代時間,則調用Merge()函數將預定義的普通層更改為合并層,將該層l的梯度張量累積到前一層梯度張量中,然后將層號推入層梯度組合mj中。

步驟4 如果不能減少迭代時間,則將該層梯度與其前一層不合并,并從前一層開始創建一個新的層梯度組合mj+1,繼續往前逐層判斷。

步驟5 當所有層遍歷結束后,求得最優的組合方式m。

算法從第L層開始逐層往前掃描直到第2層為止,需要O(L)步,對于每次掃描,如果層l是可以合并的層,則需要計算該層梯度計算和通信開始時間,復雜度為O(L),因此整個算法的復雜度為O(L2)。

3.4 層合并后訓練執行流程

通過對層梯度合并的分析和求解,得到最優的層梯度組合方式m=[m1,m2,…,mx],將求得的最優層梯度合并方式組合m應用于迭代訓練過程中。層合并后訓練執行流程如下所示。

步驟1 每個計算節點初始化共享同步隊列Q,存儲每層的層號,計算每層的參數大小等相關變量;

步驟2 在服務器節點(Rank 0)調用算法2求最優層梯度合并方式m,并向所有計算節點廣播m;

步驟3 每個計算節點得到層梯度組合m,初始化相關變量,迭代的讀取小批量數據進行前向傳播并求損失;

步驟4 根據損失進行反向傳播計算得到當前層隨機梯度gn,li,然后根據合并后的層梯度組合mj判斷是否立即壓縮和通信該層梯度。

步驟5 將層梯度組合mj中的層號推入共享隊列,并將mj中包含的多個層壓縮后的梯度C(gn,li)一起發送給參數服務器。

步驟6 參數服務器收到所有計算節點發送的層梯度組合mj的多個層梯度,求和取平均值后,更新服務器節點的模型參數。

步驟7 計算節點從服務器節點拉取更新后的模型參數,更新本地模型,進入下一輪迭代訓練。

4 實 驗

4.1 實驗設置

(1)硬件環境。實驗使用北京超算中心的N40分區,采用4個節點,其中1個為參數服務器節點,另外3個為計算節點。服務器節點和計算節點之間通過RoCE 2×25Gb/s(RDMA協議)建立連接。每個節點各配備1塊CPU和GPU卡,硬件配置相關參數為:CPU為AMD EPYC 7402 (48C)@2.8GHz,內存512GB,顯卡為NVIDIAGeForceRTX 4090,顯存24GB。

(2)軟件環境。并行訓練使用Horovod分布式深度學習框架,進行上層分布式梯度計算和通信等封裝,底層采用PyTorch深度學習框架。操作系統為Red Hat 4.8.5,Horovod版本為0.28.1,PyTorch版本為2.0.1,CUDA版本為11.8,Python版本為3.8,NCCL版本為2.18.1。

(3)網絡模型及數據集。分別用ResNet-20和VGG16兩種網絡模型在CIFAR-10數據集、用ResNet-50網絡模型在ImageNet數據集子集上進行驗證。其中,CIFAR-10數據集由10個類別的60000張32×32像素的彩色圖片組成,其中包含50000張訓練圖片和10000張測試圖片。ImageNet數據子集由截取的100個類的135000張圖片組成,并裁剪為224×224像素,其中一個訓練類包含1300張圖片,一個測試類包含50張圖片。

(4)實驗參數設置。在同步數據并行框架下,使用分布式隨機梯度下降優化算法,在CIFAR-10數據集共迭代訓練140輪(Epoch)。學習率采用階梯式設置,前80輪設置為0.1,80~120輪設置為0.01,120~140輪設置為0.001,批量大小設置為32。在ImageNet數據集共迭代訓練80輪,前30輪學習率設置為0.1,30~60輪設置為0.01,60~80輪設置為0.001,批量大小設置為64。

4.2 實驗結果與分析

4.2.1 并行訓練精度與損失對比

為了驗證本文方法(DLGS)在提升模型訓練精度和降低訓練損失方面的有效性,在0.1壓縮率下分別使用ResNet-20、VGG16和ResNet-50模型測試不同壓縮方法的訓練精度和訓練損失。ResNet-20模型的訓練精度和訓練損失分別如圖5和圖6所示,VGG16模型的訓練精度和訓練損失分別如圖7和圖8所示,ResNet-50模型的訓練精度和訓練損失分別如圖9和圖10所示。不同壓縮方法的最終訓練精度和訓練損失對比如表1所示。

從圖5和圖7可以看出,與Top-K、LAGS、未壓縮等方法相比,本文DLGS方法在訓練開始時與其他各壓縮方法訓練精度差異較小,隨著迭代次數的增加,本文方法訓練精度提升效果僅次于未壓縮方法,在第40輪時訓練精度趨于穩定,在第80輪時,各壓縮方法精度都有顯著的提升,主要是因為在第80輪后學習率衰減為0.01。從圖6和圖8的訓練損失曲線可以看出,各壓縮方法在訓練過程中訓練損失迅速降低,之后趨于穩定,在第80輪后損失又有了明顯的下降,主要是因為80輪后學習率衰減為原來的1/10。圖9和圖10表明,本文方法在ResNet-50模型上的訓練精度和訓練損失同其他兩種模型上的類似。從表1可以看出,本文方法在3種網絡模型上的訓練精度和訓練損失方面差距不大,十分接近于未壓縮方法,表明本文方法可以在減少訓練時間的同時保證模型精度。

4.2.2 訓練耗時對比

為評估在提升訓練速度上的有效性,在0.1和0.01兩種壓縮率下,對模型ResNet-20、VGG16和ResNet-50的訓練耗時進行對比,不同壓縮方法訓練耗時如表2所示。從表2可知,本文DLGS方法在兩種壓縮率下的訓練耗時均少于其他壓縮方法,主要原因是本文方法通過閾值重用以及梯度稀疏化對多個層梯度進行了合并通信,減少了模型訓練過程中的壓縮開銷和通信開銷,從而加速了模型整體訓練過程。本文DLGS方法在0.01的壓縮率下訓練時間和非壓縮方法相比,最大加速比達到了1.99倍;在VGG16模型上DLGS同其他壓縮方法相比,加速比提高不明顯,主要是因為VGG16輸入分辨率較小,梯度計算時間較小而參數量較大。本文方法更傾向于合并多個層的梯度,導致梯度計算和梯度通信重疊程度相對較低。

4.2.3 壓縮性能分析

為了驗證本文方法在提升模型訓練速度方面的有效性,將一次迭代的訓練時間分解為計算時間、稀疏化時間和非重疊的通信時間,并在0.1和0.01兩種壓縮率下,比較不同壓縮方法一次迭代的各部分訓練時間,結果如圖11~圖13所示。

從圖11~圖13可以看出,在3種訓練模型上,由于未壓縮方法的通信量很大,通信時間遠大于計算時間,導致一次迭代的訓練總時間比其他方法的總時間長;在0.1和0.01兩種壓縮率下,由于Top-K方法減少了通信量進而減少了通信時間,因此比未壓縮方法的訓練時間短;LAGS方法在兩種壓縮率下稀疏化時間比Top-K方法多,主要原因是每層調用Top-K函數導致稀疏化開銷增加,但該方法重疊了計算和通信,故在整體訓練時間上少于Top-K方法。本文DLGS方法在兩種壓縮率下耗時均最短,一方面是因為本文方法減少了通信量從而減少了通信時間,且在這個過程中計算和通信重疊,將部分通信開銷隱藏在計算中;另一方面是因為本文方法通過閾值重用減少了稀疏化的時間開銷,并通過層梯度合并方法降低了通信延遲開銷,從而進一步降低了整個訓練迭代的時間。

5 結 論

本文提出了一種動態分層梯度稀疏化及梯度合并優化方法,用于解決基于參數服務器的數據并行優化方法加速大規模深度神經網絡模型訓練過程中存在的通信開銷大、訓練耗時長等問題。首先,通過在迭代過程中動態調整每一層的壓縮閾值,有效減少了通信量,使得層梯度壓縮及梯度計算與通信可以流水線并行執行,重疊了部分通信時間。其次,利用動態規劃對層梯度合并時的通信耗時、稀疏化計算及層梯度計算時間進行權衡優化,求解出最優的層合并組合,將多層小尺度梯度張量合并為一層進行通信。最后,將最優的層合并組合應用于具體的訓練迭代過程。實驗結果表明,本文所提方法在并行訓練精度、訓練耗時、壓縮效果方面和已有方法相比都有明顯的優勢,可以在保證訓練精度的情況下,進一步減少通信量,最大化計算和通信的重疊,最終降低深度神經網絡模型訓練耗時,提高模型的訓練速度。

參考文獻:

[1]朱泓睿, 元國軍, 姚成吉, 等. 分布式深度學習訓練網絡綜述 [J]. 計算機研究與發展, 2021, 58(1): 98-115.

ZHU Hongrui, YUAN Guojun, YAO Chengji, et al. Survey on network of distributed deep learning training [J]. Journal of Computer Research and Development, 2021, 58(1): 98-115.

[2]王帥, 李丹. 分布式機器學習系統網絡性能優化研究進展 [J]. 計算機學報, 2022, 45(7): 1384-1411.

WANG Shuai, LI Dan. Research progress on network performance optimization of distributed machine learning system [J]. Chinese Journal of Computers, 2022, 45(7): 1384-1411.

[3]巨濤, 趙宇陽, 劉帥, 等. 面向圖片識別的深度學習模型并行優化方法 [J]. 西安交通大學學報, 2023, 57(1): 141-151.

JU Tao, ZHAO Yuyang, LIU Shuai, et al. A parallel optimization method of deep learning model for image recognition [J]. Journal of Xi’an Jiaotong University, 2023, 57(1): 141-151.

[4]LI Mu, ANDERSEN D G, PARK J W, et al. Scaling distributed machine learning with the parameter server [C]//Proceedings of the 11th USENIX Conference on Operating Systems Design and Implementation. Berkeley, CA, USA: USENIX Association, 2014: 583-598.

[5]朱虎明, 李佩, 焦李成, 等. 深度神經網絡并行化研究綜述 [J]. 計算機學報, 2018, 41(8): 1861-1881.

ZHU Huming, LI Pei, JIAO Licheng, et al. Review of parallel deep neural network [J]. Chinese Journal of Computers, 2018, 41(8): 1861-1881.

[6]BOTTOU L, CURTIS F E, NOCEDAL J, et al. Optimization methods for large-scale machine learning [J]. SIAM Review, 2018, 60(2): 223-311.

[7]高赫然, 吳恒, 許源佳, 等. 面向深度學習訓練的內存交換機制綜述 [J]. 軟件學報, 2023, 34(12): 5862-5886.

GAO Heran, WU Heng, XU Yuanjia, et al. Survey on memory swapping mechanism for deep learning training [J]. Journal of Software, 2023, 34(12): 5862-5886.

[8]巨濤, 劉帥, 王志強, 等. 深度神經網絡模型任務切分及并行優化方法 [J/OL]. 北京航空航天大學學報: 1-18[2024-04-13]. https://doi.org/10.13700/j.bh.1001-5965.2022.0731.

JU Tao, LIU Shuai, WANG Zhiqiang, et al. Task segmentation and parallel optimization of DNN model [J/OL]. Journal of Beijing University of Aeronautics and Astronautics: 1-18[2024-04-13]. https://doi.org/10.13700/j.bh.1001-5965.2022.0731.

[9]YAN Guangfeng, LI Tan, WU Kui, et al. Killing two birds with one stone: quantization achieves privacy in distributed learning [J]. Digital Signal Processing, 2024, 146: 104353.

[10]陳世達, 劉強, 韓亮. 降低分布式訓練通信的梯度稀疏壓縮方法 [J]. 浙江大學學報(工學版), 2021, 55(2): 386-394.

CHEN Shida, LIU Qiang, HAN Liang. Gradient sparsification compression approach to reducing communication in distributed training [J]. Journal of Zhejiang University(Engineering Science), 2021, 55(2): 386-394.

[11]王恩東, 閆瑞棟, 郭振華, 等. 分布式訓練系統及其優化算法綜述 [J]. 計算機學報, 2024, 47(1): 1-28.

WANG Endong, YAN Ruidong, GUO Zhenhua, et al. A survey of distributed training system and its optimization algorithms [J]. Chinese Journal of Computers, 2024, 47(1): 1-28.

[12]STROM N. Scalable distributed DNN training using commodity GPU cloud computing [C]//Proceedings of the Interspeech 2015. Paris, France: International Speech Communication Association, 2015: 1488-1492.

[13]DRYDEN N, MOON T, JACOBS S A, et al. Communication quantization for data-parallel training of deep neural networks [C]//2016 2nd Workshop on Machine Learning in HPC Environments (MLHPC). Piscataway, NJ, USA: IEEE, 2016: 1-8.

[14]CHEN C Y, CHOI J, BRAND D, et al. AdaComp: adaptive residual gradient compression for data-parallel distributed training [C]//Proceedings of the Thirty-Second AAAI Conference on Artificial Intelligence and Thirtieth Innovative Applications of Artificial Intelligence Conference and Eighth AAAI Symposium on Educational Advances in Artificial Intelligence. Palo Alto, CA, USA: AAAI Press, 2018: 2827-2835.

[15]RENGGLI C, ASHKBOOS S, AGHAGOLZADEH M, et al. SparCML: high-performance sparse communication for machine learning [C]//Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. New York, USA: Association for Computing Machinery, 2019: 11.

[16]SATTLER F, WIEDEMANN S, MLLER K R, et al. Sparse binary compression: towards distributed deep learning with minimal communication [C]//2019 International Joint Conference on Neural Networks (IJCNN). Piscataway, NJ, USA: IEEE, 2019: 1-8.

[17]SHI Shaohuai, WANG Qiang, ZHAO Kaiyong, et al. A distributed synchronous SGD algorithm with global top-k sparsification for low bandwidth networks [C]//2019 IEEE 39th International Conference on Distributed Computing Systems (ICDCS). Piscataway, NJ, USA: IEEE, 2019: 2238-2247.

[18]LIN Yujun, HAN Song, MAO Huizi, et al. Deep gradient compression: reducing the communication bandwidth for distributed training [EB/OL]. (2020-06-23)[2024-01-01]. https://arxiv.org/abs/1712.01887.

[19]SHI Shaohuai, TANG Zhenheng, WANG Qiang, et al. Layer-wise adaptive gradient sparsification for distributed deep learning with convergence guarantees [M]//Frontiers in Artificial Intelligence and Applications. Amsterdam, Netherlands: IOS Press, 2020: 1467-1474.

[20]SHI Shaohuai, CHU Xiaowen, CHEUNG K C, et al. Understanding top-K sparsification in distributed deep learning [EB/OL]. (2019-11-20)[2024-01-01]. https://arxiv.org/abs/1911.08772.

[21]GUO Bingjun, LIU Yazhi, ZHANG Chunyang. A partition based gradient compression algorithm for distributed training in AIoT [J]. Sensors, 2021, 21(6): 1943.

[22]ABDELMONIEM A M, AHMED A, ALOUINI M S, et al. An efficient statistical-based gradient compression technique for distributed training systems [J]. Proceedings of Machine Learning and Systems, 2021, 3: 297-322.

[23]CHMIEL B, BEN-URI L, SHKOLNIK M, et al. Neural gradients are near-lognormal: improved quantized and sparse training [EB/OL]. (2020-10-12)[2024-01-01]. https://arxiv.org/abs/2006.08173.

[24]SONG Yingjie, AI Yongbao, XIAO Xiong, et al. HCEC: an efficient geo-distributed deep learning training strategy based on wait-free back-propagation [J]. Journal of Systems Architecture, 2024, 148: 103070.

[25]ZHANG Hao, ZHENG Zeyu, XU Shizhen, et al. Poseidon: an efficient communication architecture for distributed deep learning on GPU clusters [C]//Proceedings of the 2017 USENIX Conference on Usenix Annual Technical Conference. Berkeley, CA, USA: USENIX Association, 2017: 181-193.

[26]JAYARAJAN A, WEI Jinliang, GIBSON G, et al. Priority-based parameter propagation for distributed DNN training [J]. Proceedings of Machine Learning and Systems, 2019, 1: 132-145.

[27]PENG Yanghua, ZHU Yibo, CHEN Yangrui, et al. A generic communication scheduler for distributed DNN training acceleration [C]//Proceedings of the 27th ACM Symposium on Operating Systems Principles. New York, USA: Association for Computing Machinery, 2019: 16-29.

[28]吳艷霞, 梁楷, 劉穎, 等. 深度學習FPGA加速器的進展與趨勢 [J]. 計算機學報, 2019, 42(11): 2461-2480.

WU Yanxia, LIANG Kai, LIU Ying, et al. The progress and trends of FPGA-based accelerators in deep learning [J]. Chinese Journal of Computers, 2019, 42(11): 2461-2480.

(編輯 亢列梅)

主站蜘蛛池模板: 欧美一级高清视频在线播放| 99re视频在线| 午夜日b视频| 国产成人精品在线| 91网址在线播放| 亚洲一级色| 不卡无码网| 国产va在线观看免费| 72种姿势欧美久久久久大黄蕉| 真实国产精品vr专区| 中文字幕在线永久在线视频2020| 色婷婷在线播放| 免费亚洲成人| 欧美成在线视频| 亚洲系列中文字幕一区二区| 1级黄色毛片| 中美日韩在线网免费毛片视频| 欧美国产综合色视频| 欧美伦理一区| 亚洲中文字幕23页在线| 免费观看亚洲人成网站| 欧美日韩精品一区二区在线线 | 免费毛片视频| 国产精品成人不卡在线观看| 中国黄色一级视频| 亚洲天堂成人在线观看| 欧美亚洲国产精品第一页| 亚洲精品国产精品乱码不卞| 啪啪永久免费av| 国产高清国内精品福利| 天堂网亚洲综合在线| 国产理论最新国产精品视频| 在线观看亚洲成人| 欧美激情综合| 国产导航在线| 萌白酱国产一区二区| 精品无码一区二区在线观看| аv天堂最新中文在线| 国产成人区在线观看视频| 精品中文字幕一区在线| 国产精品视频免费网站| 69国产精品视频免费| 在线综合亚洲欧美网站| 免费A∨中文乱码专区| 久久综合色播五月男人的天堂| 五月六月伊人狠狠丁香网| 国产精品区网红主播在线观看| 日韩一区精品视频一区二区| 国产91丝袜在线播放动漫| 国产国产人成免费视频77777| 91在线视频福利| 免费无遮挡AV| 广东一级毛片| vvvv98国产成人综合青青| 亚洲第一区在线| 久久久久88色偷偷| 亚洲国产系列| 精品无码一区二区三区电影| 波多野结衣二区| 在线免费观看AV| 亚洲人成网站观看在线观看| 国产在线麻豆波多野结衣| 四虎永久在线精品国产免费| 日韩精品亚洲一区中文字幕| 国产国产人在线成免费视频狼人色| 热这里只有精品国产热门精品| 国产粉嫩粉嫩的18在线播放91| 99精品在线看| 国产交换配偶在线视频| 欧美日韩免费| 婷婷综合在线观看丁香| 日本免费a视频| 日韩天堂视频| 国产丝袜第一页| 正在播放久久| av免费在线观看美女叉开腿| 久久99热66这里只有精品一| 一个色综合久久| 欧美中日韩在线| 国产成人超碰无码| 欧美a网站| 激情亚洲天堂|