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

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

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

650億參數(shù),8塊GPU就能全參數(shù)微調(diào)!邱錫鵬團(tuán)隊(duì)把大模型門檻打下來(lái)了!

CVer ? 來(lái)源:機(jī)器之心 ? 2023-06-21 14:00 ? 次閱讀

全參數(shù)微調(diào)的顯存使用量和推理一樣多,大模型不再只是大型科技公司的玩具了。

在大模型方向上,科技巨頭在訓(xùn)更大的模型,學(xué)界則在想辦法搞優(yōu)化。最近,優(yōu)化算力的方法又上升到了新的高度。

大型語(yǔ)言模型(LLM)徹底改變了自然語(yǔ)言處理(NLP)領(lǐng)域,展示了涌現(xiàn)、頓悟等非凡能力。然而,若想構(gòu)建出具備一定通用能力的模型,就需要數(shù)十億參數(shù),這大幅提高了 NLP 研究的門檻。在 LLM 模型調(diào)優(yōu)過(guò)程中通常又需要昂貴的 GPU 資源,例如 8×80GB 的 GPU 設(shè)備,這使得小型實(shí)驗(yàn)室和公司很難參與這一領(lǐng)域的研究。

最近,人們正在研究參數(shù)高效的微調(diào)技術(shù)(PEFT),例如 LoRA 和 Prefix-tuning,為利用有限資源對(duì) LLM 進(jìn)行調(diào)優(yōu)提供了解決方案。然而,這些方法并沒有為全參數(shù)微調(diào)提供實(shí)用的解決方案,而全參數(shù)微調(diào)已被公認(rèn)為是比參數(shù)高效微調(diào)更強(qiáng)大的方法。

在上周復(fù)旦大學(xué)邱錫鵬團(tuán)隊(duì)提交的論文《Full Parameter Fine-tuning for Large Language Models with Limited Resources》中,研究人員提出了一種新的優(yōu)化器 LOw-Memory Optimization(LOMO)。

通過(guò)將 LOMO 與現(xiàn)有的內(nèi)存節(jié)省技術(shù)集成,與標(biāo)準(zhǔn)方法(DeepSpeed 解決方案)相比,新方法將內(nèi)存使用量減少到了之前的 10.8%。因此,新方法能夠在一臺(tái)具有 8×RTX 3090 的機(jī)器上對(duì) 65B 模型進(jìn)行全參數(shù)微調(diào),每個(gè) RTX 3090 具有 24GB 內(nèi)存。

d4d050e6-0ff1-11ee-962d-dac502259ad0.jpg

論文鏈接:https://arxiv.org/abs/2306.09782

在該工作中,作者分析了 LLM 中內(nèi)存使用的四個(gè)方面:激活、優(yōu)化器狀態(tài)、梯度張量和參數(shù),并對(duì)訓(xùn)練過(guò)程進(jìn)行了三方面的優(yōu)化:

算法的角度重新思考了優(yōu)化器的功能,發(fā)現(xiàn) SGD 在微調(diào) LLM 完整參數(shù)方面是一種很好的替代品。這使得作者可以刪除優(yōu)化器狀態(tài)的整個(gè)部分,因?yàn)?SGD 不存儲(chǔ)任何中間狀態(tài)。

新提出的優(yōu)化器 LOMO 將梯度張量的內(nèi)存使用量減少到 O (1),相當(dāng)于最大梯度張量的內(nèi)存使用量。

為了使用 LOMO 穩(wěn)定混合精度訓(xùn)練,作者集成了梯度歸一化、損失縮放,并在訓(xùn)練期間將某些計(jì)算轉(zhuǎn)換為全精度。

新技術(shù)讓內(nèi)存的使用等于參數(shù)使用加上激活和最大梯度張量。全參數(shù)微調(diào)的內(nèi)存使用被推向了極致,其僅等同于推理的使用。這是因?yàn)?forward+backward 過(guò)程的內(nèi)存占用應(yīng)該不會(huì)比單獨(dú)的 forward 過(guò)程少。值得注意的是,在使用 LOMO 節(jié)省內(nèi)存時(shí),新方法確保了微調(diào)過(guò)程不受影響,因?yàn)閰?shù)更新過(guò)程仍然等同于 SGD。

