寫(xiě)在前面
預(yù)訓(xùn)練(Pretraining)是一個(gè)非常消耗資源的工作,尤其在 LLM 時(shí)代。隨著LLama2的開(kāi)源,越來(lái)越多人都開(kāi)始嘗試在這個(gè)強(qiáng)大的英文基座模型上進(jìn)行中文增強(qiáng)。但,我們?nèi)绾尾拍鼙WC模型在既學(xué)到「中文知識(shí)」的情況下,又不丟掉原有的「英文知識(shí)」呢?
今天給大家?guī)?lái)一篇 Continue Pretraining 的論文(來(lái)自何枝大佬,知乎@何枝),Continual Pre-Training of Large Language Models: How to (re)warm your model?
知乎:https://zhuanlan.zhihu.com/p/654463331
paper//arxiv.org/pdf/2308.04014.pdf
1.實(shí)驗(yàn)設(shè)定
作者使用一個(gè) 410M 大小的模型 Pythia,已經(jīng)在 Pile數(shù)據(jù)上進(jìn)行過(guò)預(yù)訓(xùn)練,然后在下游數(shù)據(jù)集 SlimPajama 上進(jìn)行微調(diào)。
論文中直接使用 Loss 作為評(píng)估指標(biāo),即 Loss 越小,說(shuō)明在上游(或下游)任務(wù)中的效果越強(qiáng)。
Pythia:https://huggingface.co/EleutherAI/pythia-410m-v0
Pile:https://huggingface.co/datasets/EleutherAI/pile
SlimPajama:https://www.cerebras.net/blog/slimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama
2. 關(guān)鍵結(jié)論
2.1 warmup 的步數(shù)不會(huì)影響最終性能
warmup 是一種 finetune 中常用的策略,指學(xué)習(xí)率從一個(gè)很小的值慢慢上升到最大值。那么,這個(gè)「慢慢上升」的階段持續(xù)多久是最好的呢?
作者分別使用訓(xùn)練步數(shù)的:0%, 0.5%, 1%, 2% 這 4 種不同預(yù)熱步數(shù)來(lái)進(jìn)行實(shí)驗(yàn):
從上圖中可以看到:當(dāng)模型經(jīng)過(guò)「充分」訓(xùn)練后,不管多長(zhǎng)的預(yù)熱步數(shù)最后的性能都差不多。
但,這種前提是「充分訓(xùn)練」,如果只看訓(xùn)練前期的話,使用更長(zhǎng)的預(yù)熱步數(shù)(黃色的線)。無(wú)論是「上游任務(wù)」還是「下游任務(wù)」,模型的 Loss 都要比其他預(yù)熱步數(shù)要低(下游學(xué)的快,上游忘的慢)。
2.2 學(xué)習(xí)率越大,下游任務(wù)越好,上游任務(wù)越差
為了探究學(xué)習(xí)率對(duì)學(xué)習(xí)效果的影響,作者使用了 4 種不同的最大學(xué)習(xí)率進(jìn)行對(duì)比實(shí)驗(yàn),
此外,還比對(duì)了和從頭訓(xùn)練(from scratch)模型的效果:
從圖中可以看到:經(jīng)過(guò)充分訓(xùn)練后,學(xué)習(xí)率越大(紫色),下游性能最好,上游性能最差(忘得最多)。同樣,我們看前期訓(xùn)練,盡管紫色線條在最后的 loss 是最低的,但在前期 loss 會(huì)增加的非常大,隨后下降。
PS:解釋一下這里為什么這么關(guān)注訓(xùn)練前期,是因?yàn)樵谡鎸?shí)訓(xùn)練中,我們可能不一定會(huì)增強(qiáng)圖中所示的 250B 這么多的 tokens,尤其是在模型參數(shù)很大的情況中。所以,當(dāng)資源不允許充分訓(xùn)練的情況下,較小的學(xué)習(xí)率和較長(zhǎng)的 warmup 步數(shù)可能是一個(gè)不錯(cuò)的選擇。
此外,圖中還能看出:未經(jīng)過(guò)預(yù)訓(xùn)練的模型(藍(lán)色)無(wú)論是上游任務(wù)還是下游任務(wù),都不如預(yù)訓(xùn)練過(guò)的模型效果。
這鼓勵(lì)我們今天在進(jìn)行訓(xùn)練任務(wù)時(shí),最好選擇一個(gè)已經(jīng)過(guò)預(yù)訓(xùn)練的模型上繼續(xù)訓(xùn)練(以利用其中的先驗(yàn)知識(shí))。
2.3 在初始預(yù)訓(xùn)練中使用 Rewarmup 會(huì)損傷性能
盡管 warmup 策略在 Finetune 和 Continue Pretraining 中都起到了更好的效果(相較于常量學(xué)習(xí)率),但是,這建立在「切換了訓(xùn)練數(shù)據(jù)集(數(shù)據(jù)分布)」的前提下。
作者做了一個(gè)實(shí)驗(yàn),不切換數(shù)據(jù)集,而是繼續(xù)在之前的「預(yù)訓(xùn)練數(shù)據(jù)集(The Pile)」上繼續(xù)訓(xùn)練:
從圖中結(jié)果可以發(fā)現(xiàn):無(wú)論使用多大學(xué)習(xí)率的 warmup 策略,效果都不如使用常量學(xué)習(xí)率。
這進(jìn)一步證明,在原數(shù)據(jù)集上使用 warmup 接著訓(xùn)練會(huì)造成性能損傷,學(xué)習(xí)率越大則損傷越大,且這種損傷是無(wú)法在后續(xù)的訓(xùn)練中被找回的。
PS:這里提示我們,當(dāng)預(yù)訓(xùn)練中遇到了訓(xùn)練中斷需要繼續(xù)訓(xùn)練時(shí),我們應(yīng)該在重新開(kāi)始訓(xùn)練時(shí)將學(xué)習(xí)率恢復(fù)到中斷之前的狀態(tài)(無(wú)論是數(shù)值還是衰減率)。
3. 實(shí)驗(yàn)限制
作者在論文的最后貼出了得出上述結(jié)論的一些局限性。
3.1 上下游數(shù)據(jù)分布類(lèi)似
因?yàn)閷?shí)驗(yàn)中選用的上游數(shù)據(jù)集 [Pile] 和下游數(shù)據(jù)集 [SlimPajama] 中存在一部分的數(shù)據(jù)重疊,
所以導(dǎo)致上下游數(shù)據(jù)的分布是比較相似的,但在我們真實(shí)的訓(xùn)練任務(wù)中,上下游數(shù)據(jù)的差異可能會(huì)比這大的多。
3.2 模型規(guī)模較小
論文中所使用的模型規(guī)模為 410M,這和今天人們 7B 起步的 LLM 規(guī)模相差甚遠(yuǎn)。
不過(guò)該團(tuán)隊(duì)打算在接下來(lái)的工作中繼續(xù)在 3B 和 7B 的規(guī)模下進(jìn)行嘗試,期待他們最后的實(shí)驗(yàn)結(jié)論。
-
模型
+關(guān)注
關(guān)注
1文章
3279瀏覽量
48970 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24749 -
LLM
+關(guān)注
關(guān)注
0文章
296瀏覽量
357
原文標(biāo)題:如何更好地繼續(xù)預(yù)訓(xùn)練(Continue PreTraining)
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論