寫在前面
大家好,我是劉聰NLP。
昨天MetaAI開源了Llama2模型,我只想說一句:“「MetaAI改名叫OpenAI吧!」”
Llama2不僅開源了預(yù)訓(xùn)練模型,而且還開源了利用對話數(shù)據(jù)SFT后的Llama2-Chat模型,并對Llama2-Chat模型的微調(diào)進行了詳細的介紹。
開源模型目前有7B、13B、70B三種尺寸,預(yù)訓(xùn)練階段使用了2萬億Token,SFT階段使用了超過10w數(shù)據(jù),人類偏好數(shù)據(jù)超過100w。
非常自信的MetaAI。啥也不說,上來先show一副評估對比圖,我就問OpenAI你服不服,skr。
等等黨不用著急,雖然中文占比只有0.13%,但后續(xù)會有一大推中文擴充詞表預(yù)訓(xùn)練&領(lǐng)域數(shù)據(jù)微調(diào)的模型被國人放出。
這不Github一搜,已經(jīng)有很多人占坑了,這是“有卡者的勝利”。
?
下面簡要記錄Llama2的技術(shù)細節(jié)。
預(yù)訓(xùn)練階段
模型結(jié)構(gòu)為Transformer結(jié)構(gòu),與Llama相同的是采用RMSNorm歸一化、SwiGLU激活函數(shù)、RoPE位置嵌入、詞表的構(gòu)建與大小,與Llama不同的是增加GQA(分組查詢注意力),擴增了模型輸入最大長度,語料庫增加了40%。
訓(xùn)練超參數(shù)如下:AdamW優(yōu)化器的β1、β2和eps分別為0.9、0.95和10e-5,采用cosin學(xué)習(xí)率,預(yù)熱2000步后進行學(xué)習(xí)率衰減,最終降至峰值的10%,權(quán)重衰減系數(shù)為0.1,梯度裁剪值為1.0。
但請注意:7b和13b模型并沒有增加GQA?。?!
預(yù)訓(xùn)練階段的損失如下圖所示,可以看出,模型其實還沒有完全收斂。
預(yù)訓(xùn)練模型效果一句話總結(jié):「開源第一,閉源一個沒打過?!?/strong>
?
微調(diào)階段
上面預(yù)訓(xùn)練模型沒打過你OpenAI沒關(guān)系,你先等我全流程走完。
SFT
「Data Quality Is All You Need?!?/strong> MetaAI進行實驗時發(fā)現(xiàn),少量高質(zhì)量數(shù)據(jù)集訓(xùn)練模型的效果,要好于大量低質(zhì)量數(shù)據(jù)集的訓(xùn)練效果。因此以后SFT時候,不要一味地追求量,質(zhì)更重要。
微調(diào)時初始學(xué)習(xí)率為2e?5,并采用余弦學(xué)習(xí)率下降,權(quán)重衰減為0.1,訓(xùn)練批次大小為64,最大長度為4096。為了提高模型訓(xùn)練效率,將多組數(shù)據(jù)進行拼接,盡量填滿4096,每條數(shù)據(jù)直接用停止符隔開,計算loss時僅計算每條樣本target內(nèi)容的loss。
RM
對于人類偏好數(shù)據(jù)的收集,重點關(guān)注模型回復(fù)的有用性和安全性,通過選擇對比兩個模型結(jié)果獲??;不過除了選擇一個更好的結(jié)果之外,還需要對選擇的答案標(biāo)記偏好程度,例如:明顯更好,更好,稍微更好、可以忽略地更好或者不確定。在安全性上,對兩個結(jié)果會標(biāo)記都符合安全性、只有一個復(fù)合安全性、都不符合安全性,以此收集安全性數(shù)據(jù)。
在模型迭代過程中,獎勵模型所需的偏好數(shù)據(jù),需要迭代收集,具體如下。
獎勵模型是對提示生成的回復(fù)生成一個標(biāo)量分值,評價模型生成質(zhì)量,但發(fā)現(xiàn)有用性和安全性很難在同一個獎勵模型表現(xiàn)都很好,因此,獨立訓(xùn)練了兩個獎勵模型,一個針對有用性(helpfulness)進行了優(yōu)化,另一個針對安全性(safety)進行了優(yōu)化。
獎勵模型的初始化來自于pretrained chat model檢查點,將下一個Token預(yù)測分類器替換成標(biāo)量獎勵值回歸器。訓(xùn)練時,采用帶有邊際約束的二元排序損失,如下:
邊際約束開源提高獎勵模型的準(zhǔn)確性。并且為了獎勵模型可以用有更好的泛化,防止出現(xiàn)獎勵黑客現(xiàn)象(例如Llama2-Chat利用了獎勵模型的弱點,在表現(xiàn)不佳的情況下夸大獎勵分數(shù)),在獎勵模型訓(xùn)練過程中,還加入了部分開源人類偏好數(shù)據(jù)。
訓(xùn)練參數(shù)設(shè)置:70B模型的最大學(xué)習(xí)率為5e?6,其余模型的最大學(xué)習(xí)率為1e?5,采用余弦學(xué)習(xí)率下降,最低到最大學(xué)習(xí)率的10%,并采用總步數(shù)的3%進行預(yù)熱(最少5步),訓(xùn)練批次大小為1024。
不同獎勵模型在不同數(shù)據(jù)上的效果如下表所示。
發(fā)現(xiàn)獎勵模型對明顯更好的數(shù)據(jù)效果更突出,對可以忽略地更好或者不確定的數(shù)據(jù)表現(xiàn)較差。
并且研究了獎勵模型在數(shù)據(jù)和模型大小方面的縮放趨勢,在數(shù)據(jù)逐步增大的同時,效果也在逐步提高。
隨著收到更多批次的人類偏好數(shù)據(jù),能夠訓(xùn)練更好的獎勵模型并收集更多提示。因此,訓(xùn)練了五個連續(xù)版本的RLHF模型(RLHF-v1到RLHF-v5)。
主要訓(xùn)練策略包括:
最近策略優(yōu)化(PPO):標(biāo)準(zhǔn)強化學(xué)習(xí)算法
拒絕采樣微調(diào):模型輸出時采樣K個結(jié)果,選擇獎勵值最高的一個,在強化學(xué)習(xí)階段進行梯度更新。
在RLHF-v4之前,只使用拒絕采樣微調(diào),之后將兩者順序結(jié)合起來。但主要只有70B模型進行了拒絕采樣微調(diào),而其他小模型的微調(diào)數(shù)據(jù)來自于大模型拒絕采樣數(shù)據(jù),相當(dāng)于用大模型蒸餾小模型。
在模型進行強化學(xué)習(xí)的獎勵值由有用性獎勵值和安全性獎勵值組合產(chǎn)生,具體計算如下:
訓(xùn)練參數(shù)設(shè)置:對于所有模型,采樣AdamW優(yōu)化器,其中β1、β2和eps分別為0.9、0.95和1e?5,權(quán)重衰減為0.1,梯度裁剪為1.0,學(xué)習(xí)率為恒定為1e?6。PPO訓(xùn)練時大批次為512,小批次為64,PPO裁剪閾值為0.2。對于7B和13B模型,設(shè)置KL懲罰系數(shù)為0.01,對于34B和70B模型,設(shè)置KL懲罰系數(shù)為0.005。所有模型進行200到400次迭代訓(xùn)練。
多輪對話一致性
最初的RLHF模型在幾輪對話后忘記最初的指令,下圖(左)所示。為了解決這些限制,提出Ghost Attention方法(Gatt,其實是一個訓(xùn)練trick)來增強模型對指令的遵從。
假設(shè)多輪對話數(shù)據(jù)為 [u1,a1,...,un,an],定義一條指令(inst),使得整個對話過程中都遵守該指令,然后將該指令綜合連接到對話的所有用戶消息,構(gòu)造為 [inst+u1,a1,...,inst+un,an]。為了避免語句不匹配的問題,在訓(xùn)練過程中,保留第一輪的提示,并將中間輪數(shù)的損失置為0。
總結(jié)
Llama2模型7b,13b,34b,70b都有,完全夠用,最期待的34b會暫緩放出。
國內(nèi)開源底座模型還是在6b、7b、13b等層次,33-34b才是剛需呀。
隨著開源可商用的模型越來越多,大模型社區(qū)會越來越繁華,是中小廠的福音。開源都是真英雄。
我愿從此跟隨MetaAI走Open開源AI路線。
編輯:黃飛
?
評論