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

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

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

大模型參數(shù)高效微調(diào)技術(shù)原理綜述

深度學(xué)習(xí)自然語言處理 ? 來源:吃果凍不吐果凍皮 ? 2023-06-13 14:59 ? 次閱讀

LoRA

背景

神經(jīng)網(wǎng)絡(luò)包含很多全連接層,其借助于矩陣乘法得以實(shí)現(xiàn),然而,很多全連接層的權(quán)重矩陣都是滿秩的。當(dāng)針對特定任務(wù)進(jìn)行微調(diào)后,模型中權(quán)重矩陣其實(shí)具有很低的本征秩(intrinsic rank),因此,論文的作者認(rèn)為權(quán)重更新的那部分參數(shù)矩陣盡管隨機(jī)投影到較小的子空間,仍然可以有效的學(xué)習(xí),可以理解為針對特定的下游任務(wù)這些權(quán)重矩陣就不要求滿秩。

技術(shù)原理

LoRA(論文:LoRA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS),該方法的核心思想就是通過低秩分解來模擬參數(shù)的改變量,從而以極小的參數(shù)量來實(shí)現(xiàn)大模型的間接訓(xùn)練。

在涉及到矩陣相乘的模塊,在原始的PLM旁邊增加一個新的通路,通過前后兩個矩陣A,B相乘,第一個矩陣A負(fù)責(zé)降維,第二個矩陣B負(fù)責(zé)升維,中間層維度為r,從而來模擬所謂的本征秩(intrinsic rank)。

7abe9dde-09b5-11ee-962d-dac502259ad0.png

可訓(xùn)練層維度和預(yù)訓(xùn)練模型層維度一致為d,先將維度d通過全連接層降維至r,再從r通過全連接層映射回d維度,其中,r<

7ad0629e-09b5-11ee-962d-dac502259ad0.png

在下游任務(wù)訓(xùn)練時,固定模型的其他參數(shù),只優(yōu)化新增的兩個矩陣的權(quán)重參數(shù),將PLM跟新增的通路兩部分的結(jié)果加起來作為最終的結(jié)果(兩邊通路的輸入跟輸出維度是一致的),即h=Wx+BAx。第一個矩陣的A的權(quán)重參數(shù)會通過高斯函數(shù)初始化,而第二個矩陣的B的權(quán)重參數(shù)則會初始化為零矩陣,這樣能保證訓(xùn)練開始時新增的通路BA=0從而對模型結(jié)果沒有影響。

7ada26ee-09b5-11ee-962d-dac502259ad0.png

在推理時,將左右兩部分的結(jié)果加到一起即可,h=Wx+BAx=(W+BA)x,所以只要將訓(xùn)練完成的矩陣乘積BA跟原本的權(quán)重矩陣W加到一起作為新權(quán)重參數(shù)替換原本PLM的W即可,對于推理來說,不會增加額外的計算資源。

此外,Transformer的權(quán)重矩陣包括Attention模塊里用于計算query, key, value的Wq,Wk,Wv以及多頭attention的Wo,以及MLP層的權(quán)重矩陣,LoRA只應(yīng)用于Attention模塊中的4種權(quán)重矩陣,而且通過消融實(shí)驗(yàn)發(fā)現(xiàn)同時調(diào)整 Wq 和 Wv 會產(chǎn)生最佳結(jié)果。

實(shí)驗(yàn)還發(fā)現(xiàn),保證權(quán)重矩陣的種類的數(shù)量比起增加隱藏層維度r更為重要,增加r并不一定能覆蓋更加有意義的子空間。

7ae84abc-09b5-11ee-962d-dac502259ad0.png?7af06328-09b5-11ee-962d-dac502259ad0.png

那么關(guān)于秩的選擇,通常情況下,rank為4,8,16即可。

7afe03de-09b5-11ee-962d-dac502259ad0.png

通過實(shí)驗(yàn)也發(fā)現(xiàn),在眾多數(shù)據(jù)集上LoRA在只訓(xùn)練極少量參數(shù)的前提下,最終在性能上能和全量微調(diào)匹配,甚至在某些任務(wù)上優(yōu)于全量微調(diào)。

7b105200-09b5-11ee-962d-dac502259ad0.png

AdaLoRA

背景

