Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour 筆記

作者使用了batch大型吆簟:8192编矾,使用了256 GPUs,在一個(gè)小時(shí)內(nèi)訓(xùn)練了ResNet-50氧映,并且得到了和256大小的batch同樣的訓(xùn)練精度。

2 Large Minibatch SGD

通常來(lái)說(shuō)脱货,我們?cè)谟?xùn)練有監(jiān)督任務(wù)的時(shí)候岛都,會(huì)最小化loss:
L(w) = \frac{1}{|X|}\sum_{x\in X}l(x, w)
w是網(wǎng)絡(luò)的參數(shù)律姨,X是訓(xùn)練集,l(x,w)就是損失函數(shù)臼疫。
minibatch SGD就是在一個(gè)batch的訓(xùn)練集上择份,進(jìn)行參數(shù)的更新:
w_{t+1} = w_t-\eta \frac{1}{n}\sum_{x\in B}\nabla l(x, w_t)

2.1 Learning Rates for Large Minibatches

論文的目的是在使用非常大的batch的時(shí)候能夠維持訓(xùn)練的準(zhǔn)確性和泛化性能。具體來(lái)說(shuō)烫堤,就是在使用多個(gè)worker來(lái)進(jìn)行數(shù)據(jù)并行訓(xùn)練的時(shí)候荣赶,不會(huì)犧牲模型的accuracy。
作者發(fā)現(xiàn)鸽斟,下面的learning rate scaling rule能夠適合于很大范圍的batch size拔创。

Linear Scaling Rule:當(dāng)minibatch size乘以一個(gè)數(shù)k,同樣learning rate也乘以這個(gè)數(shù)k富蓄。
所有其他超參數(shù)保持不變剩燥,

  • interpretation解釋:為什么上面的方法會(huì)有效呢?首先考慮一個(gè)網(wǎng)絡(luò)在某一個(gè)時(shí)刻的參數(shù)w_t立倍,和一組k個(gè)minibatchesB_j, 0\le j \lt k灭红,每一個(gè)minibatch的大小為n。我們比較一下每個(gè)minibatch單獨(dú)訓(xùn)練和這k個(gè)batch一起訓(xùn)練的效果口注。
  • 第一種情況:在進(jìn)行了k次更新后
    w_{t+k} = w_t-\eta \frac{1}{n}\sum_{j\lt k} \sum_{x\in B_j} \nabla l(x, w_{t+j})

  • 第二種情況:訓(xùn)練是在這k個(gè)batch的合集上進(jìn)行变擒,batch size大小為k*n

    update rule

顯然兩個(gè)結(jié)果不太可能一樣,但是假如\nabla l(x, w_t) \approx \nabla l(x, w_t+j) 并且 \widehat{\eta} = k\eta那么我們就可以得到\widehat{w}_{t+1} \approx w_{t+k}寝志。

2.2 Warmup熱身

當(dāng)網(wǎng)絡(luò)變化很劇烈的時(shí)候娇斑,上面提出的假設(shè)就不會(huì)成立,那么Linear Scaling Rule就不會(huì)有效果澈段。但是作者發(fā)現(xiàn)悠菜,這樣的情況可以通過(guò)一種熱身的方式來(lái)緩解舰攒,具體來(lái)說(shuō)就是败富,在訓(xùn)練的開(kāi)始,使用一個(gè)更小的learning rate摩窃。

  • Constant warmup:一種熱身的策略是使用一個(gè)小的定值作為初始的學(xué)習(xí)率兽叮,訓(xùn)練幾個(gè)回合。這種策略對(duì)于物體檢測(cè)猾愿,分割鹦聪,fine-tune等問(wèn)題在有些時(shí)候效果較好,但是當(dāng)k較大也就是batch較大的時(shí)候蒂秘,就不是那么有效了泽本,尤其在熱身結(jié)束的時(shí)候會(huì)出現(xiàn)error的峰值。
  • gradual warmup:為了克服constant warmup的不足姻僧,作者使用了gradual warmup悼泌,就是一點(diǎn)一點(diǎn)地將學(xué)習(xí)率從小称近,增大惦费。并且在增大后,回復(fù)到原始的learning rate schedule冰抢。

2.3 Batch Normalization with Large Minibatches

