<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

大模型參數高效微調技術原理綜述

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

LoRA

背景

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

技術原理

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

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

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

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

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

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

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

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

此外,Transformer的權重矩陣包括Attention模塊里用于計算query, key, value的Wq,Wk,Wv以及多頭attention的Wo,以及MLP層的權重矩陣,LoRA只應用于Attention模塊中的4種權重矩陣,而且通過消融實驗發現同時調整 Wq 和 Wv 會產生最佳結果。

實驗還發現,保證權重矩陣的種類的數量比起增加隱藏層維度r更為重要,增加r并不一定能覆蓋更加有意義的子空間。

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

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

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

通過實驗也發現,在眾多數據集上LoRA在只訓練極少量參數的前提下,最終在性能上能和全量微調匹配,甚至在某些任務上優于全量微調。

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

AdaLoRA

背景

在NLP領域,對于下游任務進行大型預訓練語言模型的微調已經成為一種重要的做法。一般而言,我們會采用對原有的預訓練模型進行全量微調的方法來適配下游任務,但這種方法存在兩個問題。

訓練階段。對于預訓練模型進行微調的時候,為了更新權重參數,需要大量的顯存來存儲參數的梯度和優化器信息,在當今預訓練模型的參數變得越來越大的情況下,針對下游任務微調門檻變得越來越高。

推理階段。由于我們訓練的時候是對于模型參數進行全量的更新,所以多個下游任務需要為每個任務維護一個大型模型的獨立副本,這樣就導致我們在實際應用的時候浪費了不必要的存儲。

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

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

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

基于以上問題進行總結:

第一,我們不能預先指定矩陣的秩,需要動態更新增量矩陣的R,因為權重矩陣的重要性在不同模塊和層之間存在顯著差異。

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

為了彌補這一差距,作者提出了AdaLoRA,它根據權重矩陣的重要性得分,在權重矩陣之間自適應地分配參數預算。

技術原理

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

調整增量矩分配。AdaLoRA將關鍵的增量矩陣分配高秩以捕捉更精細和任務特定的信息,而將較不重要的矩陣的秩降低,以防止過擬合并節省計算預算。

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

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

在訓練損失中添加了額外的懲罰項,以規范奇異矩陣P和Q的正交性,從而避免SVD的大量計算并穩定訓練。

通過實驗證明,AdaLoRA 實現了在所有預算、所有數據集上與現有方法相比,性能更好或相當的水平。例如,當參數預算為 0.3M 時,AdaLoRA 在RTE數據集上,比表現最佳的基線(Baseline)高 1.8%。

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

QLoRA

背景

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

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

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

技術原理

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

4bitNormalFloat(NF4):對于正態分布權重而言,一種信息理論上最優的新數據類型,該數據類型對正態分布數據產生比 4 bit整數和 4bit 浮點數更好的實證結果。

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

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

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

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

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

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

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

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

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

作者在實驗中也發現了一些有趣的點,比如:指令調優雖然效果比較好,但只適用于指令相關的任務,在聊天機器人上效果并不佳,而聊天機器人更適合用Open Assistant數據集去進行微調。通過指令類數據集的調優更像是提升大模型的推理能力,并不是為聊天而生的。

總之,QLoRA的出現給大家帶來一些新的思考,不管是微調還是部署大模型,之后都會變得更加容易。每個人都可以快速利用自己的私有數據進行微調;同時,又能輕松的部署大模型進行推理。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4591

    瀏覽量

    99293
  • SVD
    SVD
    +關注

    關注

    0

    文章

    21

    瀏覽量

    12093
  • 電源優化器
    +關注

    關注

    0

    文章

    11

    瀏覽量

    5396
  • LoRa技術
    +關注

    關注

    3

    文章

    95

    瀏覽量

    16220
  • nlp
    nlp
    +關注

    關注

    1

    文章

    464

    瀏覽量

    21876

原文標題:大模型參數高效微調技術原理綜述 之 LoRA、AdaLoRA、QLoRA

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    其預訓練和微調,直到模型的部署和性能評估。以下是對這些技術綜述模型架構: LLMs通常采用深層的神經網絡架構,最常見的是Transf
    發表于 05-05 10:56

    大家是怎么壓榨CNN模型

    技術綜述】為了壓榨CNN模型,這幾年大家都干了什么
    發表于 05-29 14:49

    有限集模型預測控制策略綜述

    有限集模型預測控制的綜述
    發表于 11-20 11:27

    基于模型設計的HDL代碼自動生成技術綜述

    摘要:在調研近幾年基于模型設計的HDL代碼自動生成技術相關工具及工程應用情況的基礎上,從HDL代碼自動生成的技術角度分析了基于模型設計的應用需求及現狀,分析了基于
    發表于 06-08 09:29

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

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

    基于主題模型的Web服務聚類方法綜述

    基于主題模型的Web服務聚類方法綜述
    發表于 06-24 16:47 ?8次下載

    抖動按鍵技術及雙狄拉克模型綜述

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

    微調前給預訓練模型參數增加噪音提高效果的方法

    為了減輕上述問題,提出了NoisyTune方法,即,在finetune前加入給預訓練模型參數增加少量噪音,給原始模型增加一些擾動,從而提高預訓練語言模型在下游任務的效果,如下圖所示,
    的頭像 發表于 06-07 09:57 ?2157次閱讀

    有哪些省內存的大語言模型訓練/微調/推理方法?

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

    使用LoRA和Hugging Face高效訓練大語言模型

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

    iPhone都能微調模型了嘛

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

    GLoRA:一種廣義參數高效微調方法

    了卓越的能力。 ? 本文提出了 廣義LoRA (GLoRA),一種通用參數高效微調任務的先進方法。增強低秩適應(LoRA), GLoRA 采用 廣義提示模塊優化 預訓練模型權重并調整中
    的頭像 發表于 06-27 16:53 ?492次閱讀
    GLoRA:一種廣義<b class='flag-5'>參數</b><b class='flag-5'>高效</b>的<b class='flag-5'>微調</b>方法

    中軟國際參加首期百度智能云文心千帆大模型SFT微調能力實訓營

    的發展。 在AI 2.0時代,大模型與行業深度融合是技術發展的必然趨勢。由于大模型本身存在不掌握本地和實時數據、推理局限在常識范圍、本地部署成本高等制約,影響了大模型在千行百業的落地,
    的頭像 發表于 07-17 18:15 ?650次閱讀
    中軟國際參加首期百度智能云文心千帆大<b class='flag-5'>模型</b>SFT<b class='flag-5'>微調</b>能力實訓營

    一種新穎的大型語言模型知識更新微調范式

    我們使用LLAMA2-7B作為實驗的基礎模型。我們主要評估將舊知識更新為新知識的能力,因此模型將首先在舊知識上進行為期3個時期的微調。表1中F-Learning中設置的超參數λ分別取值
    發表于 12-01 15:10 ?205次閱讀
    一種新穎的大型語言<b class='flag-5'>模型</b>知識更新<b class='flag-5'>微調</b>范式

    四種微調模型的方法介紹

    微調(Full Fine-tuning):全微調是指對整個預訓練模型進行微調,包括所有的模型參數
    發表于 01-03 10:57 ?1.3w次閱讀
    四種<b class='flag-5'>微調</b>大<b class='flag-5'>模型</b>的方法介紹
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>