GPipe:微批量流水線并行

論文標(biāo)題:GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism
論文鏈接:https://arxiv.org/abs/1811.06965
論文來源:Google

一、概述

如下圖所示,近過去十年中竹海,由于開發(fā)了促進(jìn)神經(jīng)網(wǎng)絡(luò)有效容量擴(kuò)大的方法,深度學(xué)習(xí)取得了巨大進(jìn)步。這種趨勢(shì)在圖像分類中表現(xiàn)得尤為明顯卷仑,就像ImageNet的模型容量增加帶來的精度提升一樣孽尽。在自然語言處理的背景下也可以觀察到類似的現(xiàn)象,簡單的淺層句子表示模型被其更深更大的對(duì)應(yīng)模型超越毁葱。

現(xiàn)象

然而,雖然更大的模型為許多領(lǐng)域帶來了顯著的質(zhì)量提升倾剿,但擴(kuò)大神經(jīng)網(wǎng)絡(luò)也帶來了重大的實(shí)踐挑戰(zhàn)蚌成。包括內(nèi)存限制和加速器(GPU或TPU)的通信帶寬在內(nèi)的硬件約束担忧,迫使用戶將更大的模型劃分為多個(gè)部分,并將不同的部分分配給不同的加速器惩猫。然而轧房,高效的模型并行算法非常難以設(shè)計(jì)和實(shí)現(xiàn),這通常要求實(shí)踐者在擴(kuò)大容量绍绘、靈活性(或特定于特定任務(wù)和架構(gòu))和訓(xùn)練效率之間做出艱難的選擇奶镶。結(jié)果,大多數(shù)高效的模型并行算法都是針對(duì)特定架構(gòu)和任務(wù)的陪拘。隨著深度學(xué)習(xí)應(yīng)用的不斷增多厂镇,人們對(duì)可靠且靈活的基礎(chǔ)設(shè)施的需求也在不斷增長,這些基礎(chǔ)設(shè)施可以讓研究者輕松地將神經(jīng)網(wǎng)絡(luò)擴(kuò)大到大量的機(jī)器學(xué)習(xí)任務(wù)藻丢。

為了解決這些挑戰(zhàn)剪撬,我們引入了GPipe,這是一個(gè)靈活的庫悠反,可以實(shí)現(xiàn)大型神經(jīng)網(wǎng)絡(luò)的有效訓(xùn)練残黑。通過在不同的加速器上分割模型并在每個(gè)加速器上支持re-materialization,GPipe可以擴(kuò)大任意深度神經(jīng)網(wǎng)絡(luò)架構(gòu)斋否,超越單個(gè)加速器的內(nèi)存限制梨水。在GPipe中,每個(gè)模型都可以被定義為一系列的層茵臭,連續(xù)的層群可以被分割成單元疫诽。每個(gè)單元然后被放置在一個(gè)單獨(dú)的加速器上〉┪基于這種劃分設(shè)置奇徒,我們提出了一個(gè)新的流水線并行算法,通過批量分割缨硝。我們首先將訓(xùn)練樣例的一個(gè)小批量劃分為更小的微批量摩钙,然后將每組微批量的執(zhí)行在各個(gè)單元中流水線化。我們采用同步的小批量梯度下降方法進(jìn)行訓(xùn)練查辩,其中的梯度在一個(gè)小批量的所有微批量中累積胖笛,并在小批量結(jié)束時(shí)應(yīng)用网持。因此,使用GPipe的梯度更新不會(huì)因?yàn)閯澐值臄?shù)量不同而不同长踊,這使得研究者可以通過部署更多的加速器來輕松訓(xùn)練越來越大的模型功舀。GPipe還可以與數(shù)據(jù)并行結(jié)合,進(jìn)一步擴(kuò)大訓(xùn)練規(guī)模身弊。