在NLP領(lǐng)域,對于下游任務(wù)進(jìn)行大型預(yù)訓(xùn)練語言模型的微調(diào)已經(jīng)成為一種重要的做法。一般而言,我們會采用對原有的預(yù)訓(xùn)練模型進(jìn)行全量微調(diào)的方法來適配下游任務(wù),但這種方法存在兩個問題。

訓(xùn)練階段。對于預(yù)訓(xùn)練模型進(jìn)行微調(diào)的時候,為了更新權(quán)重參數(shù),需要大量的顯存來存儲參數(shù)的梯度和優(yōu)化器信息,在當(dāng)今預(yù)訓(xùn)練模型的參數(shù)變得越來越大的情況下,針對下游任務(wù)微調(diào)門檻變得越來越高。

推理階段。由于我們訓(xùn)練的時候是對于模型參數(shù)進(jìn)行全量的更新,所以多個下游任務(wù)需要為每個任務(wù)維護(hù)一個大型模型的獨(dú)立副本,這樣就導(dǎo)致我們在實(shí)際應(yīng)用的時候浪費(fèi)了不必要的存儲。

為了解決這些問題,研究者提出了兩個主要研究方向,以減少微調(diào)參數(shù)的數(shù)量,同時保持甚至提高預(yù)訓(xùn)練語言模型的性能。

方向一:添加小型網(wǎng)絡(luò)模塊:將小型網(wǎng)絡(luò)模塊添加到PLMs中,保持基礎(chǔ)模型保持不變的情況下僅針對每個任務(wù)微調(diào)這些模塊,可以用于所有任務(wù)。這樣,只需引入和更新少量任務(wù)特定的參數(shù),就可以適配下游的任務(wù),大大提高了預(yù)訓(xùn)練模型的實(shí)用性。如:Adapter tuning、Prefix tuning、Prompt Tuning等,這類方法雖然大大減少了內(nèi)存消耗。但是這些方法存在一些問題,比如:Adapter tuning引入了推理延時;Prefix tuning或Prompt tuning直接優(yōu)化Prefix和Prompt是非單調(diào)的,比較難收斂,并且消耗了輸入的token。

方向二:下游任務(wù)增量更新:對預(yù)訓(xùn)練權(quán)重的增量更新進(jìn)行建模,而無需修改模型架構(gòu),即W=W0+△W。比如:Diff pruning、LoRA等,此類方法可以達(dá)到與完全微調(diào)幾乎相當(dāng)?shù)男阅?,但是也存在一些問題,比如:Diff pruning需要底層實(shí)現(xiàn)來加速非結(jié)構(gòu)化稀疏矩陣的計算,不能直接使用現(xiàn)有的框架,訓(xùn)練過程中需要存儲完整的?W矩陣,相比于全量微調(diào)并沒有降低計算成本。LoRA則需要預(yù)先指定每個增量矩陣的本征秩 r 相同,忽略了在微調(diào)預(yù)訓(xùn)練模型時,權(quán)重矩陣的重要性在不同模塊和層之間存在顯著差異,并且只訓(xùn)練了Attention,沒有訓(xùn)練FFN,事實(shí)上FFN更重要。

基于以上問題進(jìn)行總結(jié):

第一,我們不能預(yù)先指定矩陣的秩,需要動態(tài)更新增量矩陣的R,因?yàn)闄?quán)重矩陣的重要性在不同模塊和層之間存在顯著差異。

第二,需要找到更加重要的矩陣,分配更多的參數(shù),裁剪不重要的矩陣。找到重要的矩陣,可以提升模型效果;而裁剪不重要的矩陣,可以降低參數(shù)計算量,降低模型效果差的風(fēng)險。

為了彌補(bǔ)這一差距,作者提出了AdaLoRA,它根據(jù)權(quán)重矩陣的重要性得分,在權(quán)重矩陣之間自適應(yīng)地分配參數(shù)預(yù)算。

技術(shù)原理

AdaLoRA(論文:ADAPTIVE BUDGET ALLOCATION FOR PARAMETEREFFICIENT FINE-TUNING),是對LoRA的一種改進(jìn),它根據(jù)重要性評分動態(tài)分配參數(shù)預(yù)算給權(quán)重矩陣。具體做法如下:

