自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練

發(fā)布于 2024-7-16 09:41
瀏覽
0收藏

一、背景

我們之前的文章中介紹了幾種模型增長(zhǎng)的方案,然而針對(duì) LLM 場(chǎng)景卻又缺乏足夠的數(shù)據(jù)支撐以及最佳實(shí)踐。比如說不知道在 LLM 場(chǎng)景中這些方案的差異有多大,是否和模型規(guī)模、數(shù)據(jù)量、以及訓(xùn)練 FLOPs 有關(guān)?本文中我們介紹來自香港大學(xué)、清華大學(xué)和香港科技大學(xué)的 Stacking Your Transformer,作者做了大量的實(shí)驗(yàn)來嘗試回答上述問題。

對(duì)應(yīng)的論文為:[2405.15319] Stacking Your Transformers: A Closer Look at Model Growth for Efficient LLM Pre-Training

對(duì)應(yīng)的 Blog:https://llm-stacking.github.io/

對(duì)應(yīng)的代碼庫(kù):GitHub - tongxuluo/prts

PS:需要說明的是,論文中的實(shí)驗(yàn)很多,這里也只列了一部分。當(dāng)然,也有待完善的地方,比如論文中對(duì)比了 4 個(gè)抽象的增長(zhǎng)算子的影響,但這并不代表就完全等效于之前的工作,如果能有一些具體的對(duì)比會(huì)更清晰;此外,論文中大小模型訓(xùn)練數(shù)據(jù)量也和之前的方法很不同,比如 [2309.03852] FLM-101B: An Open LLM and How to Train It with $100K Budget 中先在 16B 模型訓(xùn)練 245.37B Token,然后在 51B 模型訓(xùn)練 39.64B Token,最后在 101B 模型訓(xùn)練 26.54B Token;而本文中的方案基本是在小規(guī)模模型訓(xùn)練很少的 Token,比如 10B 規(guī)模。

二、摘要

論文中,作者進(jìn)一步探索了模型擴(kuò)展在 LLM 預(yù)訓(xùn)練中的可行性。首先,作者確定了 3 個(gè)關(guān)鍵障礙:

  • O1:缺乏全面的評(píng)估。
  • O2:未經(jīng)測(cè)試的擴(kuò)展可行性。
  • O3:缺乏經(jīng)驗(yàn)指南。

為了解決 O1 問題,作者將現(xiàn)有的方案總結(jié)為 4 個(gè)原子增長(zhǎng)算子,并在標(biāo)準(zhǔn)的 LLM 預(yù)訓(xùn)練中對(duì)其進(jìn)行了系統(tǒng)的評(píng)估。結(jié)果表明,與 Baseline 相比,深度堆疊算子 Gstack 表現(xiàn)出了顯著的加速,從而提升了在 8 個(gè) NLP 基準(zhǔn)的整體性能?;诖?,作者深入的研究了 Gstack,以便解決 O2 和 O3。對(duì)于 O2,作者實(shí)驗(yàn)表明,Gstack 是可擴(kuò)展的,并且始終表現(xiàn)良好,例如,與直接使用 300B Token 訓(xùn)練的 7B 模型相比,Gstack 只使用 194B Token 就可以達(dá)到相同損失,加速 54.6%。對(duì)于 O3,作者通過建模確定 Gstack 的增長(zhǎng)規(guī)劃(Growth Timing)和增長(zhǎng)因子(Growth Factor),使其在常見的 LLM 預(yù)訓(xùn)練中更實(shí)用。

三、方法

3.1 O1:4 種增長(zhǎng)算子

如下圖 Figure 2 所示,作者將之前方案中的生長(zhǎng)方案總結(jié)為 4 個(gè)生長(zhǎng)算子:

  • (a):Gdirect 通過拷貝、切分和堆疊的方式實(shí)現(xiàn),分為寬度方向和深度方向。
  • (b):Glearn 通過學(xué)習(xí)映射函數(shù)的方式實(shí)現(xiàn)。
  • (c):Gzero 通過擴(kuò)充 0 值的方式實(shí)現(xiàn)。
  • (d):Grandom 通過隨機(jī)初始化然后增加 Mask 的方式實(shí)現(xiàn)。(PS:是否也可以不使用隨機(jī)初始化,比如拷貝后添加 Mask?)?

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

