0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大模型訓(xùn)練loss突刺原因和解決辦法

深度學(xué)習(xí)自然語言處理 ? 來源:知乎 ? 2024-01-09 14:20 ? 次閱讀

最近閱讀了《A Theory on Adam Instability in Large-Scale Machine Learning 》這篇論文。比較全面的闡述了100B以上的大模型預(yù)訓(xùn)練中出現(xiàn)loss spike的原因(loss 突然大幅度上漲),并介紹了一些可能的解決辦法。論文寫的非常精彩,但整體上有點(diǎn)散和深,我嘗試著站在工業(yè)立場(chǎng)上把它串一下

突刺是什么

首先介紹一下什么是loss spike:

loss spike指的是預(yù)訓(xùn)練過程中,尤其容易在大模型(100B以上)預(yù)訓(xùn)練過程中出現(xiàn)的loss突然暴漲的情況

73389aa4-aead-11ee-8b88-92fbcf53809c.png

如圖所示模型訓(xùn)練過程中紅框中突然上漲的loss尖峰loss spike的現(xiàn)象會(huì)導(dǎo)致一系列的問題發(fā)生,譬如模型需要很長(zhǎng)時(shí)間才能再次回到spike之前的狀態(tài)(論文中稱為pre-explosion),或者更嚴(yán)重的就是loss再也無法drop back down,即模型再也無法收斂

PaLM和GLM130b之前的解決辦法是找到loss spike之前最近的checkpoint,更換之后的訓(xùn)練樣本來避免loss spike的出現(xiàn)。

突刺成因分析

這篇論文(以下稱本文)對(duì)loss spike的出現(xiàn)原因做了十分詳細(xì)的分析,最后認(rèn)為預(yù)訓(xùn)練使用的Adam優(yōu)化器是導(dǎo)致這個(gè)現(xiàn)象出現(xiàn)的重要原因之一

首先回顧一下Adam優(yōu)化器的結(jié)構(gòu)(這里介紹的是較為傳統(tǒng)的Adam優(yōu)化器,現(xiàn)在nlp任務(wù)更偏向于使用帶有正則化項(xiàng)的Adamw變體):

其中均為超參數(shù)( ,防止除0),表示第t次更新的梯度, 的初始值 為0。

本文首先對(duì)Adam的有效性做了論述,其本質(zhì)在于證明了Adam優(yōu)化過程是對(duì)牛頓下降法(二階導(dǎo))的一個(gè)有效逼近,因此在收斂速度上大幅度領(lǐng)先傳統(tǒng)SGD(一階導(dǎo)),證明過程不做贅述,可以參考本文和Adam系列相關(guān)論文

Adam算法是牛頓下降法的一個(gè)迭代逼近

739ff820-aead-11ee-8b88-92fbcf53809c.png

一切顯得十分完美,但是理想很豐滿,現(xiàn)實(shí)很骨感,收斂過程并不是一帆風(fēng)順的

首先我們想象一下這個(gè)更新參數(shù)的變化趨勢(shì)

在 的時(shí)候, ,, 集中在 附近。而在訓(xùn)練到最后,假設(shè)模型收斂到某個(gè)最優(yōu)點(diǎn),此時(shí) 應(yīng)該集中在0附近。也就是說,我們似乎可以把更新參數(shù)的變化過程想象成為一個(gè)從兩端(非穩(wěn)態(tài))向中間(穩(wěn)態(tài))收攏的過程。實(shí)際的觀察現(xiàn)象也是如此:

73a3d6ca-aead-11ee-8b88-92fbcf53809c.png

非穩(wěn)態(tài)

73ab718c-aead-11ee-8b88-92fbcf53809c.jpg

中間態(tài)

73bbd7b6-aead-11ee-8b88-92fbcf53809c.png

穩(wěn)態(tài)

進(jìn)入正態(tài)分布的穩(wěn)態(tài)之后,理想的更新參數(shù)變化趨勢(shì)應(yīng)該是方差越來越小,所有更新參數(shù)逐漸向0靠近。這應(yīng)該是一個(gè)單向的過程,即穩(wěn)定的單峰狀態(tài)(unimodal)不會(huì)再次進(jìn)入非穩(wěn)定的雙峰狀態(tài)(bimodal),但事實(shí)并非如此,更新參數(shù)會(huì)再次進(jìn)入非穩(wěn)定的雙峰狀態(tài)