我們?cè)趫D像分類和機(jī)器翻譯上展示了GPipe的靈活性和效率辟汰。對(duì)于圖像分類,我們?cè)贗mageNet 2012數(shù)據(jù)集上阱佛,訓(xùn)練了AmoebaNet模型莉擒,并將輸入調(diào)整為480×480。通過增加模型的寬度瘫絮,我們將參數(shù)數(shù)量擴(kuò)大到5.57億,并實(shí)現(xiàn)了84.4%的最高驗(yàn)證精度填硕。在機(jī)器翻譯上麦萤,我們訓(xùn)練了一個(gè)有128層、60億參數(shù)的多語言Transformer模型扁眯,支持103種語言(102種語言到英語)壮莹。我們展示了該模型能夠超越單獨(dú)訓(xùn)練的3.5億參數(shù)的雙語Transformer Big模型在100個(gè)語言對(duì)上的表現(xiàn)。

二姻檀、方法

GPipe開源庫是以Lingvo框架為基礎(chǔ)實(shí)現(xiàn)的命满,不過它的核心設(shè)計(jì)思路是通用的,可以與其他框架結(jié)合绣版。

  1. 接口

一個(gè)深度神經(jīng)網(wǎng)絡(luò)可以被定義為L層的一個(gè)序列胶台,每一層L_{i}包括一個(gè)前向傳播計(jì)算函數(shù)f_{i}和參數(shù)集合w_{i}。GPipe額外允許用戶為每一層指定一個(gè)可選的計(jì)算花銷評(píng)估函數(shù)c_{i}杂抽。對(duì)于一個(gè)給定的劃分?jǐn)?shù)量K诈唬,這個(gè)神經(jīng)網(wǎng)絡(luò)的L層序列可以被劃分為K個(gè)復(fù)合層(或者叫做單元)。我們用p_k來代表從ij之間的連續(xù)層缩麸。對(duì)應(yīng)于p_k的參數(shù)集合為w_{i},w_{i+1},\cdots ,w_{j}的并集铸磅,其前向傳播函數(shù)為F_{k}=f_{j}\circ \cdots \circ f_{i+1}\circ f_{i},相應(yīng)的反向傳播函數(shù)B_{k}可以通過從F_{k}使用自動(dòng)符號(hào)微分獲得杭朱,另外花銷估計(jì)函數(shù)為C_{k}=\sum_{l=i}^{j}c_{l}阅仔。

GPipe的接口非常地簡單和直觀,只需要用戶指定:
①模型劃分的數(shù)量K弧械;
②微批量的數(shù)量M八酒;
③模型的L層的序列與定義。

  1. 算法

在GPipe中梦谜,用戶定義他們網(wǎng)絡(luò)中的層序列丘跌,包括模型參數(shù)w_{i}袭景,前向計(jì)算函數(shù)f_{i}和成本估計(jì)函數(shù)c_{i}。然后闭树,GPipe將網(wǎng)絡(luò)分割成K個(gè)單元耸棒,并將第k個(gè)單元放在第k個(gè)加速器上。在分割的邊界报辱,GPipe自動(dòng)插入了通信原語与殃,允許鄰近分割之間的數(shù)據(jù)傳輸。分割算法會(huì)試圖最小化所有單元的估計(jì)成本的差異碍现,從而通過同步所有分割的計(jì)算時(shí)間幅疼,以最大化流水線的效率。

在前向傳播過程中昼接,GPipe首先將大小為N的每個(gè)小批量(mini-batch)劃分為M個(gè)相等的微批量(micro-batch)爽篷,并通過K個(gè)加速器進(jìn)行流水線傳輸。在反向傳播過程中慢睡,每個(gè)微批量的梯度都基于用于前向傳播的相同模型參數(shù)來計(jì)算逐工。在每個(gè)小批量結(jié)束時(shí),所有M個(gè)微批量的梯度都被累積起來漂辐,并用于更新所有加速器上的模型參數(shù)泪喊。這個(gè)過程如下圖(c)所示。

GPipe

如果在網(wǎng)絡(luò)中使用了批量歸一化(batch normalization)髓涯,那么在訓(xùn)練期間袒啼,輸入的充分統(tǒng)計(jì)量將在每個(gè)微批量以及在必要的情況下的復(fù)制品(replica)上計(jì)算。我們還會(huì)跟蹤整個(gè)小批量的充分統(tǒng)計(jì)量的移動(dòng)平均值纬纪,以供在評(píng)估期間使用蚓再。

  1. 性能優(yōu)化

