亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種改進的分布式同步梯度下降法

        2021-08-06 06:23:16朱小飛
        關(guān)鍵詞:實驗模型

        李 梁,王 也,朱小飛

        (重慶理工大學(xué) 計算機科學(xué)與工程學(xué)院,重慶 400054)

        深度學(xué)習(xí)由于在語音、視覺和自然語言處理等領(lǐng)域的巨大成功而越來越受歡迎。有一種趨勢是使用更深、更復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型,訓(xùn)練的數(shù)據(jù)集則越來越大。這樣的模型通常需要幾個小時、幾天甚至幾周才能完成訓(xùn)練,分布式的訓(xùn)練模型的目的就是提升模型的訓(xùn)練速度[1-10]。采用遠程通信機制(RDMA)來優(yōu)化[1],因為在分布式環(huán)境下,并行處理可以更快地完成計算部分,而網(wǎng)絡(luò)通信造成的延遲在整個過程中可能變得更加明顯,但是優(yōu)化后的分布式集群則表現(xiàn)出了良好的性能,且隨著計算節(jié)點的增加,表現(xiàn)出良好的可擴展性。但是RMDA需要的是InfiniBand,因此也未必是一個直接可用的方法。Ferdinand等[2]提出對集群的性能做出一個評估,然后做出參數(shù)的設(shè)定以及節(jié)點的分配,這樣做的確可以充分利用集群的計算能力,但同時對設(shè)備的要求十分苛刻。

        在本文中,重點研究隨機梯度下降法(SGD)在異構(gòu)集群中的優(yōu)化,其中主要流程是一組計算節(jié)點(worker),結(jié)果經(jīng)過計算各自所分配的樣本,然后將計算之后的梯度反饋給參數(shù)服務(wù)器。在這里有2種方法可以將梯度反饋給參數(shù)服務(wù)器,一種是異步梯度下降法(ASGD)[3];另一種是同步梯度下降法(SSGD)[4]。SSGD往往未能實現(xiàn)自己的理論計算加速,是由于異構(gòu)集群中各個節(jié)點的計算能力差異導(dǎo)致worker之間返回的梯度時間不同,而同步梯度下降法需要等待所有節(jié)點均計算完成之后才進行下一步任務(wù),這大大減緩了模型的更新速度。因此,由于時間浪費在等待計算能力差的worker(散亂者)上,傳統(tǒng)的SSGD常常被認為是不切實際的。Chen等[5]提出的back up的SSGD重新審視了這些傳統(tǒng)觀念,并考察了這2種方法的弱點,證明了第3種方法,即與備份worker同步優(yōu)化,可以避免異步噪音,同時減輕最壞的散亂者。雖然這種緩解方法利用了大部分工作節(jié)點,但其他的工作節(jié)點被丟棄,這并不是非常理想的[2]。也有學(xué)者提出了一種并行化SSGD的方法,主要想法是確定每個worker的計算時間,然后結(jié)合所有worker的不同貢獻,提供了一個收斂分析和優(yōu)化組合功能,這樣做也能夠提升模型的訓(xùn)練速度[11-12]。但是這樣做需要對各個節(jié)點的計算能力進行一個評估,因此牽扯的因素比較多,較為復(fù)雜。

        在SSGD具備保證模型訓(xùn)練準(zhǔn)確性的前提下,提出一種參數(shù)的分配機制來解決分布式訓(xùn)練同步梯度的效率問題,這樣不僅能夠提高對worker節(jié)點的利用率,而且不需要對設(shè)備提出要求即可實現(xiàn),使得分布式神經(jīng)網(wǎng)絡(luò)的訓(xùn)練更方便提速。

        1 對分布式神經(jīng)網(wǎng)絡(luò)訓(xùn)練的分配優(yōu)化

        在同步更新的時候,每次梯度更新,要等所有分發(fā)出去的數(shù)據(jù)計算完成,返回結(jié)果,把梯度累加計算均值之后,再更新參數(shù)。這樣的好處是loss的下降比較穩(wěn)定,但是這個的壞處也很明顯,處理的速度取決于最慢的那個分片計算的時間,所以本文采取一個分配機制,來為計算能力差的節(jié)點減輕計算量,相反能力強的節(jié)點加重計算量。

        1.1 參數(shù)的設(shè)置

        1)合計的副本數(shù)(replicas to aggregate)

        在分布式神經(jīng)網(wǎng)絡(luò)中,同步梯度的更新是通過worker計算完成之后,一同傳遞給參數(shù)服務(wù)器,然后再梯度平均,之后更新參數(shù),如圖1所示。

        圖1 同步梯度下降法運行流程框圖

        從圖1中可以看出:在梯度平均之前必須要等待GPU0到GPU n所有的計算節(jié)點計算完成的梯度。那么合計副本數(shù)是指在梯度平均時我們需要平均多少個梯度,以圖1為例,合計副本數(shù)就是n,因為我們將要平均n個梯度。

        2)計算的副本數(shù)(total num replicas)

        在單機單GPU的訓(xùn)練中,數(shù)據(jù)的輸入是以一個batch為單位訓(xùn)練的。在多GPU中,數(shù)據(jù)一次處理n個batch(假設(shè)是n個GPU訓(xùn)練),每個GPU處理一個batch的數(shù)據(jù)計算。在這里,物理設(shè)備數(shù)就是n,計算的副本數(shù)也是n,因為每次需要計算n個batch,因此計算的副本數(shù)是指每次需要計算的batch的數(shù)量。

        3)傳統(tǒng)的同步梯度下降法

        傳統(tǒng)的方法中,合計的副本數(shù)等于計算的副本數(shù),這兩者也都等于物理設(shè)備數(shù)。那么,每個GPU的計算時間Tnum如式(1)所示,最終消耗的時間Tf如式(2)所示。

        式中:num代表物理設(shè)備數(shù);B代表每個batch的大??;CA代表GPU的計算能力;Tnet代表網(wǎng)絡(luò)帶寬的耗時。從式(1)(2)中看出:最終的計算時間取決于耗時最長的GPU的計算時間加上網(wǎng)絡(luò)帶寬的耗時。

        1.2 對同步梯度的改進

        將基于同步梯度下降法的batch size分配機制在原有的基礎(chǔ)上做出新的設(shè)計與修改,具體流程如圖2所示,其中物理設(shè)備數(shù)為n,計算副本數(shù)為m,合計副本數(shù)也為m。

        圖2 改進的同步梯度下降法流程框圖

        1.2.1 樣本的切分

        在改進的同步梯度下降法中,首先需要進行樣本的切分,這樣能夠縮小每個GPU之間的計算差異,例如以一個單位為500的batch size,2個GPU(性能差距較大)對batch進行計算,那么它們的時間差肯定是大于單位為50的batch size。但是把batch單純的設(shè)置小并不是一個合理的方案,因為這會對準(zhǔn)確度有所影響,所以我們才進行樣本的切分,這樣就如同把單位為500的batch size替換成10個單位為50的batch一樣,等這10個batch size的梯度全部計算完成之后才開始進行更新,這樣就不會對準(zhǔn)確率有影響。

        1.2.2 容器的用途

        在樣本的切分之后,把切分后的樣本存放在容器里,然后逐個分配給各個節(jié)點。由于樣本是經(jīng)過切分的,所以物理設(shè)備數(shù)是不能一次分配完樣本的,因此計算的副本數(shù)是大于物理設(shè)備數(shù)的。

        1.2.3 計算節(jié)點與梯度存儲器

        計算節(jié)點在開始計算之后,便從容器中逐個的提取樣本,每個GPU每次輸入一個batch,計算完成之后便將梯度傳遞到梯度存儲器中,如果梯度存儲器中的梯度數(shù)量尚未達到合計的副本數(shù),那么容器將繼續(xù)把剩余的樣本池中的一個輸入分配給剛剛上傳梯度的GPU(剛剛完成梯度計算)。如果梯度存儲器中的梯度等于合計的副本數(shù),那么容器開始停止分配,計算節(jié)點也停止計算,梯度存儲器將梯度上傳給參數(shù)服務(wù)器。如果我們控制計算副本數(shù)與合計副本數(shù)相等,那么樣本池里的樣本是在梯度存儲器上傳梯度之前剛好完成計算的。如果我們控制計算副本數(shù)大于合計的副本數(shù),如式(3)所示。這樣便可以加入文獻[5]中所提到的backup worker方法。

        計算副本數(shù)=合計副本數(shù)+backup worker(3)

        1.2.4 耗時的估算

        在改進的同步梯度下降法中,各個工作節(jié)點之間不再像傳統(tǒng)的方法那樣,在計算完成梯度之后等待其他未完成計算的節(jié)點,而是在計算完成之后上傳梯度到梯度存儲器中,之后馬上去計算下次容器中分配的樣本,這樣做可以實現(xiàn)對GPU的充分利用,使得計算能力強的節(jié)點計算多個樣本,能力差的計算相對少量的樣本,從而實現(xiàn)模型更快速地訓(xùn)練。

        2 實驗分析

        2.1 實驗設(shè)備

        操作系統(tǒng)是Ubuntu16.04,編譯環(huán)境是python3.6,深度學(xué)習(xí)框架是TensorFlow,GPU是4塊GTX 1080Ti,相關(guān)配置為cuda9.0和cudnn7,分布式梯度更新采用同步梯度下降法。為了更好地反映出異構(gòu)集群的各個節(jié)點的計算能力的差距,實驗中采用1個CPU和3個GPU構(gòu)成4個計算節(jié)點,承擔(dān)worker的責(zé)任,參數(shù)服務(wù)器采用CPU作為節(jié)點,最后一塊GPU做備份節(jié)點。集群結(jié)構(gòu)如圖3所示。

        圖3 集群結(jié)構(gòu)框圖

        2.2 實驗數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)模型

        實驗1的實驗數(shù)據(jù)是一個帶有標(biāo)注的英文短語正負情緒判斷,分別為0和1。其中每句的長度大約為40個單詞,共7 086個句子,2 324個不重復(fù)的單詞。對于這個2組語料,各抽取80%的文本作為訓(xùn)練集,20%文本為測試集。神經(jīng)網(wǎng)絡(luò)模型是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,其中輸入的每個張量大小為batch size*1*41,batch size是指一次訓(xùn)練所需要的樣本數(shù)量,為可調(diào)控參數(shù)。神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是2個循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)加上1個全鏈接層和1個SoftMax函數(shù),最終輸出預(yù)測結(jié)果。

        圖4 實驗1網(wǎng)絡(luò)結(jié)構(gòu)流程框圖

        實驗2的數(shù)據(jù)則是經(jīng)典的mnist手寫體數(shù)據(jù)集,訓(xùn)練集有60 000個用例,即該文件里包含了60 000個標(biāo)簽內(nèi)容,每一個標(biāo)簽的值為0~9的某個數(shù),每張圖片在處理之后的矩陣維度為28*28的大小。其中把80%的圖片作為訓(xùn)練集,20%作為測試集。其中輸入的每個張量大小為batch size*28*28*1,之后有2個block,每個block包含1個卷積層(Convolutional layer)、1個ReLu激活函數(shù)和1個池化層(Max pooling),最后外接2個全連接層(fully connected layer),最終輸出圖片的預(yù)測分類。實驗2詳細的網(wǎng)絡(luò)結(jié)構(gòu)流程如圖5所示。

        圖5 實驗2網(wǎng)絡(luò)結(jié)構(gòu)流程框圖

        實驗3的數(shù)據(jù)集為cifar10,它擁有10 000張24*24大小的彩色圖片,即圖片的通道數(shù)為3。數(shù)據(jù)集的標(biāo)簽是0~9的某個數(shù),屬于圖像分類預(yù)測問題。其中我們把80%的圖片作為訓(xùn)練集,20%作為測試集。實驗3的神經(jīng)網(wǎng)絡(luò)模型中,輸入大小是batch size*24*24*3,網(wǎng)絡(luò)結(jié)構(gòu)包含了卷積層、空洞卷積層(Atrous Convolution)、BN層及池化層等,最終輸入圖片的預(yù)測分類,具體網(wǎng)絡(luò)結(jié)構(gòu)流程如圖6所示。

        圖6 實驗3網(wǎng)絡(luò)結(jié)構(gòu)流程框圖

        實驗4數(shù)據(jù)集為衛(wèi)星圖片數(shù)據(jù)集,其中每張圖片大小為576*384,通道數(shù)為16通道,共約50萬張圖片,每張圖片大小為300萬個像素點,訓(xùn)練的標(biāo)簽是一種掩膜的圖片[12],其中有約300個像素點被打上標(biāo)簽1,其余像素全是0,這些標(biāo)簽1的位置是熱帶氣旋的坐標(biāo)點。實驗4的網(wǎng)絡(luò)模型采用DeepLabv3+的模型[11-12],屬于圖像的語義分割,張量的輸入大小為batch size*576*384*16,網(wǎng)絡(luò)結(jié)構(gòu)包含卷積層、池化層、空洞卷積層以及反卷積層(deconvolution layer),網(wǎng)絡(luò)模型引入經(jīng)典的ASPP思想、殘差網(wǎng)絡(luò)以及encode+decoder方法[11],網(wǎng)絡(luò)的輸出是同等規(guī)模的掩膜圖片,通過計算miou得出熱帶氣旋的坐標(biāo)覆蓋率,模型如圖7所示。

        圖7 實驗4網(wǎng)絡(luò)結(jié)構(gòu)流程框圖

        2.3 實驗結(jié)果的對比與分析

        針對實驗1~4的數(shù)據(jù)集以及網(wǎng)絡(luò)模型,通過多次實驗分別統(tǒng)計出了單機、多機(4個節(jié)點)以及改進之后的多機(4個節(jié)點)的耗時(單位:s),實驗結(jié)果如表1所示。

        表1 實驗耗時統(tǒng)計結(jié)果 s

        從實驗結(jié)果可以看出:多機訓(xùn)練相對于單機訓(xùn)練可以提升模型的訓(xùn)練速度,但是由于在同步梯度下降法中的梯度的更新取決于能力最差的計算節(jié)點,所以在異構(gòu)的集群中的加速效果并不理想,但是在引入所提出的優(yōu)化算法之后可以大幅度提升訓(xùn)練速度,在實驗1~4中均可得出相同的結(jié)論[13]。

        準(zhǔn)確率統(tǒng)計結(jié)果如表2所示,從圖中可以看出誤差控制在范圍之內(nèi)。

        表2 實驗準(zhǔn)確率統(tǒng)計結(jié)果

        2.4 實驗參數(shù)設(shè)置

        改進的同步梯度下降法中有3個敏感參數(shù),分別是物理設(shè)備數(shù)(n)、計算副本數(shù)(m)以及合計副本數(shù)(m)。本次實驗中的物理設(shè)備數(shù)n為4(3個GPU計算節(jié)點+1個CPU計算節(jié)點),計算副本數(shù)與合計副本數(shù)都為m,物理設(shè)備數(shù)n與m之間的關(guān)系如式(4)所示。

        式中:α代表m和n之間的系數(shù)關(guān)系。針對實驗1、2、3、4對參數(shù)α進行敏感分析,實驗結(jié)果如圖8、9、10、11所示,其中橫坐標(biāo)代表α參數(shù),縱坐標(biāo)代表訓(xùn)練模型的耗時,圖中可以直觀地表示出α參數(shù)對訓(xùn)練模型耗時的影響。

        圖8 實驗1中α參數(shù)對耗時的影響曲線

        圖9 實驗2中參數(shù)對耗時的影響曲線

        圖10 實驗3中α參數(shù)對耗時的影響曲線

        圖11 實驗4中α參數(shù)對耗時的影響曲線

        對比圖8~11的參數(shù)α敏感實驗數(shù)據(jù)與表1中的多機耗時以及優(yōu)化的多機耗時,發(fā)現(xiàn)當(dāng)參數(shù)α等于1時,即物理設(shè)備數(shù)(n)=計算副本數(shù)(m)=合計副本數(shù)(m),耗時等同于傳統(tǒng)非優(yōu)化的方法。隨著α參數(shù)的增加,各個實驗集群耗時出現(xiàn)降低狀況,代表優(yōu)化的同步梯度下降法相比傳統(tǒng)方法已經(jīng)表現(xiàn)出了更加出色的加速效果,當(dāng)參數(shù)α控制在2~2.25之間,出現(xiàn)了訓(xùn)練耗時最低的情況,這代表加速狀態(tài)到達理想最優(yōu)值。隨著α參數(shù)繼續(xù)增大,耗時開始逐步提升,這表明加速效果已經(jīng)過了峰值。

        對實驗1~4參照圖8~11按照平均加速比的方式繪制α對加速比的影響圖,平均加速比如式(5)所示。

        式中:Rα(mean)代表實驗1、2、3、4中參數(shù)α對應(yīng)的平均加速比;N代表實驗序號,本次實驗中N=4;Tαi代表在第i次實驗中α參數(shù)對應(yīng)的耗時;Ti(α=1)代表在第i次實驗中α=1的耗時量,即非優(yōu)化的多機耗時。通過式(5)繪制出圖12,其中橫坐標(biāo)代表α,縱坐標(biāo)代表Rα(mean)。

        圖12 α參數(shù)對應(yīng)加速比曲線

        圖12的實驗結(jié)果顯示:當(dāng)α等于1時,Rα(mean)表示傳統(tǒng)方法與改進方法相同,隨著α的增大,加速比不斷提高,大約在2.25左右到達加速比最大值1.9,即表示相對傳統(tǒng)多機算法,改進后的算法可以提升1.9倍的模型訓(xùn)練速度。

        3 結(jié)論

        提出了一種改進的同步梯度下降法,擬在分布式神經(jīng)網(wǎng)絡(luò)訓(xùn)練中有更快速的訓(xùn)練。該方法主要通過添加一個容器來實現(xiàn)對樣本的切分,進而使訓(xùn)練模型中存在一個樣本動態(tài)分配機制,最終使各個工作節(jié)點能夠被充分利用,避免了同步梯度下降中的等待機制,克服了異構(gòu)集群中各個計算節(jié)點存在差距的缺點,加速模型訓(xùn)練。對于計算副本數(shù)與物理設(shè)備數(shù)之間的α參數(shù)關(guān)系,進行實驗分析,得出了能更好地控制加速模型訓(xùn)練的參數(shù)。引入更復(fù)雜的備份節(jié)點以及α參數(shù)對神經(jīng)網(wǎng)絡(luò)其他超參數(shù)的影響將是下一步的研究內(nèi)容。

        猜你喜歡
        實驗模型
        一半模型
        記一次有趣的實驗
        微型實驗里看“燃燒”
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        做個怪怪長實驗
        3D打印中的模型分割與打包
        NO與NO2相互轉(zhuǎn)化實驗的改進
        實踐十號上的19項實驗
        太空探索(2016年5期)2016-07-12 15:17:55
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        亚洲www视频| 草草浮力地址线路①屁屁影院| 中文字幕无码家庭乱欲| 日本专区一区二区三区| 中文字幕文字幕一区二区| 亚洲av无码国产精品色软件| 日本爽快片18禁免费看| 亚洲AV无码精品色欲av| 麻豆av在线免费观看精品| 91久久精品国产综合另类专区| 亚洲av片一区二区三区| 免费成人福利视频| 精品视频一区二区在线观看| 麻豆精品国产av在线网址| 少妇丰满大乳被男人揉捏视频| 99热这里只有精品4| 国产精品高清亚洲精品| 日本一区二区三区视频国产| 国产精品51麻豆cm传媒| jjzz日本护士| 精品中文字幕久久久人妻| 日韩av无码社区一区二区三区| 成人片黄网站色大片免费观看cn | 国产在线播放免费人成视频播放| 爽爽影院免费观看| 久久av高潮av无码av喷吹| 国产精品白浆视频一区| 国产精品高清视亚洲一区二区| 隔壁老王国产在线精品| 久久亚洲中文字幕无码| 久久精品女人天堂AV一个| 国语淫秽一区二区三区四区| 国产精品一区二区在线观看| 国产福利片无码区在线观看| 国内精品少妇久久精品| 国产精品极品美女自在线观看免费 | 国产主播无套内射一区| av网站免费观看入口| 免费超爽大片黄| 国产特级全黄一级毛片不卡| 美腿丝袜一区在线观看|