本文在理論層面做了研究和解釋,從中心極限定理(可以結(jié)合道爾頓板實(shí)驗(yàn)理解)出發(fā),認(rèn)為隨機(jī)事件的疊加進(jìn)入單峰的正態(tài)分布的必要條件之一是各個(gè)隨機(jī)事件事件之間應(yīng)該是相互獨(dú)立的,但是梯度變化以及更新參數(shù)的變化并不能特別好的滿足獨(dú)立性這一條件,而這一點(diǎn)恰恰是導(dǎo)致更新參數(shù)振蕩,loss spike出現(xiàn)以及l(fā)oss 不收斂的重要原因之一

73c289da-aead-11ee-8b88-92fbcf53809c.jpg

造成梯度變化不獨(dú)立的原因(1、淺層參數(shù)長(zhǎng)時(shí)間不更新2、batch太大,后期梯度更新趨于平穩(wěn))上述的理論有些晦澀,本文作者可能也了解這一點(diǎn),之后開始直接點(diǎn)題,結(jié)合實(shí)驗(yàn)觀察拋出了重要現(xiàn)象和結(jié)論

即訓(xùn)練過程中l(wèi)oss spike的出現(xiàn)與梯度更新幅度, 大小,batch大小這三個(gè)條件密切相關(guān)

本文作者對(duì)loss spike出現(xiàn)時(shí)模型的前后變化做了仔細(xì)拆解,發(fā)現(xiàn)下列一系列連續(xù)現(xiàn)象的出現(xiàn)導(dǎo)致了loss spike:

73c7b5fe-aead-11ee-8b88-92fbcf53809c.jpg

當(dāng)前模型處在穩(wěn)態(tài)(健康狀態(tài)),即單峰的正態(tài)分布狀態(tài),并且梯度值 ,此時(shí)loss平穩(wěn),訓(xùn)練過程正常

73cb2cac-aead-11ee-8b88-92fbcf53809c.jpg

2.模型淺層(embedding層)梯度 ,這一般是由于訓(xùn)練一段時(shí)間之后,淺層的語義知識(shí)表示此時(shí)一般已經(jīng)學(xué)習(xí)的較好。但此時(shí)深層網(wǎng)絡(luò)(對(duì)應(yīng)復(fù)雜任務(wù))的梯度更新還是相對(duì)較大

73dc7e8a-aead-11ee-8b88-92fbcf53809c.jpg

3.一段時(shí)間淺層(embedding層)梯度 之后會(huì)導(dǎo)致 , 。此時(shí)趨于0。因此導(dǎo)致淺層參數(shù)得不到更新(也對(duì)應(yīng)于上述參數(shù)更新事件不獨(dú)立的原因)

73e0578a-aead-11ee-8b88-92fbcf53809c.png

4.此時(shí)雖然淺層(embedding層)參數(shù)長(zhǎng)時(shí)間不更新,但是深層的參數(shù)依然一直在更新。長(zhǎng)時(shí)間這樣的狀態(tài)之后,batch之間的樣本分布變化可能就會(huì)直接導(dǎo)致淺層(embedding層)再次出現(xiàn)較大的梯度變化(可以想象成一個(gè)水壩蓄水太久終于被沖開了。至于小模型為什么不會(huì)出現(xiàn)這種情況,推測(cè)是小模型函數(shù)空間小,無法捕獲樣本的分布變化,越大規(guī)模的模型對(duì)樣本之間不同維度的特征分布變化越敏感),此時(shí) , 再次集中在 附近(此時(shí) , ),變成雙峰的非穩(wěn)定狀態(tài),本文提到了淺層(embedding層)這種突然的參數(shù)變化可能造成模型的連鎖反應(yīng)進(jìn)而出現(xiàn)loss spike的現(xiàn)象(這也對(duì)應(yīng)了更換樣本重新訓(xùn)練有可能會(huì)減少loss spike的出現(xiàn)頻率,實(shí)際上就是選擇分布變化較小的樣本,減小淺層梯度變換幅度)

73e5069a-aead-11ee-8b88-92fbcf53809c.png

5.這個(gè)階段模型處于非穩(wěn)態(tài),梯度變化幅度較大,每一次的梯度變化和更新參數(shù)變化事件之間又出現(xiàn)了一定的獨(dú)立性,因此經(jīng)過一定的時(shí)間之后模型有可能再次進(jìn)入穩(wěn)態(tài),loss再次drop back down(注意,本文著重提了這個(gè)再次drop back down并不是一定出現(xiàn)的,也很有可能loss長(zhǎng)期處于flat狀態(tài),再也無法收斂)

