大力再出奇蹟,1024 張TPU,65536 batch size,僅76分鐘訓練完BERT!
大資料文摘出品
作者:Andy
BERT 作為目前工業界中訓練最耗時的應用,計算量甚至遠大於機器視覺中的 ImageNet 訓練。在 BERT 原論文中,Jacob Devlin 也是用了 16 臺雲TPU(64 個 TPU 晶片)花了整整四天,才訓練完了 BERT-large 模型。
正因如此難以訓練,導致大家也都幾乎是直接拿 Google 開源出的模型,用 GPU 在上面 finetune 一下就來用。Github上的 BERT 開源庫也因為其在 GPU 機器上預訓練的困難和耗時,往往沒給出預訓練相關指令碼。
論文下載地址:
而在這篇愚人節當天於arxiv發出的 《Reducing BERT Pre-Training Time from 3 Days to 76 Minutes》論文中,正如標題所說,作者將BERT的訓練時間縮減到了僅僅 76 分鐘。
而所用的計算機器數也是驚人的,一個 TPUv3 pod (1024張TPU晶片)。不要以為這只是個靠堆積機器就能堆積上去的成果,這還涉及到具體的訓練最佳化問題解決,比如說如何在增大batch size來提高計算通訊比的同時,又能保證其收斂。這篇論文中就是提出了一套訓練方案,在新最佳化器 LAMB 的幫組下來解決這個問題。
這篇論文中就提出了一套訓練方案,還有一個新的最佳化器LAMB來解決這個問題。
這是一作加大伯克利分校博士尤洋作為 Google Brain 實習生時完成的專案,其現在的主攻方向便是“高速並行分佈深度學習演算法”,這也是與這次論文密切相關的主題。
看他之前的論文也能看到類似的大規模訓練專案,比如之前在英偉達實習時的技術報告《LARGE BATCH TRAINING OF CONVOLUTIONAL NETWORKS》,怎麼用大 batch size 訓練CNN網路。
他在裡面提出的 LARS,也正是這篇論文中提出最佳化器 LAMB 的最初原型。論文中也有拿 LARS 做了實驗。而說到在Google Brain實習也是有跡可循,之前他便已在這實習過一段時間研究關於TPU上使用Tensorflow的課題,也為此次專案打下鋪墊。
論文下載地址:
看他之前的論文也能看到類似的大規模訓練專案,比如他之前在英偉達實習時的技術報告《LARGE BATCH TRAINING OF CONVOLUTIONAL NETWORKS》,怎麼用大 batch size 訓練CNN網路。
他在裡面提出的 LARS,也正是這篇論文中提出最佳化器 LAMB 的最初原型。論文中也拿LARS做了實驗。而說到在Google Brain實習也是有跡可循,之前他便已在這實習過一段時間研究關於TPU上使用Tensorflow的課題。
下面就來介紹論文吧。
首先在導言部分,作者稍稍介紹了大批次訓練的困難,還有此次面對的訓練物件BERT。為處理大批次 BERT 的訓練,作者提出了 LAMB 最佳化器,透過這個最佳化器將BERT訓練的batch size推到了64k(具體65536)的量級,而同時不損失精度,此外LAMB最佳化器還有一個優點就是隻用調學習率。
最後的預訓練包括兩個階段:前九個epoch用128的序列長度和64k的batch size;最後一個epoch用512的序列長度和32k的batch size,只用了驚人的8599個迭代便訓練完了BERT。而它和基線模型還有其他batch size訓練對比,如下圖。
之後,在背景部分,作者給我們分享了關於大批次訓練的知識。目前大批次訓練常常會遇到的幾個問題,還有如何對其中一些進行處理。
大批次會導致測試精度丟失,所以需要調節超參,比如學習率。所以需要隨著batch size的增大,線性或平方根級地增大學習率;
但大學習率會導致訓練初始不穩定,因此需要使用學習率預熱技巧(learning rate warmup),先用一個小學習率然後慢慢增大,到一定點切換到正常的學習率策略;
還有大批次訓練裡的泛化間距(generalization gap)問題,大批次訓練模型會傾向於收斂到比較尖銳的區域性最小點,這會導致訓練很容易達到一個比較高的訓練精度,卻很難獲得比較好的測試精度,也就是存在比較大的間距(gap)。目前還沒找到合適方法解決。
然後再來詳細瞭解一下本文最重要的創新,LAMB (Layer-wise Adaptive Moments optimizer for Batch training)最佳化器吧。它是基於作者之前提出的 LARS (Layer-wise Adaptive Rate Scaling)最佳化器,同時又參考了BERT原有最佳化器進行了改進。
首先為了理解 LAMB 我們需要對 LARS 有個粗略的瞭解。LARS 提出的背景是,作者發現對於網路各層,其權重和梯度的L2-norm的比值|w|/|g|變化會非常大,比如5.76和1345。
這導致的一個問題就是,一個學習率並不適應於所有層訓練,它對於有些層或許適合,但對於有些層卻可能太大。因此作者提出應該要按照層,來獲得每層的學習率(Local LR),而這個每層學習率的計算則需要之後 LAMB 中多次提到的一個trust ratio,置信比,有多大的可能我們相信當前層會在這次更新中改變它的權重。
於是 LAMB 對 LARS 最大的改進有三點,都是與trust ratio相關。
1.透過在Tensorflow具體的LARS最佳化器實現中,移除其中一個當某層的|w|和|g|都非零時用於計算 trust ratio 的係數 eeta,從而避免了BERT大批次訓練中的發散;
2.LARS 自身的trust ratio在一些自適應最佳化器,比如BERT裡用到的ADAM with weight decay 或 ADAM中,會導致不準確的學習率矯正,因為它們用了元素級的更新策略。於是作者們將trust_ratio做了些修正,保證了它和自適應最佳化器的結合。
3.最後一點,在計算梯度的L2-norm的時候,還加入了梯度的一階和二階慣量的資訊。
LAMB 演算法具體如下:
最後具體實驗部分便不累述,值得一提的一個細節是,在混合batch訓練的時候,因為中間有一個階段轉換過程,將batch size從64k降到了32k,這裡會給最佳化過程帶來噪音,進而導致訓練發散。為解決這個問題,在第二個階段的時候作者又重新進行了一次學習率預熱(re-warm-up)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562039/viewspace-2640433/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 完勝 BERT,谷歌最佳 NLP 預訓練模型開源,單卡訓練僅需 4 天谷歌模型
- 訓練神經網路時如何確定batch size?神經網路BAT
- PyTorch預訓練Bert模型PyTorch模型
- 【預訓練語言模型】 使用Transformers庫進行BERT預訓練模型ORM
- 深入探討!Batch 大小對訓練的影響BAT
- NLP與深度學習(五)BERT預訓練模型深度學習模型
- 用免費TPU訓練Keras模型,速度還能提高20倍!Keras模型
- Batch Normalization: 如何更快地訓練深度神經網路BATORM神經網路
- BERT預訓練模型的演進過程!(附程式碼)模型
- 使用Bert預訓練模型文字分類(內附原始碼)模型文字分類原始碼
- 神級專案訓練GPT-2僅需5分鐘,Andrej Karpathy都點贊GPT
- BERT新轉變:面向視覺基礎進行預訓練視覺
- 76分鐘訓練BERT!谷歌深度學習的大批量優化研究被ICLR 2020接收谷歌深度學習優化ICLR
- LLM並行訓練2-張量並行並行
- 神經網路訓練的三個基本概念Epoch, Batch, Iteration神經網路BAT
- 4分鐘訓練ImageNet!騰訊機智創造AI訓練世界紀錄AI
- 神經網路常見引數解釋:epoch、batch、batch size、step、iteration神經網路BAT
- pytorch中:使用bert預訓練模型進行中文語料任務,bert-base-chinese下載。PyTorch模型
- NLP生成任務超越BERT、GPT!微軟提出通用預訓練模型MASSGPT微軟模型
- 【關係抽取-R-BERT】定義訓練和驗證迴圈
- 雲端開爐,線上訓練,Bert-vits2-v2.2雲端線上訓練和推理實踐(基於GoogleColab)Go
- 知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料模型
- Pywick:追求功能完備的PyTorch高階訓練庫PyTorch
- 一步一步教你線上免費訓練機器學習模型(啟用GPU和TPU)機器學習模型GPU
- pytorch dataloader和batch_size大小的理解PyTorchBAT
- 本地訓練,開箱可用,Bert-VITS2 V2.0.2版本本地基於現有資料集訓練(原神刻晴)
- 1分鐘訓練百萬級別節點嵌入,Mila開源圖嵌入訓練系統GraphViteMILAVite
- BERT:我訓練再久一點、資料量再大一點,就能重返SOTA
- 百分點認知智慧實驗室出品:TPU與BERT的邂逅
- Bert-vits2最終版Bert-vits2-2.3雲端訓練和推理(Colab免費GPU算力平臺)GPU
- 中文任務全面超越 BERT:百度正式釋出NLP預訓練模型ERNIE模型
- 後BERT時代:15個預訓練模型對比分析與關鍵點探索(附連結)模型
- 最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄模型谷歌
- 深入理解BERT Transformer ,不僅僅是注意力機制ORM
- 谷歌力作:神經網路訓練中的Batch依賴性很煩?那就消了它!谷歌神經網路BAT
- 谷歌開源 BERT:最先進的 NLP 預訓練技術,支援中文和更多語言谷歌
- 中文最佳,哈工大訊飛聯合釋出全詞覆蓋中文BERT預訓練模型模型
- 從Word Embedding到Bert模型——自然語言處理預訓練技術發展史模型自然語言處理