為了對(duì)比不同方法的效果,作者制定了一個(gè)統(tǒng)一的方案:總共兩個(gè)訓(xùn)練階段,增長(zhǎng)前的小模型訓(xùn)練,增長(zhǎng)后的大模型訓(xùn)練。其小模型訓(xùn)練的 Token 數(shù) d,大模型訓(xùn)練的 Token 數(shù) D 以及模型增長(zhǎng)因子 g(對(duì)應(yīng)非 Embedding 參數(shù)) 作為超參。

如下圖 Figure 3 所示,作者先用 d=10B Token 預(yù)訓(xùn)練了一個(gè) 400M 參數(shù)的模型,然后擴(kuò)展為 1.1B 參數(shù),對(duì)應(yīng)增長(zhǎng)因子 g=4,并繼續(xù)使用額外的 D=97.5B Token 進(jìn)行訓(xùn)練,以此來驗(yàn)證不同方案的效果。可以看出深度堆疊 Gdirect 獲得了最好的效果,與直接訓(xùn)練 100B Token大模型相比可以加速 49.1%,同時(shí)寬度擴(kuò)展基本都是負(fù)優(yōu)化。

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

PS:實(shí)際上采用不同的 d 來訓(xùn)練小模型得到的結(jié)果很不一樣,比如作者實(shí)際分別測(cè)試了使用 d=10B 和 d=50B Token 來訓(xùn)練小模型的結(jié)果,可以發(fā)現(xiàn)在 d=50B 的時(shí)候 Gzero 在深度上獲得了更好的結(jié)果, Grandom 在寬度上獲得更好的效果。

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

3.2 O2:Gstack 擴(kuò)展可行性

從上面可以看出,在作者 400M 的實(shí)驗(yàn)中,模型深度堆疊的方案能獲得不錯(cuò)的收益,因此作者也聚焦在模型深度堆疊場(chǎng)景。如下所示,作者將這種方式稱為 Gstack:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

擴(kuò)展模型規(guī)模:如下圖 Figure 4 和 Figure 5 所示,作者在 3B 模型和 7B 模型上進(jìn)行了驗(yàn)證,其中 g=4,d=10B,具體來說,小模型的層數(shù)分別是 3B 和 7B 模型的 1/4,小模型訓(xùn)練 10B Token:

  • Figure 4:3B 模型從頭開始訓(xùn)練
  • 訓(xùn)練 180B Token 達(dá)到 loss 與 Gstack 花費(fèi) 48.6% FLOPs 的 loss 相當(dāng)。
  • 訓(xùn)練 240B Token 達(dá)到 loss 與 Gstack 花費(fèi) 54.5% FLOPs 的 loss 相當(dāng)。
  • Figure 5:7B 從頭開始訓(xùn)練,160B,220B 和 280B Token 對(duì)應(yīng) Gstack 的 FLOPs 為 40.8%, 55.3% 和 53.8%。?

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

從上可以看出,當(dāng)對(duì)比 1B、3B 和 7B 模型時(shí),Gstack 帶來的優(yōu)勢(shì)并沒有隨著模型尺寸的增加而減少,這意味著,即使更大的模型中也可以利用 Gstack 來加速。

擴(kuò)展數(shù)據(jù)規(guī)模:如下圖 Figure 6 所示,作者進(jìn)一步探索了不斷擴(kuò)展數(shù)據(jù)規(guī)模的時(shí)候 Gstack 是否還有優(yōu)勢(shì)。從 Figure 6a 可以看出,對(duì)于 410M 的模型,訓(xùn)練遠(yuǎn)超縮放法則確定的 Token 數(shù)(8B),模型的 Loss 一直在下降,并且 Gstack 一直能獲得更低的 Loss。如下圖 Figure 6b 所示,作者進(jìn)一步預(yù)估當(dāng)訓(xùn)練 Token 數(shù)達(dá)到 8T 時(shí)(1000倍),Gstack 對(duì)應(yīng)的 Loss 依然更低,表明擴(kuò)大數(shù)據(jù)規(guī)模 Gstack 依然會(huì)有加速的效果。

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

Scaling Laws:如下圖 Figure 7 所示,作者根據(jù) 410M、1.1B、3B、7B 模型的相關(guān)實(shí)驗(yàn)擬合了縮放法則曲線??梢钥闯?,Gstack 在基于此預(yù)估出來的 13B 和 70B 模型模型上依然能夠獲得加速:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

3.3 O3:Growth Timing d 和 Growth Factor g