該研究評(píng)估了 LOMO 的內(nèi)存和吞吐量性能,表明借助 LOMO,研究者在 8 個(gè) RTX 3090 GPU 上就可以訓(xùn)練 65B 參數(shù)的模型。此外,為了驗(yàn)證 LOMO 在下游任務(wù)上的性能,他們應(yīng)用 LOMO 來(lái)調(diào)優(yōu) SuperGLUE 數(shù)據(jù)集集合上 LLM 的全部參數(shù)。結(jié)果表明了 LOMO 對(duì)具有數(shù)十億參數(shù)的 LLM 進(jìn)行優(yōu)化的有效性。

方法介紹

在方法部分,本文詳細(xì)介紹了 LOMO(LOW-MEMORY OPTIMIZATION)。一般而言,梯度張量表示一個(gè)參數(shù)張量的梯度,其大小與參數(shù)相同,這樣一來(lái)內(nèi)存開銷較大。而現(xiàn)有的深度學(xué)習(xí)框架如 PyTorch 會(huì)為所有參數(shù)存儲(chǔ)梯度張量?,F(xiàn)階段,存儲(chǔ)梯度張量有兩方面原因:計(jì)算優(yōu)化器狀態(tài)以及歸一化梯度。

由于該研究采用 SGD 作為優(yōu)化器,因此沒有依賴于梯度的優(yōu)化器狀態(tài),并且他們有一些梯度歸一化的替代方案。

他們提出了 LOMO,如算法 1 所示,LOMO 將梯度計(jì)算與參數(shù)更新融合在一個(gè)步驟中,從而避免了梯度張量的存儲(chǔ)。

下圖為 SGD 和 LOMO 在反向傳播和參數(shù)更新階段的比較。Pi 為模型參數(shù),Gi 為 Pi 對(duì)應(yīng)的梯度。LOMO 將梯度計(jì)算和參數(shù)更新融合到一個(gè)步驟中,使梯度張量最小。

d4f56eda-0ff1-11ee-962d-dac502259ad0.png

LOMO 對(duì)應(yīng)的算法偽代碼:

d571db50-0ff1-11ee-962d-dac502259ad0.png

具體而言,該研究將 vanilla 梯度下降表示為

d598b068-0ff1-11ee-962d-dac502259ad0.png

,這是一個(gè)兩步過(guò)程,首先是計(jì)算梯度,然后更新參數(shù)。融合版本為

d5a1c482-0ff1-11ee-962d-dac502259ad0.png

。 該研究的關(guān)鍵思想是在計(jì)算梯度時(shí)立即更新參數(shù),這樣就不會(huì)在內(nèi)存中存儲(chǔ)梯度張量。這一步可以通過(guò)在向反向傳播中注入 hook 函數(shù)來(lái)實(shí)現(xiàn)。PyTorch 提供了注入 hook 函數(shù)的相關(guān) API,但卻無(wú)法用當(dāng)前的 API 實(shí)現(xiàn)精確的即時(shí)更新。相反,該研究在內(nèi)存中最多存儲(chǔ)一個(gè)參數(shù)的梯度,并隨著反向傳播逐一更新每個(gè)參數(shù)。本文方法減少了梯度的內(nèi)存使用,從存儲(chǔ)所有參數(shù)的梯度到只存儲(chǔ)一個(gè)參數(shù)的梯度。

大部分 LOMO 內(nèi)存使用與參數(shù)高效微調(diào)方法的內(nèi)存使用一致,這表明 LOMO 與這些方法相結(jié)合只會(huì)導(dǎo)致梯度占用內(nèi)存的輕微增加。這樣就可以為 PEFT 方法調(diào)優(yōu)更多的參數(shù)。

實(shí)驗(yàn)結(jié)果

在實(shí)驗(yàn)部分,研究者從三個(gè)方面評(píng)估了他們提出的方法,即內(nèi)存使用情況、吞吐量和下游性能。如果不作進(jìn)一步解釋,所有的實(shí)驗(yàn)都是用 7B 到 65B 的 LLaMA 模型進(jìn)行的。

內(nèi)存使用情況

