• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于數(shù)據(jù)并行的神經(jīng)語言模型多卡訓(xùn)練分析

      2018-08-17 08:38:36李垠橋阿敏巴雅爾朱靖波
      中文信息學(xué)報 2018年7期
      關(guān)鍵詞:消耗梯度神經(jīng)網(wǎng)絡(luò)

      李垠橋,阿敏巴雅爾,肖 桐,薄 樂,朱靖波,張 俐

      (東北大學(xué) 自然語言處理實驗室,遼寧 沈陽 110819)

      0 引言

      使用神經(jīng)網(wǎng)絡(luò)進行語言建模依賴于大規(guī)模的語料數(shù)據(jù),同時更大規(guī)模的參數(shù)設(shè)置一般來說也會對神經(jīng)語言模型的訓(xùn)練有著正向的作用[1-3]。但當面對海量的數(shù)據(jù)和大規(guī)模的網(wǎng)絡(luò)參數(shù)時,如何更加快速地進行模型訓(xùn)練便成了一個亟待解決的問題。

      針對此問題,研究人員引入了GPU加快矩陣運算,為了進一步獲得速度提升,訓(xùn)練也開始從單一設(shè)備轉(zhuǎn)變到多設(shè)備并行。其主要方法有兩種,數(shù)據(jù)并行和模型并行[4]。本文主要針對數(shù)據(jù)并行進行研究,該方法將數(shù)據(jù)分成若干部分,在多個設(shè)備上進行訓(xùn)練,以達到加速的效果。但該方法的簡單實現(xiàn)并未達到令人滿意的速度提升[5],問題在于訓(xùn)練過程中,設(shè)備間的數(shù)據(jù)傳輸占用大量時間。實驗中,我們使用四張NVIDIA TITAN X (Pascal)GPU卡對循環(huán)神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,數(shù)據(jù)傳輸?shù)臅r間占比高達70%。可以看出減小這部分耗時成為解決多設(shè)備訓(xùn)練中的重要問題。

      科研人員針對如何在單位時間內(nèi)傳輸大量的數(shù)據(jù)進行了研究,提出了許多可行的方法,如異步參數(shù)更新[6]、基于采樣的更新[7]等。本文主要針對使用All-Reduce算法以及采樣策略的神經(jīng)網(wǎng)絡(luò)梯度更新進行實驗,在不同設(shè)備數(shù)量下訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型[8],對比分析時間消耗隨設(shè)備數(shù)量的變化趨勢。實驗中,使用上述兩種方法訓(xùn)練的循環(huán)神經(jīng)語言模型相對點對點結(jié)構(gòu)在四張NVIDIA TITAN X (Pascal)GPU設(shè)備環(huán)境下分別可節(jié)約25%和41%左右的時間。

      1 面向神經(jīng)語言模型的數(shù)據(jù)傳輸

      1.1 數(shù)據(jù)并行訓(xùn)練

      數(shù)據(jù)并行的方法最早由Jeffrey Dean等人提出[4],將數(shù)據(jù)分散到不同的設(shè)備中訓(xùn)練,過程如圖1所示,參數(shù)按照式(1)進行更新。

      (1)

      圖1 數(shù)據(jù)并行訓(xùn)練與單設(shè)備訓(xùn)練過程對比

      1.2 數(shù)據(jù)傳輸方法

      1.2.1 點對點的數(shù)據(jù)傳輸

      點對點數(shù)據(jù)傳輸是一種常見的參數(shù)同步策略,采用中心化結(jié)構(gòu),如圖2(a)所示。網(wǎng)絡(luò)中設(shè)置一個參數(shù)服務(wù)器,保存全局的網(wǎng)絡(luò)參數(shù),其余每臺設(shè)備在計算好自己的權(quán)重梯度后將其發(fā)送給參數(shù)服務(wù)器,然后進入等待狀態(tài)。參數(shù)服務(wù)器端收集到全部設(shè)備的梯度后,將它們累加到自身的網(wǎng)絡(luò)參數(shù)上,之后再將這個更新后的參數(shù)值返回給每個計算設(shè)備,完成一個minibatch的更新。整個過程如圖3所示,主要分為梯度計算、梯度收集、更新模型和回傳參數(shù)四個部分。

      圖2 基于點對點、All-Reduce的梯度更新結(jié)構(gòu)

      圖3 基于點對點的梯度更新計算時序

      由于計算機總線帶寬有限,因此和數(shù)據(jù)傳輸相關(guān)的操作會花費較多時間。假設(shè)網(wǎng)絡(luò)中計算梯度的設(shè)備數(shù)量為n,每個設(shè)備上所需傳輸?shù)臄?shù)據(jù)量大小是K,網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)目偩€帶寬是B,那么在梯度收集和回傳參數(shù)過程中產(chǎn)生的時間消耗如式(2)所示。

      (2)

      我們可以看出,隨著設(shè)備數(shù)量n的增加,傳輸?shù)臅r間消耗也隨之線性增長,這導(dǎo)致很難通過簡單地增加設(shè)備數(shù)量獲得線性增長的運算速度,難以在更多設(shè)備上對網(wǎng)絡(luò)進行訓(xùn)練。

      1.2.2 基于All-Reduce的數(shù)據(jù)傳輸

      為減輕參數(shù)服務(wù)器在數(shù)據(jù)傳輸過程中的壓力,Linnan Wang等人提出使用All-Reduce算法進行梯度的傳遞[9],結(jié)構(gòu)如圖2(b)所示。

      整個網(wǎng)絡(luò)以環(huán)狀結(jié)構(gòu)進行傳輸,起初每個設(shè)備節(jié)點將自身的梯度數(shù)組分成n份,n為環(huán)形結(jié)構(gòu)中設(shè)備節(jié)點的數(shù)量。在第一階段,設(shè)備節(jié)點將依次發(fā)送每一塊數(shù)據(jù)到其下一順位的設(shè)備,并從上一個節(jié)點接收一個塊,累積進本設(shè)備的對應(yīng)位置。執(zhí)行n-1次后,每個設(shè)備中將擁有一個累加了全部設(shè)備上對應(yīng)位次數(shù)據(jù)的塊,之后進入第二階段。每個設(shè)備依次發(fā)送自身擁有最終結(jié)果的數(shù)據(jù)塊到下一位序的設(shè)備,同時根據(jù)接收到的數(shù)據(jù)塊進行覆蓋更新,同樣該步驟按序執(zhí)行n-1次后,網(wǎng)絡(luò)中每個設(shè)備均將獲得最終的累加結(jié)果。算法流程如算法1所示。

      算法1: 使用All-Reduce進行梯度累加輸入: 設(shè)備數(shù)量n(>1),梯度向量grad1blocks = split(grad, n)2for i = n → 2 do3 send(next, block[(i+devID]%n])4 recv_block = recv()5 block[(i+devID-1)%n]+=recv_block6end for7for i = n → 2 do8 send(next, block[(i+devID+1)%n])9 recv_block = recv()10 block[(i+devID)%n]=recv_block11end for

      使用All-Reduce算法進行梯度累加,取代了原有方法中梯度收集和回傳參數(shù)的過程,其梯度更新計算時序如圖4所示。最終完成整個過程的時間如式(3)所示。

      (3)

      圖4 基于All-Reduce的梯度更新計算時序

      從式(3)中我們可以看出,雖然傳輸時間仍隨設(shè)備數(shù)量n的增大而增大,但不同于點對點的數(shù)據(jù)傳遞,傳輸時間和設(shè)備數(shù)量之間不存在線性相關(guān)的問題,這一點為引入更多設(shè)備參與訓(xùn)練提供了良好的基礎(chǔ)。此外,由于該方法并未對模型訓(xùn)練方式及內(nèi)容進行修改,因此不會對模型本身的性能產(chǎn)生影響。

      1.2.3 基于采樣的數(shù)據(jù)傳輸

      不同于All-Reduce算法從增大傳輸速度的角度減小訓(xùn)練耗時,采樣的方法希望通過減小數(shù)據(jù)傳輸量達到加速的目的[7]。該方法在收集梯度的過程中,從完整的梯度矩陣中抽取出對提高神經(jīng)語言模型性能更有幫助的部分進行傳輸,減少了傳輸?shù)臄?shù)據(jù)量,從而節(jié)約了在該過程中的時間消耗。

      該方法針對不同層提出了不同的采樣方法。如對于輸出層權(quán)重(大小為v×h,v為詞表大小,h為隱藏層節(jié)點數(shù)目),其中每一行對應(yīng)著詞表中的一個詞。為使網(wǎng)絡(luò)能夠更快收斂,在采樣過程中希望能夠盡可能頻繁地更新那些經(jīng)常出現(xiàn)的詞,具體的選取策略如式(4)所示。

      Vall=Vbase∪Vα∪Vβ

      (4)

      其中,Vbase為在當前minibatch中出現(xiàn)的詞,Vα為從詞匯表中選擇頻繁出現(xiàn)的若干詞,Vβ為從詞匯表中隨機抽取的詞以保證系統(tǒng)具有良好的魯棒性,在測試集上更穩(wěn)定。同樣,在輸入層和隱藏層也有不同的采樣策略。另外,由于本方法更加頻繁地對能夠加快收斂的梯度部分進行更新,使得模型收斂速度加快,與此同時模型本身性能變化不大。

      2 對比

      2.1 實驗系統(tǒng)

      本文相關(guān)實驗使用東北大學(xué)自然語言處理實驗室NiuLearning深度學(xué)習平臺,結(jié)合NCCL開源框架,在四張NVIDIA TITAN X (Pascal)GPU設(shè)備上進行。主要對比不同設(shè)備數(shù)量下,基于All-Reduce算法和采樣的更新策略對循環(huán)神經(jīng)語言模型訓(xùn)練速度的影響。此外本文也在前饋神經(jīng)語言模型[16]中使用All-Reduce算法進行實驗,分析數(shù)據(jù)并行在不同網(wǎng)絡(luò)結(jié)構(gòu)下的適用性問題。

      本文實驗數(shù)據(jù)使用Brown英文語料庫(1 161 169詞,57 341句),從中抽取40 000句子作為訓(xùn)練集,統(tǒng)計49 036詞作為語言模型詞匯表。在模型參數(shù)方面,循環(huán)神經(jīng)網(wǎng)絡(luò)和前饋神經(jīng)語言模型輸入層和隱藏層節(jié)點個數(shù)均為1 024,minibatch為64。前饋神經(jīng)網(wǎng)絡(luò)訓(xùn)練5-gram語言模型。

      2.2 實驗結(jié)果及分析

      2.2.1 加速效果及變化趨勢

      實驗中將基于點對點進行數(shù)據(jù)傳輸?shù)南到y(tǒng)作為基線,在四張GPU設(shè)備上獲得約25%的加速效果,具體實驗結(jié)果見表1。使用基于采樣的梯度更新策略,在同樣參數(shù)設(shè)置下,四張GPU設(shè)備加速比達41%左右,具體實驗結(jié)果如表2所示,整體趨勢如圖5所示。

      表1 基于All-Reduce梯度更新策略在循環(huán)神經(jīng)語言模型中每個Epoch的時間消耗情況

      表2 基于采樣的梯度更新策略在循環(huán)神經(jīng)語言模型中每個Epoch的時間消耗情況

      圖5 基于All-Reduce和采樣策略的時間消耗對比

      在基線系統(tǒng)的時間消耗中,由于梯度的計算和更新模型不存在內(nèi)存和顯存的交互,因此速度較快。而對于梯度的收集和參數(shù)回傳,其占用的時間隨設(shè)備數(shù)量的增多而線性變大,因此每個minibatch所消耗的時間如式(5)所示。

      (5)

      其中tcal&update為梯度計算和模型更新所消耗的總時間。同理,根據(jù)圖4我們可以看出,使用了All-Reduce算法的梯度累加替代了原本方案中的梯度收集和參數(shù)回傳的過程,同時這部分的時間消耗并不隨設(shè)備數(shù)量線性增長。在使用了該算法進行梯度更新的情況下,每個minibatch所花費的時間如式(6)所示。

      (6)

      在整個訓(xùn)練過程中,由于樣本數(shù)量是固定的,因此minibatch數(shù)量也是不變的。而多設(shè)備訓(xùn)練將樣本分散到不同設(shè)備上并行計算,使得在同一時刻整個系統(tǒng)見到的minibatch個數(shù)隨設(shè)備數(shù)量線性增加,換句話說總時間消耗將降為原本的1/n,因此在每一輪訓(xùn)練過程中,基線和基于All-Reduce的方法在時間消耗上分別如式(7)、式(8)所示。

      (7)

      (8)

      其中bn為整個訓(xùn)練集中minibatch的數(shù)量。根據(jù)上述公式,我們可以得到理論上在1~4塊設(shè)備的狀態(tài)下每輪執(zhí)行所需要的時間,如表3所示。其中當設(shè)備數(shù)量是1,不使用All-Reduce的情況下,由于無需通過總線進行數(shù)據(jù)傳遞,將這部分耗時用tgather&back表示。從表3中我們可以看出,隨著設(shè)備數(shù)量的增長,節(jié)約的時間越來越多,這一點從圖5的實驗結(jié)果中也能觀察到。

      表3 在1~4塊設(shè)備上執(zhí)行一輪訓(xùn)練所需理論時間

      從表2的實驗結(jié)果我們可以看出,使用采樣的梯度更新策略可以獲得更高的加速比。不同于All-Reduce試圖找到一種更快速的傳輸策略,該方法通過減少數(shù)據(jù)傳輸量來降低多設(shè)備訓(xùn)練中大量的時間消耗。由于二者出發(fā)點不同,因此理論上可以同時使用兩種方法對訓(xùn)練過程進行加速。

      2.2.2 數(shù)據(jù)并行算法適用性

      我們使用不同大小的詞匯表,通過All-Reduce算法訓(xùn)練循環(huán)神經(jīng)語言模型,時間消耗如圖6所示??梢钥吹?隨著詞表的減小,多設(shè)備訓(xùn)練的時間優(yōu)勢逐漸降低。

      此外我們在前饋神經(jīng)語言模型上進行實驗,參數(shù)相關(guān)設(shè)置與循環(huán)神經(jīng)網(wǎng)絡(luò)相同,具體實驗結(jié)果見表4。在多設(shè)備情況下,隨著設(shè)備數(shù)量的增多,前饋神經(jīng)網(wǎng)絡(luò)在使用All-Reduce算法前后變化趨勢如圖7左側(cè)部分所示,類似于循環(huán)神經(jīng)網(wǎng)絡(luò)。但從表4中我們可以看出,當設(shè)備數(shù)為1時,訓(xùn)練1輪所需時間遠小于多設(shè)備訓(xùn)練的方法。以上兩組實驗均出現(xiàn)了單設(shè)備訓(xùn)練優(yōu)于多設(shè)備并行的現(xiàn)象。循環(huán)神經(jīng)語言模型實驗中,由于詞表的減小,梯度計算耗時變低,導(dǎo)致并行優(yōu)勢被數(shù)據(jù)傳輸所掩蓋。同理,前饋神經(jīng)網(wǎng)絡(luò)相較循環(huán)神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)上更加簡單,數(shù)據(jù)傳輸占據(jù)了耗時的主要部分,即使使用All-Reduce算法對傳輸時間進行稀釋,也無法抵消其所帶來的耗時問題。從表3的理論推導(dǎo)中我們也可以看出,當使用多設(shè)備(n>1)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時候,時間消耗均與K有著很強的線性關(guān)聯(lián),當所需傳輸?shù)臄?shù)據(jù)量較大時,多設(shè)備訓(xùn)練的實際效果并不會很好。

      圖6 不同詞表大小下基于All-Reduce的時間消耗

      GPU數(shù)量1234時間消耗/sBaselineBaseline+AllReduce節(jié)約時間/s加速占比/%317.221 280.41 242.61 228.8216.071 245.41 095.4903.58101.1535.003147.18325.2331.8862.733711.84526.467

      圖7 不同設(shè)備配置下基于All-Reduce的時間消耗

      2.2.3 硬件連接方式對速度的影響

      在實驗過程中發(fā)現(xiàn),設(shè)備之間硬件的連接方式也會對傳輸速度產(chǎn)生影響。在前饋神經(jīng)網(wǎng)絡(luò)語言模型的實驗中,當設(shè)備數(shù)量為2且工作節(jié)點使用0號和1號GPU進行訓(xùn)練時,時間消耗曲線如圖7中右側(cè)部分所示,左側(cè)部分為使用0號和2號設(shè)備所得,我們可以看出,當選擇不同設(shè)備進行數(shù)據(jù)傳輸時,其所消耗的時間也有可能不同。我們實驗平臺上的硬件拓撲結(jié)構(gòu)如圖8所示,0號和1號卡為一組,2號和3號為一組,均使用PCIe Switch進行連接。

      圖8 實驗平臺的硬件拓撲結(jié)構(gòu)

      由于組內(nèi)進行數(shù)據(jù)傳輸無需通過CPU,占用總線帶寬,因此傳輸速率較快,組間由于需要經(jīng)過多個設(shè)備對數(shù)據(jù)進行轉(zhuǎn)發(fā),因此速度相對慢一些。1~3卡之間互相傳輸數(shù)據(jù)帶寬如圖9左側(cè)部分所示,其中顏色越淺帶寬越高,傳輸速率越快,圖9右側(cè)給出組內(nèi)平均帶寬為5.96 GB/s,組間4.46 GB/s。

      圖9 不同設(shè)備之間數(shù)據(jù)傳輸帶寬

      由于All-Reduce算法采用環(huán)形結(jié)構(gòu)讓設(shè)備之間進行數(shù)據(jù)傳輸,因此只要系統(tǒng)中存在任意兩臺設(shè)備間傳輸速度慢,那么就會拖慢整體系統(tǒng)的傳輸速率。因此在前述兩張卡的實驗中,為保證實驗公平性,我們使用0號和2號進行實驗,保證多設(shè)備的每組實驗中均存在組間的數(shù)據(jù)傳遞。同理,在基于采樣的數(shù)據(jù)傳輸過程中,其數(shù)據(jù)傳輸方式仍為點到點的傳輸,慢速的連接只會影響節(jié)點本身與參數(shù)服務(wù)器之間的傳輸過程,對整體的時間消耗影響有限。

      3 總結(jié)

      本文主要針對如何降低多設(shè)備訓(xùn)練神經(jīng)語言模型中的時間消耗進行實驗,對比不同梯度更新策略的加速效果。

      ?加速效果: 使用All-Reduce的梯度收集策略在循環(huán)神經(jīng)語言模型上可獲得25%左右的加速效果,同時隨著設(shè)備數(shù)量的增加,加速效果更加顯著;使用基于采樣的梯度更新方法可達到約41%的加速。

      ?數(shù)據(jù)并行適用性: 使用多設(shè)備訓(xùn)練神經(jīng)網(wǎng)絡(luò)在不同模型下速度變化趨勢稍有不同。實驗發(fā)現(xiàn)對于大量數(shù)據(jù)傳輸占主導(dǎo)的網(wǎng)絡(luò)模型,多設(shè)備訓(xùn)練反而會降低整體運行速度。在這種情況下即使使用了All-Reduce等的加速方法也很難獲得與單設(shè)備可比的運行速度。而對于數(shù)據(jù)傳輸量偏小的模型,在實際使用中比較適合在多設(shè)備上并行訓(xùn)練。

      ?硬件連接方式對速度的影響: 實驗中發(fā)現(xiàn),設(shè)備之間不同的硬件連接方式會對傳輸速度產(chǎn)生影響。針對該特性,我們在未來工作中考慮將采樣算法與All-Reduce進行結(jié)合,對于傳輸較慢的設(shè)備在采樣中給予相對較低的采樣率,實現(xiàn)能者多勞,不讓某些設(shè)備的傳輸速度拖慢整體。

      猜你喜歡
      消耗梯度神經(jīng)網(wǎng)絡(luò)
      如此消耗卡路里
      意林(2023年7期)2023-06-13 14:18:52
      玉鋼燒結(jié)降低固體燃料消耗實踐
      昆鋼科技(2022年4期)2022-12-30 11:23:46
      一個改進的WYL型三項共軛梯度法
      降低鋼鐵料消耗的生產(chǎn)實踐
      昆鋼科技(2021年6期)2021-03-09 06:10:18
      一種自適應(yīng)Dai-Liao共軛梯度法
      神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
      電子制作(2019年19期)2019-11-23 08:42:00
      我們消耗很多能源
      一類扭積形式的梯度近Ricci孤立子
      基于神經(jīng)網(wǎng)絡(luò)的拉矯機控制模型建立
      重型機械(2016年1期)2016-03-01 03:42:04
      復(fù)數(shù)神經(jīng)網(wǎng)絡(luò)在基于WiFi的室內(nèi)LBS應(yīng)用
      泰来县| 永城市| 黄骅市| 阿尔山市| 万全县| 竹山县| 城口县| 平凉市| 博爱县| 舒城县| 钟祥市| 井冈山市| 万载县| 威远县| 手机| 乳源| 长宁县| 诸暨市| 曲水县| 石家庄市| 万荣县| 郴州市| 灵川县| 米易县| 葵青区| 滨海县| 西盟| 教育| 江阴市| 闵行区| 泰安市| 蒙自县| 佛山市| 余江县| 九江县| 孟村| 大渡口区| 澄城县| 米泉市| 长葛市| 象州县|