在上述的實(shí)驗(yàn)中作者直接采用了 d=10B 和 g=4,那么這個(gè)是否是最佳組合呢,在小模型上訓(xùn)練更多數(shù)據(jù)是否能帶來更高的加速比?從 1 B 模型直接擴(kuò)展到 30B 模型是否可行?為了回答這些問題,作者通過建模來確定 d 和 g 的影響。

如下圖 Figure 8 所示,作者在 410M、1.1B 和 3B 模型上探索了 Growth Timing d 的影響??梢钥闯?,對(duì)于給定的 FLOP 預(yù)算,可以確定一個(gè)最優(yōu)的 Growth Timing d,比如說,對(duì)于 410M 模型,最優(yōu)的 d 為 5-10B Token,對(duì)于 1.1B 模型,最優(yōu)的 d 為 10-20B Token:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

如下圖 Figure 9 所示,作者進(jìn)一步擬合了對(duì)于給定大模型預(yù)訓(xùn)練 Token 數(shù) C 和參數(shù)量 N 的情況下來預(yù)測(cè) d 的曲線:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

如下圖 Figure 10 所示,作者在 1.1B(24 層) 和 3B(32 層) 模型上探索了 Growth Factor g 的影響??梢钥闯觯瑢?duì)于 1.1 B 的模型,最優(yōu)的 g 為 2-3 左右,對(duì)于 3B 模型,最優(yōu)的 g 為 4-5 左右。對(duì)于 3B 模型來說,即使 g=16 時(shí)(對(duì)應(yīng) small model 為 2 層) Gstack 依然能有加速。

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

四、附錄

4.1 如何堆疊?

在 [2011.13635] Progressively Stacking 2.0: A Multi-stage Layerwise Training Method for BERT Training Speedup 中,作者對(duì) StackingBert-v1 進(jìn)行了擴(kuò)展。具體來說,將一個(gè) N 層 Encoder 的模型分 K+1 次訓(xùn)練,第一次訓(xùn)練一個(gè) N/k 層的 Bert 模型,然后每次擴(kuò)展 N/k 層并且進(jìn)行訓(xùn)練。其中綠色為凍結(jié)的層,紅色為訓(xùn)練的層。也就是每次擴(kuò)展后只訓(xùn)練新擴(kuò)展的層,全部擴(kuò)展完之后再解凍所有層繼續(xù)訓(xùn)練:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

本文作者采用了稍有不同的方案,具體來說,不是逐層堆疊 N/k 個(gè) Layer,而是分兩次堆疊。比如對(duì)于 6 層到 24 層的模型,第一次從 6 層到 12 層,第二次直接從 12 層到 24 層。作者也對(duì)兩種方案進(jìn)行了消融實(shí)驗(yàn),如下圖 Figure 33 所示,可以看出本文 Gstack 的方案會(huì)更優(yōu)一些:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

此外,如下圖 Table 5 所示,作者也探索了不同的堆疊方式,比如只堆疊中間層,或只堆疊首/尾層,最終發(fā)現(xiàn)還是全部堆疊的方案最優(yōu):

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

4.2 為什么沒保證 FPI?

Function Preserving Initialization(FPI):目標(biāo)是給定一個(gè)源模型,用它初始化目標(biāo)模型,能保證給定相同的輸入,目標(biāo)模型和源模型有相同的輸出。

在之前的很多工作中都在嘗試保證 FPI,那是否一定要滿足這個(gè)要求呢?針對(duì)這個(gè)問題作者也做了一些實(shí)驗(yàn),具體來說,在 Gdirect 中通過添加噪聲(加 20% 噪聲),不加噪聲,以及從頭訓(xùn)練的方式進(jìn)行對(duì)比,如下圖 Figure 39 可以看出,初始階段加噪的效果確實(shí)更差,但是隨著 FLOPs 的增加,加噪的方式反而更好:

Stacking Your Transformer:通過堆疊加快 LLM 預(yù)訓(xùn)練-AI.x社區(qū)

五、參考鏈接

  1. ??https://arxiv.org/abs/2405.15319??
  2. ??https://llm-stacking.github.io/??
  3. ??https://github.com/tongxuluo/prts??
  4. ??https://arxiv.org/abs/2309.03852??
  5. ??https://arxiv.org/abs/2011.13635??

本文轉(zhuǎn)載自??AI閑談??,作者: AI閑談 


已于2024-7-16 10:01:35修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