研究者首先剖析了,在不同設(shè)置下,訓(xùn)練期間的模型狀態(tài)和激活的內(nèi)存使用情況。如表 1 所示,與 AdamW 優(yōu)化器相比,LOMO 優(yōu)化器的使用導(dǎo)致內(nèi)存占用大幅減少,從 102.20GB 減少到 14.58GB;與 SGD 相比,在訓(xùn)練 LLaMA-7B 模型時(shí),內(nèi)存占用從 51.99GB 減少到 14.58GB。內(nèi)存用量的大幅減少主要?dú)w因于梯度和優(yōu)化器狀態(tài)的內(nèi)存需求減少。因此,在訓(xùn)練過(guò)程中,內(nèi)存大部分被參數(shù)占據(jù),與推理過(guò)程中的內(nèi)存用量相當(dāng)。

d5bb8ac0-0ff1-11ee-962d-dac502259ad0.png

如圖 2 所示,如果采用 AdamW 優(yōu)化器進(jìn)行 LLaMA-7B 訓(xùn)練,相當(dāng)大比例的內(nèi)存(73.7%)被分配給優(yōu)化器狀態(tài)。用 SGD 優(yōu)化器替換 AdamW 優(yōu)化器可以有效減少優(yōu)化器狀態(tài)占用內(nèi)存的百分比,從而減輕 GPU 內(nèi)存使用(從 102.20GB 減少到 51.99GB)。如果使用 LOMO,參數(shù)更新和 backward 會(huì)被融合到一個(gè)步驟中,進(jìn)一步消除優(yōu)化器狀態(tài)對(duì)內(nèi)存的需求。

d5e05454-0ff1-11ee-962d-dac502259ad0.png

吞吐量

研究者比較了 LOMO、AdamW 和 SGD 的吞吐性能。實(shí)驗(yàn)是在一臺(tái)配備了 8 個(gè) RTX 3090 GPU 的服務(wù)器上進(jìn)行的。

對(duì)于 7B 的模型,LOMO 的吞吐量呈現(xiàn)顯著優(yōu)勢(shì),超過(guò) AdamW 和 SGD 約 11 倍。這一重大改進(jìn)可歸功于 LOMO 在單個(gè) GPU 上訓(xùn)練 7B 模型的能力,這減少了 GPU 間的通信開銷。與 AdamW 相比,SGD 的吞吐量略高,這可歸因于 SGD 排除了動(dòng)量和方差的計(jì)算。

至于 13B 模型,由于內(nèi)存的限制,它無(wú)法在現(xiàn)有的 8 個(gè) RTX 3090 GPU 上用 AdamW 訓(xùn)練。在這種情況下,模型的并行性對(duì) LOMO 來(lái)說(shuō)是必要的,LOMO 在吞吐量方面仍然優(yōu)于 SGD。這一優(yōu)勢(shì)歸功于 LOMO 的內(nèi)存高效特性,以及只需要兩個(gè) GPU 以相同的設(shè)置來(lái)訓(xùn)練模型,從而降低了通信成本,提高了吞吐量。此外,在訓(xùn)練 30B 模型時(shí),SGD 在 8 個(gè) RTX 3090 GPU 上遇到了內(nèi)存不足(OOM)的問(wèn)題,而 LOMO 在只有 4 個(gè) GPU 的情況下表現(xiàn)良好。

最后,研究者使用 8 個(gè) RTX 3090 GPU 成功訓(xùn)練了 65B 模型,實(shí)現(xiàn)了 4.93 TGS 的吞吐量。利用這樣的服務(wù)器配置和 LOMO,模型在 1000 個(gè)樣本上的訓(xùn)練過(guò)程(每個(gè)樣本包含 512 個(gè) token)大約需要 3.6 小時(shí)。

下游性能

為了評(píng)估 LOMO 在微調(diào)大型語(yǔ)言模型方面的有效性,研究者進(jìn)行了一系列廣泛的實(shí)驗(yàn)。他們將 LOMO 與其他兩種方法進(jìn)行比較,一種是不需要微調(diào)的 Zero-shot,另一種是目前很流行的參數(shù)高效微調(diào)技術(shù) LoRA。

d5ea4626-0ff1-11ee-962d-dac502259ad0.png

表 3 結(jié)果顯示:

LOMO 的表現(xiàn)明顯好于 Zero-shot;

在大多數(shù)實(shí)驗(yàn)中,LOMO 普遍優(yōu)于 LoRA;

LOMO 可以有效擴(kuò)展至 650 億參數(shù)的模型。