BN在提高訓(xùn)練效率和精度有很大的效果。但是一個(gè)minibatch在計(jì)算一些統(tǒng)計(jì)量的時(shí)候艘狭,需要整個(gè)minibatch的數(shù)據(jù)挎扰,當(dāng)分布式或者多卡訓(xùn)練的時(shí)候,就會(huì)導(dǎo)致非常多的數(shù)據(jù)需要傳輸巢音。
當(dāng)使用BN的時(shí)候遵倦,每個(gè)sample的loss就會(huì)和整個(gè)batch的統(tǒng)計(jì)量相關(guān),我們用l_B(x,w)表示單個(gè)sample的loss官撼。用L(B, w)=\frac{1}{n}\sum_{x\in B}l_b(x,w)表示整個(gè)batch的loss骇吭。那么整個(gè)訓(xùn)練集的loss表示為L(w)=\frac{1}{|X_n|}\sum_{B\in X^n }L(B,W)X_n 表示一個(gè)大小為n的batch歧寺。
當(dāng)我們改變n的大小的時(shí)候燥狰,就相當(dāng)于改變loss function。More specifically the mean/variance statics computed by BN with different n exhibit different levels of random variation斜筐。
在分布式和多卡訓(xùn)練的情況下龙致,如果每個(gè)worker的batch size大小為n,那么總共的batch大小就是kn顷链,相當(dāng)于從許多batch中選擇了k個(gè)samples目代,每個(gè)sample就是一個(gè)batch。那么之前的公式就變?yōu)?br>

batch update

We also note that the BN statics should not be computed across all workers, not only for the sake of reducing communication, but also for maintaining the same underlying loss function being optimized.

Subtleties and Pitfalls of Distributed SGD

Weight decay:weight decay是參數(shù)的L2-正則項(xiàng)嗤练。加入正則后的更新公式變?yōu)?br>

weight decay

最后一項(xiàng)
\nabla \varepsilon (x, w_t)
是原來(lái)的loss榛了,它可以通過(guò)反向傳播來(lái)計(jì)算得到,
\lambda w_t
被分別計(jì)算煞抬,和梯度加起來(lái)用于更新霜大。

Remark 1: Scaling the cross-entropy loss is not equivalent to scaling the learning rate.

Momentum correction:帶動(dòng)量的SGD被廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)的更新中。一種常見(jiàn)的形式如下:

Momentum SGD

v_t
代替
\eta u_t
得到下面的公式
momentum sgd

需要注意的是革答,
v_{t+1}
是和學(xué)習(xí)率
\eta
有關(guān)的战坤,當(dāng)學(xué)習(xí)率改變的時(shí)候,
v
也應(yīng)該改變:
v_{t+1}=m\frac{\eta_{t+1}}{\eta_t} v_t + \eta_{t+1} \frac{1}{n} \sum \nabla l (x, w_t)
其中残拐,作者將
\frac{\eta_{t+1}}{\eta_t}
稱為momentum correction途茫。作者發(fā)現(xiàn),當(dāng)
\eta_{t+1} \gt \eta_t
的時(shí)候溪食,它對(duì)于穩(wěn)定訓(xùn)練過(guò)程非常重要囊卜。

remark 2: Apply momentum correction after changing learning rate if using (10)

  • Gradient aggregation:對(duì)于每個(gè)worker的訓(xùn)練結(jié)果,需要將梯度匯聚起來(lái),求平均用于更新參數(shù)栅组。

remark 3: Normalize the per-worker loss by total minibatch size kn, not per-worker size n袱衷。

  • Data shuffling

remark 4: Use a single random shuffling of the training data (per epoch) that is divided amongst all k workers.

Communication

對(duì)于每一個(gè)參數(shù)的梯度,都是通過(guò)allreduce操作來(lái)進(jìn)行匯聚的笑窜。在進(jìn)行allreduce之前致燥,每個(gè)GPU都會(huì)計(jì)算自己的梯度,在allreduce*之后排截,每個(gè)GPU得到梯度的和嫌蚤。

論文中還討論了軟件和硬件的實(shí)現(xiàn)相關(guān),詳情可參考論文断傲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脱吱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子认罩,更是在濱河造成了極大的恐慌箱蝠,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垦垂,死亡現(xiàn)場(chǎng)離奇詭異宦搬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)劫拗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門间校,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人页慷,你說(shuō)我怎么就攤上這事憔足。” “怎么了酒繁?”我有些...
    開(kāi)封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵滓彰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我州袒,道長(zhǎng)揭绑,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任稳析,我火速辦了婚禮洗做,結(jié)果婚禮上弓叛,老公的妹妹穿的比我還像新娘彰居。我一直安慰自己,他們只是感情好撰筷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布陈惰。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抬闯。 梳的紋絲不亂的頭發(fā)上井辆,一...
    開(kāi)封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音溶握,去河邊找鬼杯缺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛睡榆,可吹牛的內(nèi)容都是我干的萍肆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胀屿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼塘揣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宿崭,我...
    開(kāi)封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤亲铡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后葡兑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體奖蔓,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年讹堤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锭硼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜕劝,死狀恐怖檀头,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岖沛,我是刑警寧澤暑始,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站婴削,受9級(jí)特大地震影響廊镜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜唉俗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一嗤朴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虫溜,春花似錦雹姊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春歧杏,著一層夾襖步出監(jiān)牢的瞬間镰惦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工犬绒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旺入,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓凯力,卻偏偏與公主長(zhǎng)得像眨业,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沮协,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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