調(diào)整增量矩分配。AdaLoRA將關(guān)鍵的增量矩陣分配高秩以捕捉更精細(xì)和任務(wù)特定的信息,而將較不重要的矩陣的秩降低,以防止過擬合并節(jié)省計算預(yù)算。

以奇異值分解的形式對增量更新進(jìn)行參數(shù)化,并根據(jù)重要性指標(biāo)裁剪掉不重要的奇異值,同時保留奇異向量。由于對一個大矩陣進(jìn)行精確SVD分解的計算消耗非常大,這種方法通過減少它們的參數(shù)預(yù)算來加速計算,同時,保留未來恢復(fù)的可能性并穩(wěn)定訓(xùn)練。

7b1e9df6-09b5-11ee-962d-dac502259ad0.png

在訓(xùn)練損失中添加了額外的懲罰項(xiàng),以規(guī)范奇異矩陣P和Q的正交性,從而避免SVD的大量計算并穩(wěn)定訓(xùn)練。

通過實(shí)驗(yàn)證明,AdaLoRA 實(shí)現(xiàn)了在所有預(yù)算、所有數(shù)據(jù)集上與現(xiàn)有方法相比,性能更好或相當(dāng)?shù)乃?。例如,?dāng)參數(shù)預(yù)算為 0.3M 時,AdaLoRA 在RTE數(shù)據(jù)集上,比表現(xiàn)最佳的基線(Baseline)高 1.8%。

7b259584-09b5-11ee-962d-dac502259ad0.png

QLoRA

背景

微調(diào)大型語言模型 (LLM) 是提高其性能以及添加所需或刪除不需要的行為的一種非常有效的方法。然而,微調(diào)非常大的模型非常昂貴;以 LLaMA 65B 參數(shù)模型為例,常規(guī)的 16 bit微調(diào)需要超過 780 GB 的 GPU 內(nèi)存。

雖然最近的量化方法可以減少 LLM 的內(nèi)存占用,但此類技術(shù)僅適用于推理場景。

基于此,作者提出了QLoRA,并首次證明了可以在不降低任何性能的情況下微調(diào)量化為 4 bit的模型。

技術(shù)原理

QLoRA(論文:QLORA: Efficient Finetuning of Quantized LLMs),使用一種新穎的高精度技術(shù)將預(yù)訓(xùn)練模型量化為 4 bit,然后添加一小組可學(xué)習(xí)的低秩適配器權(quán)重,這些權(quán)重通過量化權(quán)重的反向傳播梯度進(jìn)行微調(diào)。QLORA 有一種低精度存儲數(shù)據(jù)類型(4 bit),還有一種計算數(shù)據(jù)類型(BFloat16)。實(shí)際上,這意味著無論何時使用 QLoRA 權(quán)重張量,我們都會將張量反量化為 BFloat16,然后執(zhí)行 16 位矩陣乘法。QLoRA提出了兩種技術(shù)實(shí)現(xiàn)高保真 4 bit微調(diào)——4 bit NormalFloat(NF4) 量化和雙量化。此外,還引入了分頁優(yōu)化器,以防止梯度檢查點(diǎn)期間的內(nèi)存峰值,從而導(dǎo)致內(nèi)存不足的錯誤,這些錯誤在過去使得大型模型難以在單臺機(jī)器上進(jìn)行微調(diào)。具體說明如下:

4bitNormalFloat(NF4):對于正態(tài)分布權(quán)重而言,一種信息理論上最優(yōu)的新數(shù)據(jù)類型,該數(shù)據(jù)類型對正態(tài)分布數(shù)據(jù)產(chǎn)生比 4 bit整數(shù)和 4bit 浮點(diǎn)數(shù)更好的實(shí)證結(jié)果。

雙量化:對第一次量化后的那些常量再進(jìn)行一次量化,減少存儲空間。

分頁優(yōu)化器:使用NVIDIA統(tǒng)一內(nèi)存特性,該特性可以在在GPU偶爾OOM的情況下,進(jìn)行CPU和GPU之間自動分頁到分頁的傳輸,以實(shí)現(xiàn)無錯誤的 GPU 處理。該功能的工作方式類似于 CPU 內(nèi)存和磁盤之間的常規(guī)內(nèi)存分頁。使用此功能為優(yōu)化器狀態(tài)(Optimizer)分配分頁內(nèi)存,然后在 GPU 內(nèi)存不足時將其自動卸載到 CPU 內(nèi)存,并在優(yōu)化器更新步驟需要時將其加載回 GPU 內(nèi)存。