LOMO 和 LoRA 在本質(zhì)上是相互獨(dú)立的。為了驗(yàn)證這一說(shuō)法,研究者使用 LLaMA-13B 在 BoolQ 和 MultiRC 數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。結(jié)果如圖 3 所示。

他們發(fā)現(xiàn),LOMO 在持續(xù)增強(qiáng) LoRA 的性能,不管 LoRA 取得的結(jié)果有多高。這表明,LOMO 和 LoRA 采用的不同微調(diào)方法是互補(bǔ)的。具體來(lái)說(shuō),LOMO 專注于微調(diào)預(yù)訓(xùn)練模型的權(quán)重,而 LoRA 則調(diào)整其他模塊。因此,LOMO 不會(huì)影響到 LoRA 的性能;相反,它有助于對(duì)下游任務(wù)進(jìn)行更好的模型調(diào)優(yōu)。

d623accc-0ff1-11ee-962d-dac502259ad0.png

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

    關(guān)注

    28

    文章

    4740

    瀏覽量

    128951
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1834

    瀏覽量

    32224
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3243

    瀏覽量

    48842

原文標(biāo)題:650億參數(shù),8塊GPU就能全參數(shù)微調(diào)!邱錫鵬團(tuán)隊(duì)把大模型門檻打下來(lái)了!