因此我們得出一些結(jié)論,loss spike的出現(xiàn)和淺層的梯度更新幅度, 大小密切相關(guān)(batch大小帶來的相關(guān)性問題倒是顯得沒那么大說服力),實(shí)際上就是淺層網(wǎng)絡(luò)參數(shù)突然進(jìn)入到了之前長(zhǎng)時(shí)間不在的狀態(tài)與模型深層參數(shù)當(dāng)前的狀態(tài)形成了連鎖反應(yīng)造成了模型進(jìn)入非穩(wěn)態(tài)。同時(shí)一般情況即使出現(xiàn)loss spike也會(huì)自動(dòng)回復(fù)到正常狀態(tài),但也有可能再也不會(huì)

突刺解法

本文最后提到了防止loss spike出現(xiàn)的一些方法:

1.如之前提到的PaLM和GLM130B提到的出現(xiàn)loss spike后更換batch樣本的方法(常規(guī)方法,但是成本比較高)

2.減小learning rate,這是個(gè)治標(biāo)不治本的辦法,對(duì)更新參數(shù)的非穩(wěn)態(tài)沒有做改進(jìn)

3.減小 大小?;蛘咧苯影?設(shè)為0,重新定義

在等于0時(shí)候的值(這應(yīng)該是個(gè)值得嘗試的辦法)

值得一提的是智譜華章在本文發(fā)表之前,在去年的GLM130B訓(xùn)練時(shí)似乎也觀察到了淺層梯度變化和loss spike相關(guān)這一現(xiàn)象(GLM-130B: An Open Bilingual Pre-trained Model),他采取的是把淺層梯度直接乘以縮放系數(shù) 來減小淺層梯度更新值

73eecda6-aead-11ee-8b88-92fbcf53809c.jpg

出自130b

73f5190e-aead-11ee-8b88-92fbcf53809c.jpg

其實(shí)這塊我有個(gè)自己的想法,和是否也可以做衰減,隨著訓(xùn)練過程逐漸減小,來避免loss spike的現(xiàn)象

另外假設(shè)我們能一次性加載所有樣本進(jìn)行訓(xùn)練(實(shí)際上不可能做到),是否還會(huì)出現(xiàn)loss spike的現(xiàn)象

最后目前流行的fp8,fp16混合訓(xùn)練,如果upscale設(shè)置的過小,導(dǎo)致梯度在進(jìn)入優(yōu)化器之前就下溢,是不是會(huì)增加淺層梯度長(zhǎng)時(shí)間不更新的可能性,進(jìn)而增加loss spike的出現(xiàn)的頻率。(這么看來似乎提升upscale大小以及優(yōu)化 大小是進(jìn)一步提升模型效果的一個(gè)思路)

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Palm
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    11248
  • 人工智能
    +關(guān)注

    關(guān)注

    1787

    文章

    46060

    瀏覽量

    234959
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2134

    瀏覽量

    1974