7b363236-09b5-11ee-962d-dac502259ad0.png

實(shí)驗(yàn)證明,無論是使用16bit、8bit還是4bit的適配器方法,都能夠復(fù)制16bit全參數(shù)微調(diào)的基準(zhǔn)性能。這說明,盡管量化過程中會存在性能損失,但通過適配器微調(diào),完全可以恢復(fù)這些性能。

7b44cc1a-09b5-11ee-962d-dac502259ad0.png

實(shí)驗(yàn)還比較了不同的4bit數(shù)據(jù)類型對效果(zero-shot均值)的影響,其中,NFloat 顯著優(yōu)于Float,而NFloat + DQ略微優(yōu)于NFloat,雖然DQ對精度提升不大,但是對于內(nèi)存控制效果更好。

7b4caf98-09b5-11ee-962d-dac502259ad0.png

除此之外,論文中還對不同大小模型、不同數(shù)據(jù)類型、在 MMLU數(shù)據(jù)集上的微調(diào)效果進(jìn)行了對比。使用QLoRA(NFloat4 + DQ)可以和Lora(BFloat16)持平,同時,使用QLORA( FP4)的模型效果落后于前兩者一個百分點(diǎn)。

7b5ae23e-09b5-11ee-962d-dac502259ad0.png

作者在實(shí)驗(yàn)中也發(fā)現(xiàn)了一些有趣的點(diǎn),比如:指令調(diào)優(yōu)雖然效果比較好,但只適用于指令相關(guān)的任務(wù),在聊天機(jī)器人上效果并不佳,而聊天機(jī)器人更適合用Open Assistant數(shù)據(jù)集去進(jìn)行微調(diào)。通過指令類數(shù)據(jù)集的調(diào)優(yōu)更像是提升大模型的推理能力,并不是為聊天而生的。

總之,QLoRA的出現(xiàn)給大家?guī)硪恍┬碌乃伎?,不管是微調(diào)還是部署大模型,之后都會變得更加容易。每個人都可以快速利用自己的私有數(shù)據(jù)進(jìn)行微調(diào);同時,又能輕松的部署大模型進(jìn)行推理。