文章出處:【微信號(hào):CVer,微信公眾號(hào):CVer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI計(jì)算成本打下來(lái),谷歌高效益TPU正式開放

    電子發(fā)燒友網(wǎng)報(bào)道(文/周凱揚(yáng))對(duì)于每個(gè)想要自己開發(fā)和部署AI模型的應(yīng)用開發(fā)者來(lái)說(shuō),硬件和服務(wù)器支出都是一筆不小的費(fèi)用。就以英偉達(dá)的GPU為例,即便是消費(fèi)級(jí)的GPU,最近也迎來(lái)了一波漲價(jià)
    的頭像 發(fā)表于 11-14 00:18 ?1233次閱讀
    欲<b class='flag-5'>把</b>AI計(jì)算成本<b class='flag-5'>打下來(lái)</b>,谷歌高效益TPU正式開放

    GPU上OpenVINO基準(zhǔn)測(cè)試的推斷模型的默認(rèn)參數(shù)與CPU上的參數(shù)不同是為什么?

    在 CPU 和 GPU 上推斷出具有 OpenVINO? 基準(zhǔn)的相同模型: benchmark_app.exe -m model.xml -d CPU benchmark_app.exe -m
    發(fā)表于 08-15 06:43

    一種三維磁路永磁電機(jī)的集中參數(shù)磁路模型_張繼

    一種三維磁路永磁電機(jī)的集中參數(shù)磁路模型_張繼
    發(fā)表于 01-08 11:44 ?1次下載

    消費(fèi)者不著急出手?都在等蘋果加大供貨加個(gè)被“打下來(lái)

    越來(lái)越多經(jīng)銷商表示,隨著iPhone 12 Pro供貨的加強(qiáng),這款手機(jī)的加價(jià)也不如以前,最多也即是加個(gè)幾百,而目前不少消費(fèi)者也都不著急出手,大家也都在等蘋果加大供貨,等著加個(gè)被“打下來(lái)”。
    的頭像 發(fā)表于 10-29 11:04 ?1067次閱讀

    一個(gè)GPU訓(xùn)練一個(gè)130參數(shù)模型

    現(xiàn)在的模型動(dòng)輒數(shù)百、數(shù)千億參數(shù),普通人訓(xùn)不動(dòng)怎么辦? 前不久,谷歌發(fā)布了參數(shù)量為 1.6 萬(wàn)億的語(yǔ)言模型Swith Transformer,將 GPT-3 創(chuàng)下的
    的頭像 發(fā)表于 02-11 09:04 ?2438次閱讀
    一個(gè)<b class='flag-5'>GPU</b>訓(xùn)練一個(gè)130<b class='flag-5'>億</b><b class='flag-5'>參數(shù)</b>的<b class='flag-5'>模型</b>

    HMC650 S參數(shù)

    HMC650 S參數(shù)
    發(fā)表于 03-23 17:42 ?0次下載
    HMC<b class='flag-5'>650</b> S<b class='flag-5'>參數(shù)</b>

    特斯拉Model Y的第四代驅(qū)動(dòng)逆變器技術(shù)設(shè)計(jì)

    紅外溫度傳感器的導(dǎo)入主要包括兩枚紅外溫度傳感器的導(dǎo)入,可能感溫槍的大量使用傳感器的價(jià)格打下來(lái)了吧。
    發(fā)表于 03-29 10:34 ?1545次閱讀

    iPhone都能微調(diào)模型了嘛

    650參數(shù)版只需要48GB顯存單卡微調(diào)24小時(shí),330參數(shù)版只需要24GB顯存單卡
    的頭像 發(fā)表于 06-02 15:26 ?702次閱讀
    iPhone都能<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>了嘛

    我在iPhone上裝了70參數(shù)模型,來(lái)自陳天奇團(tuán)隊(duì)最新成果

    目前可以測(cè)試的模型有羊駝家族(基于LLaMA)的RedPajama和Vicuna??蛇x模型參數(shù)分別為30和70,與很多在線Demo規(guī)模也
    的頭像 發(fā)表于 06-07 16:12 ?467次閱讀
    我在iPhone上裝了70<b class='flag-5'>億</b><b class='flag-5'>參數(shù)</b>大<b class='flag-5'>模型</b>,來(lái)自陳天奇<b class='flag-5'>團(tuán)隊(duì)</b>最新成果

    單張消費(fèi)級(jí)顯卡微調(diào)多模態(tài)大模型

    模型的訓(xùn)練門檻打下來(lái)!我們?cè)趩螐埾M(fèi)級(jí)顯卡上實(shí)現(xiàn)了多模態(tài)大模型(LaVIN-7B, LaVIN-13B)的適配和訓(xùn)練
    的頭像 發(fā)表于 06-30 10:43 ?2406次閱讀
    單張消費(fèi)級(jí)顯卡<b class='flag-5'>微調(diào)</b>多模態(tài)大<b class='flag-5'>模型</b>

    微軟宣布推出一個(gè)27參數(shù)的語(yǔ)言模型Phi-2

    Phi-2 是微軟 “小語(yǔ)言模型(SLM)” 系列中的最新版本。第一個(gè)版本是擁有 13 參數(shù)的 Phi-1,針對(duì)基本的 Python 編碼任務(wù)進(jìn)行了微調(diào)。
    發(fā)表于 12-15 09:46 ?269次閱讀
    微軟宣布推出一個(gè)27<b class='flag-5'>億</b><b class='flag-5'>參數(shù)</b>的語(yǔ)言<b class='flag-5'>模型</b>Phi-2

    四種微調(diào)模型的方法介紹

    微調(diào)(Full Fine-tuning):微調(diào)是指對(duì)整個(gè)預(yù)訓(xùn)練模型進(jìn)行微調(diào),包括所有的
    發(fā)表于 01-03 10:57 ?2.4w次閱讀
    四種<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>的方法介紹

    螞蟻推出20參數(shù)多模態(tài)遙感模型SkySense

    據(jù)了解,負(fù)責(zé)開發(fā)的百靈團(tuán)隊(duì)利用自身?yè)碛械?9遙感影像數(shù)據(jù)集進(jìn)行了預(yù)訓(xùn)練,從而生成了具有20.6參數(shù)的SkySense大模型。官方稱其為全
    的頭像 發(fā)表于 02-28 15:53 ?674次閱讀

    模型為什么要微調(diào)?大模型微調(diào)的原理

    難以達(dá)到最佳性能。為了提升模型在特定任務(wù)上的表現(xiàn),微調(diào)(Fine-tuning)成為了一個(gè)關(guān)鍵步驟。本文將詳細(xì)探討大模型為什么要進(jìn)行微調(diào)以及微調(diào)
    的頭像 發(fā)表于 07-10 10:43 ?4114次閱讀

    英偉達(dá)震撼發(fā)布:全新AI模型參數(shù)規(guī)模躍升至80量級(jí)

    8月23日,英偉達(dá)宣布,其全新AI模型面世,該模型參數(shù)規(guī)模高達(dá)80,具有精度高、計(jì)算效益大等優(yōu)勢(shì),適用于
    的頭像 發(fā)表于 08-23 16:08 ?740次閱讀