為了減少激活(activation)的內(nèi)存需求,GPipe支持re-materialization育八。在前向計(jì)算的過程中对途,每個(gè)加速器只保存在單元邊界處的輸出激活。在反向傳播的過程中髓棋,第k個(gè)加速器重新計(jì)算復(fù)合前向傳播函數(shù)F_{k}实檀。在這樣的處理下,峰值激活內(nèi)存需求減少到了O(N+\frac{L}{K}\times \frac{N}{M})按声,這里的\frac{N}{M}是微批量大小膳犹,\frac{L}{K}是每個(gè)單元的層數(shù)。作為對(duì)比签则,沒有re-materialization的情況下內(nèi)存需求為O(N\times L)须床,這是因?yàn)樵谟?jì)算梯度b_{i}需要上層梯度b_{i+1}以及緩存的激活f_{i}(x)

上圖(c)中所示的分割過程會(huì)引入一些加速器的空閑時(shí)間渐裂,被稱為氣泡開銷(bubble overhead)豺旬。這個(gè)氣泡時(shí)間在每個(gè)微批量上的平攤開銷為O(\frac{K-1}{M+K-1})钠惩。在實(shí)驗(yàn)中,當(dāng)微批量數(shù)M\geq 4\times K時(shí)族阅,我們發(fā)現(xiàn)氣泡開銷可以忽略不計(jì)篓跛。這部分原因是在反向傳播期間可以提前調(diào)度re-materialization,而無需等待來自前面層的梯度坦刀。

GPipe引入了較低的通信開銷愧沟,因?yàn)槲覀冎恍枰诩铀倨髦g的分割邊界傳遞激活張量。因此鲤遥,即使在沒有高速互聯(lián)的加速器上沐寺,我們也可以實(shí)現(xiàn)高效的擴(kuò)展性性能。

上圖(c)假設(shè)分割是均衡的盖奈。然而混坞,不同層的內(nèi)存需求和計(jì)算量通常是不均衡的。在這種情況下钢坦,不完美的分割算法可能導(dǎo)致負(fù)載不平衡拔第。更好的分割算法有可能改善我們啟發(fā)式方法的性能。

這一部分關(guān)于這一系列復(fù)雜度是如何得到的场钉,可以參看李沐視頻

三懈涛、實(shí)驗(yàn)

實(shí)驗(yàn)
實(shí)驗(yàn)
實(shí)驗(yàn)
實(shí)驗(yàn)
實(shí)驗(yàn)
實(shí)驗(yàn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逛万,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子批钠,更是在濱河造成了極大的恐慌宇植,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埋心,死亡現(xiàn)場(chǎng)離奇詭異指郁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拷呆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門闲坎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茬斧,你說我怎么就攤上這事腰懂。” “怎么了项秉?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵绣溜,是天一觀的道長。 經(jīng)常有香客問我娄蔼,道長怖喻,這世上最難降的妖魔是什么底哗? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮锚沸,結(jié)果婚禮上跋选,老公的妹妹穿的比我還像新娘。我一直安慰自己咒吐,他們只是感情好野建,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恬叹,像睡著了一般候生。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绽昼,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天唯鸭,我揣著相機(jī)與錄音,去河邊找鬼硅确。 笑死目溉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菱农。 我是一名探鬼主播缭付,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼循未!你這毒婦竟也來了陷猫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤的妖,失蹤者是張志新(化名)和其女友劉穎绣檬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫂粟,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娇未,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了星虹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片零抬。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宽涌,靈堂內(nèi)的尸體忽然破棺而出媚值,到底是詐尸還是另有隱情,我是刑警寧澤护糖,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布褥芒,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锰扶。R本人自食惡果不足惜献酗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坷牛。 院中可真熱鬧罕偎,春花似錦、人聲如沸京闰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹂楣。三九已至俏站,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痊土,已是汗流浹背肄扎。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赁酝,地道東北人犯祠。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像酌呆,于是被迫代替她去往敵國和親衡载。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容