審核編輯:劉清

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

    關(guān)注

    42

    文章

    4734

    瀏覽量

    100420
  • SVD
    SVD
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    12151
  • 電源優(yōu)化器
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    5405
  • LoRa技術(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    101

    瀏覽量

    16304
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    486

    瀏覽量

    21987

原文標(biāo)題:大模型參數(shù)高效微調(diào)技術(shù)原理綜述 之 LoRA、AdaLoRA、QLoRA

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

收藏 人收藏

    評論

    相關(guān)推薦

    【大語言模型:原理與工程實(shí)踐】核心技術(shù)綜述

    其預(yù)訓(xùn)練和微調(diào),直到模型的部署和性能評估。以下是對這些技術(shù)綜述模型架構(gòu): LLMs通常采用深層的神經(jīng)網(wǎng)絡(luò)架構(gòu),最常見的是Transf
    發(fā)表于 05-05 10:56

    有限集模型預(yù)測控制策略綜述

    有限集模型預(yù)測控制的綜述
    發(fā)表于 11-20 11:27

    基于模型設(shè)計的HDL代碼自動生成技術(shù)綜述

    摘要:在調(diào)研近幾年基于模型設(shè)計的HDL代碼自動生成技術(shù)相關(guān)工具及工程應(yīng)用情況的基礎(chǔ)上,從HDL代碼自動生成的技術(shù)角度分析了基于模型設(shè)計的應(yīng)用需求及現(xiàn)狀,分析了基于
    發(fā)表于 06-08 09:29

    文本挖掘之概率主題模型綜述

    文本挖掘之概率主題模型綜述
    發(fā)表于 06-24 14:16 ?16次下載

    抖動按鍵技術(shù)及雙狄拉克模型綜述

    抖動按鍵技術(shù)及雙狄拉克模型綜述
    發(fā)表于 07-16 14:15 ?2次下載

    有哪些省內(nèi)存的大語言模型訓(xùn)練/微調(diào)/推理方法?

    首先,我們需要了解如何根據(jù)參數(shù)量估計模型大致所需的 RAM,這在實(shí)踐中有很重要的參考意義。我們需要通過估算設(shè)置 batch_size,設(shè)置模型精度,選擇微調(diào)方法和
    的頭像 發(fā)表于 04-10 11:41 ?1354次閱讀

    使用LoRA和Hugging Face高效訓(xùn)練大語言模型

    在本文中,我們將展示如何使用 大語言模型低秩適配 (Low-Rank Adaptation of Large Language Models,LoRA) 技術(shù)在單 GPU 上微調(diào) 110 億
    的頭像 發(fā)表于 04-14 17:37 ?1949次閱讀

    使用Alpaca-Lora進(jìn)行參數(shù)高效模型微調(diào)

    在推理時,將左右兩部分的結(jié)果加到一起即可,h=Wx+BAx=(W+BA)x,所以,只要將訓(xùn)練完成的矩陣乘積BA跟原本的權(quán)重矩陣W加到一起作為新權(quán)重參數(shù)替換原始預(yù)訓(xùn)練語言模型的W即可,不會增加額外的計算資源。
    的頭像 發(fā)表于 05-17 14:24 ?2063次閱讀
    使用Alpaca-Lora進(jìn)行<b class='flag-5'>參數(shù)</b><b class='flag-5'>高效</b><b class='flag-5'>模型</b><b class='flag-5'>微調(diào)</b>

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

    一起提出的新方法 QLoRA 把微調(diào)模型的 顯存需求從>780GB降低到 。 開源社區(qū)直接開始狂歡,相關(guān)論文成為24小時內(nèi)關(guān)注度最高的AI論文。 ? 以Meta的美洲駝LLaMA為基礎(chǔ),得到原駝
    的頭像 發(fā)表于 06-02 15:26 ?677次閱讀
    iPhone都能<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>了嘛

    GLoRA—高效微調(diào)模型參數(shù)

    近年來,大規(guī)模深度神經(jīng)網(wǎng)絡(luò)的顯著成就徹底改變了人工智能領(lǐng)域,在各種任務(wù)和領(lǐng)域展示了前所未有的性能。
    的頭像 發(fā)表于 06-27 16:47 ?783次閱讀
    GLoRA—<b class='flag-5'>高效</b><b class='flag-5'>微調(diào)</b><b class='flag-5'>模型</b><b class='flag-5'>參數(shù)</b>

    GLoRA:一種廣義參數(shù)高效微調(diào)方法

    了卓越的能力。 ? 本文提出了 廣義LoRA (GLoRA),一種通用參數(shù)高效微調(diào)任務(wù)的先進(jìn)方法。增強(qiáng)低秩適應(yīng)(LoRA), GLoRA 采用 廣義提示模塊優(yōu)化 預(yù)訓(xùn)練模型權(quán)重并調(diào)整中
    的頭像 發(fā)表于 06-27 16:53 ?714次閱讀
    GLoRA:一種廣義<b class='flag-5'>參數(shù)</b><b class='flag-5'>高效</b>的<b class='flag-5'>微調(diào)</b>方法

    OpenAI開放大模型微調(diào)功能 GPT-3.5可以打造專屬ChatGPT

    OpenAI開放大模型微調(diào)功能 GPT-3.5可以打造專屬ChatGPT OpenAI開放大模型微調(diào)功能,這意味著GPT-3.5 Turbo支持自定義
    的頭像 發(fā)表于 08-23 19:34 ?1163次閱讀

    多任務(wù)微調(diào)框架MFTCoder詳細(xì)技術(shù)解讀

    MFTCoder具備高效訓(xùn)練特征,包括提供高效的數(shù)據(jù)Tokenization模式和支持PEFT微調(diào),能有效提升微調(diào)訓(xùn)練速度并降低對資源的需求。
    的頭像 發(fā)表于 11-17 17:17 ?964次閱讀
    多任務(wù)<b class='flag-5'>微調(diào)</b>框架MFTCoder詳細(xì)<b class='flag-5'>技術(shù)</b>解讀

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

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

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

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