韓彥嶺,沈思揚(yáng),徐利軍,王靜,張?jiān)疲苋暄?/p>
(上海海洋大學(xué) 信息學(xué)院,上海 201306)
深度學(xué)習(xí)在圖像分析[1]、目標(biāo)檢測(cè)[2-3]、語(yǔ)義分割[4]、自動(dòng)駕駛[5-6]等諸多領(lǐng)域具有廣泛應(yīng)用,其主要通過(guò)增加網(wǎng)絡(luò)的深度使計(jì)算機(jī)提取到更多的數(shù)據(jù)特征,目前深度學(xué)習(xí)網(wǎng)絡(luò)普遍達(dá)到幾百甚至上千層。龐大的數(shù)據(jù)量及復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)訓(xùn)練效率帶來(lái)很大挑戰(zhàn)。為了縮短訓(xùn)練時(shí)間,基于各種計(jì)算平臺(tái)設(shè)計(jì)的并行訓(xùn)練方法逐漸成為研究熱點(diǎn)。目前,對(duì)深度神經(jīng)網(wǎng)絡(luò)的并行化主要有數(shù)據(jù)并行和模型并行[7]兩種方法。
數(shù)據(jù)并行是最簡(jiǎn)單的并行策略[8-9],模型副本在每臺(tái)參與并行的設(shè)備上使用獨(dú)立的數(shù)據(jù)子集,目前主流框架如TensorFlow[10]、PyTorch 都使用直觀的方式支持?jǐn)?shù)據(jù)并行[11]。但是隨著并行設(shè)備數(shù)量的增加,批大?。˙atch Size)通常也會(huì)增加,這使得數(shù)據(jù)并行可擴(kuò)展性變差,因?yàn)閷?duì)于任何給定的深度學(xué)習(xí)網(wǎng)絡(luò),當(dāng)超過(guò)相應(yīng)Batch Size 臨界值后達(dá)到相同收斂精度所需要的迭代次數(shù)大幅提高,導(dǎo)致訓(xùn)練過(guò)程的統(tǒng)計(jì)效率降低[12]。此外,由于使用的并行設(shè)備數(shù)量增加而帶來(lái)的通信開銷增長(zhǎng),進(jìn)一步限制了整體訓(xùn)練速度。
模型并行是一種與數(shù)據(jù)并行類似的并行方法,將模型圖分割部署在多個(gè)設(shè)備上,同時(shí)并行處理同一個(gè)mini Batch[13],通常用于拆分大型模型(單個(gè)GPU 無(wú)法承載一個(gè)模型),因此也可通過(guò)此方法加速訓(xùn)練。但目前來(lái)看,通過(guò)改進(jìn)模型并行算法所獲得的加速效果非常有限[14-15]。因此,僅使用該方法也會(huì)帶來(lái)擴(kuò)展性較差的問(wèn)題。另一方面,為了得到最大化加速,需反復(fù)調(diào)整模型切分方式以達(dá)到正反向傳播過(guò)程中的通信效益最高[16-17]。在多數(shù)情況下,模型并行帶來(lái)的通信開銷和同步開銷超過(guò)數(shù)據(jù)并行,因此加速比也低于數(shù)據(jù)并行。
谷歌開發(fā)的DistBelief 采用數(shù)據(jù)并行及模型并行的方法訓(xùn)練大規(guī)模模型,COATES[18]等使用GPU集群構(gòu)建了模型并行訓(xùn)練方法,LI[19]等則提出了改進(jìn)的參數(shù)服務(wù)器異步交互數(shù)據(jù)并行方案。但上述對(duì)于深度學(xué)習(xí)并行化的研究多基于大規(guī)模商用GPU平臺(tái),與具體圖像分類中小規(guī)模GPU 實(shí)驗(yàn)環(huán)境存在較大差別。
本文通過(guò)研究圖像分類場(chǎng)景中的并行問(wèn)題,提出一種混合并行優(yōu)化算法。該算法將數(shù)據(jù)并行和模型并行相結(jié)合提高并行性能,并提出一種改進(jìn)的Ring All Reduce 算法[20],通過(guò)數(shù)據(jù)通信時(shí)的并行策略優(yōu)化提高梯度交換效率。針對(duì)數(shù)據(jù)并行隨設(shè)備數(shù)量增至一定規(guī)模后出現(xiàn)加速效果變差的問(wèn)題,提出融合數(shù)據(jù)并行和模型并行的混合并行方法提高訓(xùn)練速度。在此基礎(chǔ)上,利用feature map 數(shù)據(jù)量遠(yuǎn)小于權(quán)重參數(shù)數(shù)據(jù)量的特點(diǎn),將全連接層及Softmax 運(yùn)算進(jìn)行模型并行,避免數(shù)據(jù)并行在通信過(guò)程中損耗引起的性能下降。最終在Cifar10 及mini ImageNet 兩個(gè)數(shù)據(jù)集上分別對(duì)比了不同節(jié)點(diǎn)下數(shù)據(jù)并行與混合并行的時(shí)間、精度表現(xiàn)。
多GPU 之間的數(shù)據(jù)通信是各深度學(xué)習(xí)模型實(shí)現(xiàn)并行化的基礎(chǔ),目前常用的傳輸方法包括參數(shù)服務(wù)器(Parameter Server,PS)和Ring All Reduce。集群包括用于運(yùn)算及訓(xùn)練網(wǎng)絡(luò)的工作節(jié)點(diǎn)worker 和整合所有worker 傳回的梯度后更新參數(shù)的中心節(jié)點(diǎn)PS,該算法的缺點(diǎn)在于節(jié)點(diǎn)間通信時(shí)間和GPU 個(gè)數(shù)成正比。Ring All Reduce 在摒棄中心節(jié)點(diǎn)的基礎(chǔ)上完成Map Reduce 操作,提高了傳輸效率,但時(shí)間復(fù)雜度仍較高。本文通過(guò)分節(jié)點(diǎn)間隔配對(duì)原則實(shí)現(xiàn)數(shù)據(jù)傳輸流程的優(yōu)化,在不影響算法精度的基礎(chǔ)上進(jìn)行改進(jìn),以降低時(shí)間復(fù)雜度,提高傳統(tǒng)深度學(xué)習(xí)各在個(gè)網(wǎng)絡(luò)并行后的數(shù)據(jù)傳輸效率,達(dá)到加速優(yōu)化的效果。
PS 的最大問(wèn)題在于耗時(shí)與節(jié)點(diǎn)數(shù)量n線性相關(guān),Ring All Reduce 算法在不使用中心節(jié)點(diǎn)的前提下完成Map Reduce 操作,分為Reduce Scatter 及All Gather 兩個(gè)階段:整個(gè)計(jì)算單元構(gòu)成一個(gè)環(huán)形,僅與左右節(jié)點(diǎn)通信,數(shù)據(jù)按照節(jié)點(diǎn)數(shù)量切分為n,n為節(jié)點(diǎn)數(shù)。在Reduce Scatter 階段,各節(jié)點(diǎn)每次傳輸,并將接收到的數(shù)據(jù)歸約操作,在n-1 次后,各節(jié)點(diǎn)得到一份完整的數(shù)據(jù);在All Gather 階段,重復(fù)n-1 次,各節(jié)點(diǎn)將存有完整歸約后的n份數(shù)據(jù)。在Ring All Reduce 算法中,各分節(jié)點(diǎn)在同一時(shí)刻既是發(fā)送節(jié)點(diǎn)也是接收節(jié)點(diǎn),因此沒(méi)有空閑機(jī)器的存在,且通信成本恒定,相較于參數(shù)服務(wù)器算法并不會(huì)隨著分節(jié)點(diǎn)數(shù)量增加而線性增加,但該算法時(shí)間復(fù)雜度為O(n),仍具有改進(jìn)空間。
Reduce Scatter 及All Gather 流程如圖1 和圖2所示。
圖2 All Gather 流程Fig.2 Procedure of All Gather
Ring All Reduce算法在Reduce Scatter及All Gather階段均需要n-1 步完成,使其時(shí)間復(fù)雜度為O(n),在Reduce Scatter 及All Gather 階段通過(guò)分節(jié)點(diǎn)間隔配對(duì)原則實(shí)現(xiàn)數(shù)據(jù)傳輸流程的優(yōu)化,在不影響算法精度的基礎(chǔ)上使其時(shí)間復(fù)雜度降低為O(lbn)。
在算法實(shí)現(xiàn)中,規(guī)定總節(jié)點(diǎn)數(shù)Na為2 的指數(shù)冪,具體算法步驟如下:
算法1優(yōu)化時(shí)間復(fù)雜度Ring All Reduce 算法
圖3 Ring All Reduce 改進(jìn)算法的Reduce Scatter 操作流程Fig.3 Reduce Scatter operation Procedure of Ring All Reduce improved algorithm
圖4 Ring All Reduce 改進(jìn)算法的All Gather 操作流程Fig.4 All Gather operation procedure of Ring All Reduce improved algorithm
數(shù)據(jù)并行是目前應(yīng)用于各個(gè)深度學(xué)習(xí)模型最為廣泛的并行策略,但在實(shí)際訓(xùn)練過(guò)程中,數(shù)據(jù)并行每個(gè)訓(xùn)練步中批大小規(guī)模及設(shè)備數(shù)量增長(zhǎng)到一定程度時(shí),數(shù)據(jù)并行的加速效果出現(xiàn)下降,影響整體訓(xùn)練時(shí)間。針對(duì)大型分類網(wǎng)絡(luò)中feature map 數(shù)據(jù)量遠(yuǎn)小于參數(shù)數(shù)據(jù)量這一特點(diǎn),本文提出針對(duì)圖像分類任務(wù)的面向各深度學(xué)習(xí)模型混合并行優(yōu)化方法,結(jié)合數(shù)據(jù)并行與模型并行思想,在權(quán)重參數(shù)較小的主干網(wǎng)絡(luò)階段采用數(shù)據(jù)并行,將傳統(tǒng)數(shù)據(jù)并行節(jié)點(diǎn)上完整模型的全連接層采用模型并行,減少參數(shù)傳輸量,提高訓(xùn)練速度。另外,在數(shù)據(jù)并行中,多節(jié)點(diǎn)間的數(shù)據(jù)交換采用1.2 節(jié)提出的Ring All Reduce 改進(jìn)算法,將兩者結(jié)合的優(yōu)勢(shì)在于:一方面提升并行后多設(shè)備間傳輸效率,緩解帶寬損耗問(wèn)題;另一方面進(jìn)一步加快訓(xùn)練速度,解決數(shù)據(jù)并行加速延緩的問(wèn)題。
數(shù)據(jù)并行和模型并行均包含張量切分、張量傳輸(復(fù)制)及Reduce 等操作。張量切分表示物理上的張量是邏輯張量按照某一維度切分后得到的,axis代表切分的維度。張量傳輸(復(fù)制)是指物理上的張量和邏輯上的張量完全相同。Reduce 是一種邏輯張量與物理上多個(gè)張量映射關(guān)系的操作。如圖5 所示,分別展示了張量切分的“行切分(axis=0)”、“列切分(axis=1)”以及張量傳輸與Reduce 映射操作。
圖5 深度學(xué)習(xí)中的并行化張量運(yùn)算Fig.5 Parallelization of tensor operation in deep learning
從張量角度來(lái)看數(shù)據(jù)并行和模型并行,假定在模型訓(xùn)練中,存在一個(gè)輸入矩陣Ι,通過(guò)矩陣Ι與矩陣W做矩陣乘法,得到輸出矩陣Ο:
其中:Ι的大小為(N,C1);W的大小為(C1,C2);Ο的大小為(N,C2)。
結(jié)合深度學(xué)習(xí)模型結(jié)構(gòu),上述矩陣代表的含義如下:
1)矩陣Ι作為輸入矩陣,每一行都代表數(shù)據(jù)集的一個(gè)樣本,每行中的各列代表樣本的特征。
2)矩陣W代表了模型參數(shù)。
3)矩陣Ο是預(yù)測(cè)結(jié)果或者數(shù)據(jù)集標(biāo)簽,如果需要執(zhí)行預(yù)測(cè)任務(wù),那么就是矩陣Ι、W求解矩陣Ο,得到分類結(jié)果;如果需執(zhí)行訓(xùn)練任務(wù),那么就是矩陣Ι、Ο求解矩陣W。
如果以上矩陣Ι的行N很大,則代表數(shù)據(jù)集龐大;如果矩陣W的列C2很大,則說(shuō)明模型復(fù)雜程度高;當(dāng)這兩者量級(jí)都達(dá)到一定程度時(shí),目前傳統(tǒng)的單機(jī)單卡訓(xùn)練模式已無(wú)法承載,需要考慮并行的方式訓(xùn)練。因此,可以選擇本文的數(shù)據(jù)并行和模型并行,矩陣相乘關(guān)系如圖6 所示。
圖6 深度學(xué)習(xí)中張量運(yùn)算示意圖Fig.6 Schematic diagram of tensor operation in deep learning
在圖6 中,左邊第一個(gè)矩陣Ι代表輸入樣本張量,每一行是一個(gè)樣本;左邊第二個(gè)矩陣W代表模型張量。下文分別說(shuō)明數(shù)據(jù)并行與模型并行所對(duì)應(yīng)的不同“切分”方式。
在數(shù)據(jù)并行中,將樣本的數(shù)據(jù)張量進(jìn)行切分,如圖7 所示。切分后的數(shù)據(jù)被送至各個(gè)訓(xùn)練分節(jié)點(diǎn),與完整的模型進(jìn)行運(yùn)算,最后將所有節(jié)點(diǎn)的梯度通過(guò)Ring All Reduce 改進(jìn)算法進(jìn)行交換。
圖7 數(shù)據(jù)并行張量運(yùn)算示意圖Fig.7 Schematic diagram of data parallel tensor operation
模型并行則是將模型張量進(jìn)行劃分,完整的數(shù)據(jù)被送至各個(gè)訓(xùn)練分節(jié)點(diǎn),與切分后的模型進(jìn)行運(yùn)算,最后將多個(gè)節(jié)點(diǎn)的feature map 合并,如圖8所示。
圖8 模型并行張量運(yùn)算示意圖Fig.8 Schematic diagram of model parallel tensor operation
本文并行結(jié)構(gòu)是將數(shù)據(jù)并行和模型并行的思想相結(jié)合,并利用1.2 節(jié)改進(jìn)的Ring All Reduce 算法實(shí)現(xiàn)各節(jié)點(diǎn)之間的并行后數(shù)據(jù)通信,實(shí)現(xiàn)一種更加優(yōu)化的GPU 并行算法。從張量的角度來(lái)描述,存在一個(gè)矩陣運(yùn)算Y=MatMul(A,B),A、B、Y都是張量,為簡(jiǎn)化起見,表示為Y=AB,那么存在以下2 種策略:
1)Y行切分(axis=0),A行切分(axis=0),B直接傳輸復(fù)制。
2)Y列切分(axis=1),A直接傳輸復(fù)制,B列切分(axis=1)。
假設(shè)邏輯上的Y運(yùn)算為:
A(128,40)×B(40,50)→Y(128,50)
兩種策略方式如圖9 所示。
圖9 兩種并行化訓(xùn)練張量的分布策略Fig.9 Distribution strategies of two parallel training tensor
從圖9 可以看出,當(dāng)張量A是樣本數(shù)據(jù),張量B是模型時(shí),圖9(a)為數(shù)據(jù)并行,圖9(b)為模型并行。圖9 中采用了兩個(gè)節(jié)點(diǎn)進(jìn)行并行訓(xùn)練,最后組合各個(gè)節(jié)點(diǎn)上的張量通過(guò)Ring All Reduce 改進(jìn)算法得到完整的輸出。如果通過(guò)兩個(gè)相鄰的張量矩陣乘法計(jì)算,前一個(gè)使用策略1,后一個(gè)使用策略2,完整的并行結(jié)構(gòu)如圖10 所示。
圖10 混合并行結(jié)構(gòu)Fig.10 Structure of hybrid parallel
從圖10 可以看出,MatMul0得到的Y0被MatMul1用于進(jìn)一步運(yùn)算,但兩者對(duì)同一個(gè)張量有所區(qū)別,MatMul0認(rèn)為Y0是行切分(axis=0),由于模型并行需要部分的模型與完整的數(shù)據(jù),即MatMul1需要一個(gè)完整的Y0輸入,這意味著前一層的輸出并不能作為后一層的直接輸入,為了解決這個(gè)問(wèn)題,需要在Ring All Reduce 改進(jìn)算法做數(shù)據(jù)交換時(shí)進(jìn)行必要的數(shù)據(jù)裁剪、拼接、搬運(yùn)和求和等操作,使得所有的策略都可以在并行環(huán)境下高效地得到自己想要的數(shù)據(jù)進(jìn)行下一步的運(yùn)算。
在深度學(xué)習(xí)分類任務(wù)中,針對(duì)模型不同部分采用不同的并行策略,從而提升效率。
在深度學(xué)習(xí)的圖像分類問(wèn)題中,其主干網(wǎng)絡(luò)所包含的權(quán)重小于全連接層,同步開銷小,所以對(duì)主干網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)并行處理;而全連接層通常權(quán)重較大,使得多節(jié)點(diǎn)間梯度傳輸開銷過(guò)高。為避免數(shù)據(jù)并行在通信過(guò)程中損耗引起訓(xùn)練性能下降,將全連接層的模型按列劃分,使用多個(gè)節(jié)點(diǎn)存儲(chǔ)分片,針對(duì)全連接層運(yùn)算進(jìn)行模型并行。
假設(shè)存在Gk,k∈[0,Nb-1],Nb為2 的指數(shù)冪個(gè)節(jié)點(diǎn)參與并行訓(xùn)練,整個(gè)分類網(wǎng)絡(luò)由主干網(wǎng)絡(luò)(ResNet50)、全連接層(Fully Connected Layer,F(xiàn)C)和Softmax 組成,其中k∈[0,Nb-3]節(jié)點(diǎn)負(fù)責(zé)主干網(wǎng)絡(luò)數(shù)據(jù)并行,負(fù)責(zé)模型并行,下文分別闡述具體方法。
2.3.1 主干網(wǎng)絡(luò)數(shù)據(jù)并行
主干網(wǎng)絡(luò)數(shù)據(jù)并行過(guò)程如下:
2.3.2 全連接層模型并行
單節(jié)點(diǎn)的全連接層正向傳播參數(shù)包括主干網(wǎng)絡(luò)輸出、網(wǎng)絡(luò)權(quán)重、偏差、偏差權(quán)重,全連接層輸入可描述為網(wǎng)絡(luò)輸出與網(wǎng)絡(luò)權(quán)重的乘積加上偏差與偏差權(quán)重的乘積。本文模型并行對(duì)全連接層按照主干網(wǎng)絡(luò)輸出緯度進(jìn)行分割,使用兩個(gè)節(jié)點(diǎn),考慮到每個(gè)節(jié)點(diǎn)的均衡性,采用等量的方式切分,具體模型的并行正向傳播過(guò)程描述如下:
輸入主干網(wǎng)絡(luò)輸出網(wǎng)絡(luò)權(quán)重
傳統(tǒng)全連接層反向傳播梯度與特征相乘得權(quán)重梯度,偏差與梯度相乘得偏差梯度,梯度與權(quán)重相乘得輸入梯度。同正向傳播過(guò)程,模型并行先將網(wǎng)絡(luò)參數(shù)切分后進(jìn)行反向傳播,具體流程如下:
實(shí)驗(yàn)數(shù)據(jù)采用在圖像分類領(lǐng)域常用的兩個(gè)公共數(shù)據(jù)集,分別是Cifar10 與mini ImageNet。Cifar10 是一個(gè)用于識(shí)別普適物體的小型數(shù)據(jù)集,共包含飛機(jī)、汽車、鳥類、貓、鹿、狗、蛙類、馬、船和卡車10 個(gè)類別的RGB 彩色圖片。圖片的尺寸為32×32 像素,數(shù)據(jù)集中一共有50 000 張訓(xùn)練圖像和10 000 張測(cè)試圖像。ImageNet 共包含1 500 萬(wàn)幅圖像,分為2 萬(wàn)多個(gè)類 別。本 文mini ImageNet為從ImageNet[21]中選取的前100 類,總共包含129 395 張訓(xùn)練圖片及50 000 張驗(yàn)證圖像組成的數(shù)據(jù)集。
本文所有實(shí)驗(yàn)都采用2080Ti,分別在單機(jī)和2GPUs、4GPUs、8GPUs 環(huán)境下進(jìn)行。每組實(shí)驗(yàn)結(jié)果在隨機(jī)選擇訓(xùn)練樣本的前提下均重復(fù)兩次取平均值。
加速比是作為衡量并行計(jì)算性能的常用指標(biāo),其主要意義在于:對(duì)于相同業(yè)務(wù)流程,在單節(jié)點(diǎn)消耗的時(shí)間T1與并行計(jì)算后多節(jié)點(diǎn)消耗時(shí)間Tn的比值,比值的變化對(duì)應(yīng)性能的好壞,在理想狀態(tài)下,當(dāng)節(jié)點(diǎn)增長(zhǎng)與加速比成正比時(shí)為最優(yōu)情況。
使用Cifar10 數(shù)據(jù)集在擁有兩個(gè)節(jié)點(diǎn)的主機(jī)上進(jìn)行100 次單機(jī)多卡數(shù)據(jù)并行訓(xùn)練,在Vgg16 及Resnet50 這兩個(gè)網(wǎng)絡(luò)下,比較不同Batch Size 時(shí)Ring All Reduce 算法和改進(jìn)后算法較參數(shù)服務(wù)器算法的加速比,以此衡量算法在傳輸性能上的表現(xiàn)。
圖11 為使用兩種算法進(jìn)行數(shù)據(jù)并行時(shí)的加速比對(duì)比,可以看到,無(wú)論Vgg16 還是Resnet50,隨著Batch Size 的增大,兩種算法的加速比存在一定程度的下降,這主要是由于數(shù)據(jù)量的增大使得傳輸耗時(shí)增加導(dǎo)致。Vgg16 網(wǎng)絡(luò)在Batch Size 為4 時(shí)兩種算法的差距最大,同樣當(dāng)Batch Size 為16 時(shí),兩種算法在Resnet50 也達(dá)到了最高25%左右的性能差距,因此可以得出,對(duì)于不同網(wǎng)絡(luò),均存在一個(gè)最優(yōu)Batch Size 使得改進(jìn)算法性能達(dá)到最優(yōu)??傮w而言,改進(jìn)算法均能獲得較Ring All Reduce 算法更好的性能,且加速比始終大于1。
圖11 Ring All Reduce 及其改進(jìn)算法性能對(duì)比Fig.11 Performance comparison of Ring All Reduce and its improved algorithms
首先驗(yàn)證數(shù)據(jù)并行在不同節(jié)點(diǎn)數(shù)量下的性能表現(xiàn),使用Cifar10 數(shù)據(jù)集,通過(guò)訓(xùn)練收斂性、時(shí)間等指標(biāo)觀察其性能。
實(shí)驗(yàn)在Resnet50 網(wǎng)絡(luò)上進(jìn)行圖片分類,采用本文Ring All Reduce 改進(jìn)算法實(shí)現(xiàn)數(shù)據(jù)傳輸。訓(xùn)練與測(cè)試Batch Size 均設(shè)置為64,訓(xùn)練集進(jìn)行6 000 次,測(cè)試集進(jìn)行1 000 次,初始學(xué)習(xí)率設(shè)為0.001,分別在3 000 及5 000 次后減小10 倍。
分別在節(jié)點(diǎn)數(shù)為2、4、8 的集群上進(jìn)行數(shù)據(jù)并行訓(xùn)練,實(shí)驗(yàn)結(jié)果如表1 和圖12 所示。
表1 多節(jié)點(diǎn)Cifar10 數(shù)據(jù)并行訓(xùn)練不同迭代次數(shù)損失率對(duì)比Table 1 Comparison of loss rate of different iterations in parallel training of multi node Cifar10 data
圖12 Cifar10 多節(jié)點(diǎn)數(shù)據(jù)并行訓(xùn)練及測(cè)試損失率曲線Fig.12 Cure of parallel training and test loss rate of Cifar10 multi node data
表1 所示為在不同節(jié)點(diǎn)數(shù)上進(jìn)行數(shù)據(jù)并行訓(xùn)練損失率隨迭代次數(shù)的變化情況,對(duì)比8 個(gè)節(jié)點(diǎn)與2 個(gè)節(jié)點(diǎn)數(shù)據(jù)可以發(fā)現(xiàn),并行節(jié)點(diǎn)數(shù)的增加會(huì)導(dǎo)致一定程度的損失率增加,在迭代次數(shù)為1 000 時(shí),兩者差距達(dá)到11%,但最終差距不大,6 000 次迭代后差距僅為2%,這說(shuō)明數(shù)據(jù)并行對(duì)于訓(xùn)練最終精度影響較小。
從圖12 可以得出以下3 點(diǎn):
1)數(shù)據(jù)并行后訓(xùn)練及測(cè)試損失率會(huì)隨著并行節(jié)點(diǎn)數(shù)的增多而有所增長(zhǎng)。
2)參照表1 中訓(xùn)練損失率及圖12(a)曲線,8 個(gè)節(jié)點(diǎn)數(shù)據(jù)并行在開始訓(xùn)練時(shí)收斂趨勢(shì)較2 個(gè)節(jié)點(diǎn)更為緩慢,存在一定差距,迭代3 000 次后差距減小且保持在3%范圍內(nèi),最終收斂點(diǎn)不超過(guò)2%,這主要是由于節(jié)點(diǎn)增加所帶來(lái)的數(shù)據(jù)交換消耗降低了一定效率。
3)從圖12(b)可以看出,在數(shù)據(jù)并行測(cè)試集測(cè)試過(guò)程中,同樣迭代次數(shù)下,4 節(jié)點(diǎn)相較8 節(jié)點(diǎn)的曲線雖也然同樣存在收斂放緩現(xiàn)象,但最終收斂點(diǎn)卻更優(yōu),這說(shuō)明節(jié)點(diǎn)數(shù)量與效率存在非線性關(guān)系。
將訓(xùn)練后權(quán)重在單卡上測(cè)試,并以此時(shí)間作為參照,繪制節(jié)點(diǎn)數(shù)與測(cè)試集上測(cè)試時(shí)間關(guān)系,如圖13所示。
圖13 Cifar10 多節(jié)點(diǎn)數(shù)據(jù)并行節(jié)點(diǎn)數(shù)與測(cè)試時(shí)間關(guān)系Fig.13 Relationship between the number of parallel nodes and test time of Cifar10 multi node data
從圖13 可以看出,增加并行節(jié)點(diǎn)數(shù)量可以加速訓(xùn)練,這也體現(xiàn)了數(shù)據(jù)并行后的優(yōu)勢(shì)[22],但也可以看到,隨著節(jié)點(diǎn)數(shù)量的增加,曲線斜率變大,加速效果變緩,當(dāng)節(jié)點(diǎn)數(shù)量不斷增加時(shí)使得數(shù)據(jù)交換次數(shù)更多,耗時(shí)更長(zhǎng)[23-25],最終導(dǎo)致不能達(dá)到理想狀態(tài)下的線性加速。
從以上實(shí)驗(yàn)結(jié)果可知,多節(jié)點(diǎn)的數(shù)據(jù)并行訓(xùn)練對(duì)于最終分類精度影響較小,但加速效果受到一定限制,當(dāng)使用8 節(jié)點(diǎn)數(shù)據(jù)并行訓(xùn)練時(shí)速度下降最為明顯,因此在保證其余實(shí)驗(yàn)環(huán)境一致的前提下,同樣使用8 節(jié)點(diǎn)并行可以最大化反映提升效果,在測(cè)試集上經(jīng)1 000 次迭代測(cè)試后損失率曲線如圖14(a)所示,時(shí)間對(duì)比如圖14(b)所示。由圖14(a)可以看出,本文提出的并行方法相較于數(shù)據(jù)并行策略最終收斂效果基本相同,可見該方法對(duì)于網(wǎng)絡(luò)精度影響較小。從圖14(b)可知,相較于數(shù)據(jù)并行,加速效果有小幅改善,并將測(cè)試時(shí)間從9 min 縮短至7.8 min,這主要是由于模型并行通信內(nèi)容為feature map,數(shù)據(jù)并行通信內(nèi)容為參數(shù),本文的策略是將全連接層使用模型并行,其余部分使用數(shù)據(jù)并行,這對(duì)于類別較少的Cifar10,全連接層總參數(shù)量與feature map 差距較小,因此提升有限,當(dāng)網(wǎng)絡(luò)feature map 遠(yuǎn)小于參數(shù)量時(shí),在通信上性能更優(yōu)。
圖14 Cifar10 數(shù)據(jù)并行與改進(jìn)并行測(cè)試對(duì)比Fig.14 Comparison of Cifar10 data parallel and improve parallel test
本節(jié)采用數(shù)據(jù)集mini ImageNet 進(jìn)一步驗(yàn)證提出的并行策略性能。使用Resnet50 作為訓(xùn)練網(wǎng)絡(luò),實(shí)驗(yàn)環(huán)境為單機(jī)多卡GPU 集群,最大程度地排除帶寬對(duì)于數(shù)據(jù)傳輸?shù)挠绊?,采用本文提出的Ring All Reduce 改進(jìn)算法作為集群通信方式,在節(jié)點(diǎn)為1、2、4、8 上對(duì)比數(shù)據(jù)并行與改進(jìn)后并行方法的訓(xùn)練時(shí)間,驗(yàn)證該方法對(duì)于進(jìn)一步提升加速的有效性。
實(shí)驗(yàn)Batch Size 設(shè)置為64,迭代90 次后實(shí)驗(yàn)結(jié)果如表2 所示,其中Acc 代表訓(xùn)練的準(zhǔn)確率,T表示訓(xùn)練完成時(shí)間。
表2 mini ImageNet 數(shù)據(jù)集多節(jié)點(diǎn)數(shù)據(jù)并行與本文并行方法對(duì)比Table 2 Comparison of multi node data parallel and Proposed parallel method in mini ImageNet dataset
分析表2 可知,在mini ImageNet 數(shù)據(jù)集上,無(wú)論采用數(shù)據(jù)并行還是本文并行方法,隨著節(jié)點(diǎn)數(shù)量的增加,訓(xùn)練時(shí)間逐漸縮短,但都會(huì)帶來(lái)一定程度的準(zhǔn)確率下降,對(duì)比單卡訓(xùn)練,存在2%左右的下降,這與在Cifar10 數(shù)據(jù)集上得到的結(jié)論相同,結(jié)合表2 和圖15(a),本文提出的方法在加速效果上相比數(shù)據(jù)并行方法有所提升。對(duì)比圖15(a)可以看出,本文方法在多節(jié)點(diǎn)并行下優(yōu)勢(shì)更為明顯。圖15(b)展示了在同樣節(jié)點(diǎn)數(shù)情況下Cifar10 與mini ImageNet 數(shù)據(jù)集采用該方法并行訓(xùn)練的加速比情況,在使用2 個(gè)節(jié)點(diǎn)并行時(shí),Cifar10 數(shù)據(jù)集進(jìn)行訓(xùn)練所得到的加速比稍好于同樣節(jié)點(diǎn)數(shù)的mini ImageNet 數(shù)據(jù)集,隨著節(jié)點(diǎn)數(shù)的增長(zhǎng),加速比不斷提升,但mini ImageNet 數(shù)據(jù)集所得到的加速比幅度更大,兩者差距也越明顯,這主要是因?yàn)榇藭r(shí)feature map 量遠(yuǎn)小于大量數(shù)據(jù)的參數(shù)量,使得加入模型并行后在通信量上反而相對(duì)更少,速度更快,由此可進(jìn)一步說(shuō)明,當(dāng)進(jìn)行海量數(shù)據(jù)分類時(shí),本文提出的方法能有效提高效率。
圖15 數(shù)據(jù)并行與本文并行方法對(duì)比Fig.15 Comparison between data parallelism and the parallel method in this paper
針對(duì)圖像分類場(chǎng)景大規(guī)模數(shù)據(jù)及模型訓(xùn)練效率低等問(wèn)題,本文通過(guò)分節(jié)點(diǎn)間隔配對(duì)原則優(yōu)化數(shù)據(jù)傳輸流程,提出一種改進(jìn)時(shí)間復(fù)雜度的Ring All Reduce 數(shù)據(jù)通信算法,用于提升數(shù)據(jù)并行多設(shè)備間傳輸效率,并提出混合并行算法,將主干網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)并行處理,全連接層采用模型并行處理,解決數(shù)據(jù)并行模式難以支撐大規(guī)模網(wǎng)絡(luò)參數(shù)及加速延緩的問(wèn)題。實(shí)驗(yàn)結(jié)果表明,本文提出的混合并行算法相比并行方法,最終測(cè)試與訓(xùn)練精度差異不大,但在加速效果上衰減幅度更小,效果更好,相比Cifar10 等類別較少的數(shù)據(jù)集,在mini ImageNet 上具有較大的加速優(yōu)勢(shì),更適用于海量圖像分類數(shù)據(jù)并行訓(xùn)練。后續(xù)將針對(duì)推薦網(wǎng)絡(luò)等結(jié)構(gòu)復(fù)雜模型進(jìn)行優(yōu)化及應(yīng)用,以進(jìn)一步提高傳輸效率。