原文標(biāo)題:大模型訓(xùn)練loss突刺原因和解決辦法

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PCB翹曲原因解決辦法 PCB翹曲度的計(jì)算公式

    今天給大家分享的是 PCB 翹曲原因解決辦法、PCB 翹曲度的計(jì)算公式。
    發(fā)表于 07-02 10:10 ?5244次閱讀
    PCB翹曲<b class='flag-5'>原因</b>及<b class='flag-5'>解決辦法</b> PCB翹曲度的計(jì)算公式

    音頻系統(tǒng)噪聲產(chǎn)生的主要原因和解決辦法

    音頻系統(tǒng)噪聲產(chǎn)生的主要原因和解決辦法
    發(fā)表于 12-11 20:08

    變壓器的常見故障和解決辦法

    變壓器的常見故障和解決辦法  故障現(xiàn)象            
    發(fā)表于 07-18 15:33 ?4241次閱讀

    電腦開機(jī)啟動(dòng)時(shí)提示(顯示)NTLDR文件丟失解決辦法原因

    電腦開機(jī)啟動(dòng)時(shí)提示(顯示)NTLDR文件丟失解決辦法原因分析 一、其實(shí)WINDOWS XP這個(gè)NTLDR文件丟失有個(gè)最簡(jiǎn)便的解決辦法
    發(fā)表于 03-10 11:44 ?1.2w次閱讀

    電腦無法上網(wǎng)的原因解決辦法

    電腦無法上網(wǎng)的原因解決辦法   問:家里的寬帶最近好像出了問題,明明在任務(wù)欄下面已經(jīng)顯示了網(wǎng)絡(luò)連接,可是就打不開網(wǎng)頁
    發(fā)表于 03-01 10:25 ?1.6w次閱讀

    音箱沒聲音的原因和解決辦法

    本文首先介紹了音箱發(fā)聲的原理,其次闡述了四種音箱沒聲音的原因和解決辦法,最后還介紹了電腦音箱沒聲音的原因解決辦法,具體的跟隨小編一起來了解一下。
    發(fā)表于 05-28 14:33 ?4.3w次閱讀

    板式給料機(jī)鏈條磨損過快原因分析和解決辦法

    板式給料機(jī)鏈條磨損過快原因分析和解決辦法 板式給料機(jī)在使用中存在著鏈條磨損快,設(shè)備使用壽命低等缺陷。 1.板式給料機(jī)存在的問題 在實(shí)際使用中板式輸送機(jī)存在如下問題: 1)輸送鏈負(fù)荷重、拉力過大。 2
    發(fā)表于 01-04 10:11 ?1420次閱讀

    LED顯示屏的常見故障及解決辦法的介紹

    LED顯示屏通訊新號(hào)載入不上的原因和解決辦法
    發(fā)表于 02-10 14:43 ?3176次閱讀

    電梯IP五方對(duì)講的問題和解決辦法的介紹

    梯云物聯(lián):深圳電梯IP五方對(duì)講有什么問題和解決辦法?
    發(fā)表于 04-11 18:16 ?5525次閱讀

    空氣開關(guān)跳閘常見原因解決辦法和卸下步驟

      在使用空氣開關(guān)中,如果出現(xiàn)跳閘情況,需要首先確定跳閘原因,然后根據(jù)具體原因采取相應(yīng)的解決辦法。如果無法確定跳閘原因,應(yīng)該及時(shí)停機(jī)檢查,并根據(jù)需要請(qǐng)專業(yè)人員進(jìn)行維修。為了確保電氣設(shè)備
    發(fā)表于 04-08 15:42 ?2.3w次閱讀

    討論自激振蕩形成的原因以及解決辦法

    我們?cè)谑褂眠\(yùn)放或比較器芯片時(shí)有時(shí)候會(huì)碰到自激振蕩的問題,本文討論自激振蕩形成的原因以及解決辦法。
    的頭像 發(fā)表于 05-02 14:31 ?3237次閱讀
    討論自激振蕩形成的<b class='flag-5'>原因</b>以及<b class='flag-5'>解決辦法</b>

    PCBA加工焊點(diǎn)拉尖產(chǎn)生的原因解決辦法

    一站式PCBA智造廠家今天為大家講講什么是PCBA加工焊點(diǎn)拉尖?PCBA加工焊點(diǎn)拉尖產(chǎn)生原因解決辦法。接下來為大家介紹PCBA加工焊點(diǎn)拉尖產(chǎn)生原因解決辦法。
    的頭像 發(fā)表于 05-10 08:56 ?1256次閱讀

    電感嘯叫的原因和解決辦法

    電感嘯叫就是指在20Hz-200Hz的電流激勵(lì)頻率下,電感會(huì)發(fā)出人耳能聽見的吱吱聲。 電感嘯叫的原因之一是電感不固定形成空腔噪聲。 接下來,詳細(xì)為你說下電感嘯叫的原因和解決辦法。
    的頭像 發(fā)表于 05-31 09:15 ?1.4w次閱讀
    電感嘯叫的<b class='flag-5'>原因</b><b class='flag-5'>和解決辦法</b>

    java內(nèi)存溢出的幾種原因和解決辦法

    的內(nèi)存,但是如果程序中存在內(nèi)存泄漏(Memory Leak)或者使用不當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)等問題,仍然有可能導(dǎo)致內(nèi)存溢出。下面將詳細(xì)介紹Java內(nèi)存溢出的幾種原因以及相應(yīng)的解決辦法。 對(duì)象長(zhǎng)時(shí)間存活或沒有被正確釋放: Java的垃圾回收機(jī)制負(fù)責(zé)回收不再需要的對(duì)象所占有的內(nèi)存空
    的頭像 發(fā)表于 11-23 14:44 ?5187次閱讀

    晶振失效三大原因解決辦法

    停止工作,給設(shè)備的正常運(yùn)行帶來嚴(yán)重影響。本文將從三個(gè)方面介紹晶振失效的原因和解決辦法。 一、環(huán)境因素: 環(huán)境因素是導(dǎo)致晶振失效的一個(gè)常見原因。一些惡劣的環(huán)境條件,如高溫、高濕、高腐蝕性氣體等,會(huì)對(duì)晶振產(chǎn)生負(fù)面影響
    的頭像 發(fā)表于 01-24 15:40 ?1811次閱讀