?? CSDN 葉庭云:https://yetingyun.blog.csdn.net/
大語言模型在眾多應用領域?qū)崿F(xiàn)了突破性的進步,顯著提升了各種任務的完成度。然而,其龐大的規(guī)模也帶來了高昂的計算成本。這些模型往往包含數(shù)十億甚至上千億參數(shù),需要巨大的計算資源來運行。特別是,當需要為特定的下游任務定制模型時,尤其是在計算能力有限的硬件平臺上,這一挑戰(zhàn)尤為突出。
為了提升 LLM 在未見用戶數(shù)據(jù)集和任務上的性能,微調(diào)仍是關鍵。隨著模型規(guī)模的不斷擴大,如從 GPT-2 的 1.5B 參數(shù)增長到 GPT-3 的 175B 參數(shù),標準的全參數(shù)微調(diào)范式需要成千上萬的 GPUs 并行工作,這在效率和可持續(xù)性方面表現(xiàn)不佳。此外,它可能損害模型的泛化能力,以及導致災難性遺忘問題。為解決這一問題,參數(shù)高效微調(diào)(PEFT) 算法應運而生。該算法通過調(diào)整少量參數(shù),在下游任務上實現(xiàn)了優(yōu)于全面微調(diào)的性能。
參數(shù)高效微調(diào)(PEFT)是一種實用的解決方案,它涉及選擇性地調(diào)整模型中的少數(shù)參數(shù),而保持其他參數(shù)不變。調(diào)整大語言模型以高效地適應各種下游任務。PEFT 通過最小化新增參數(shù)數(shù)量或降低計算資源需求來調(diào)整預訓練大語言模型,這在計算資源受限的情況下尤為重要。在處理參數(shù)數(shù)量龐大的大語言模型時,這種方法尤為有價值。因為從頭開始微調(diào)這些模型不僅計算代價高昂,而且資源密集,這給支持系統(tǒng)平臺設計帶來了相當大的挑戰(zhàn)。
我們將 PEFT 算法按照其操作方式分為加法、選擇性、重參數(shù)化和混合微調(diào)四類。常見的加法微調(diào)算法主要有三種:(1)適配器;(2)軟提示;(3)其他。這些算法在附加的可調(diào)模塊或參數(shù)上存在差異。相比之下,選擇性微調(diào)無需額外參數(shù),它僅從骨干模型中選擇部分參數(shù),使這些參數(shù)在下游任務微調(diào)過程中可調(diào),而保持大多數(shù)參數(shù)不變。我們根據(jù)所選參數(shù)的分組將選擇性微調(diào)分為:(1)非結構化遮罩;(2)結構化遮罩。重參數(shù)化則是指在兩種等效形式之間轉換模型參數(shù)。具體而言,重參數(shù)化微調(diào)在訓練過程中引入額外的低秩可訓練參數(shù),并在推理時將這些參數(shù)與原始模型集成。這種方法主要分為兩種策略:(1)低秩分解;(2)LoRA 衍生物?;旌衔⒄{(diào)則探索了不同 PEFT 方法的設計空間,并結合了它們的優(yōu)點。
自然語言處理目前存在一個重要的范式:大規(guī)模預訓練一般領域數(shù)據(jù),并針對特定任務或領域進行微調(diào)(Fine-tuning)。然而,隨著預訓練語言模型規(guī)模的不斷擴大,該范式面臨以下問題:
-
在微調(diào)大語言模型時,由于訓練成本高昂,不太可能對所有模型參數(shù)進行重新訓練。
-
以往的方法都存在不同程度的性能問題。例如,adapter 增加了模型的層數(shù),從而引入了額外的推理延遲;而 Prefix-Tuning 的訓練難度較大,效果也不如直接進行微調(diào)。
模型通常過度參數(shù)化,導致冗余,其內(nèi)在維度相對較小,主要依賴這一低內(nèi)在維度進行任務適配?;谀P驮谌蝿者m配過程中權重變化具有低秩特性的假設,研究者提出了低秩自適應(LoRA)方法。LoRA 通過優(yōu)化適應過程中密集層變化的秩分解矩陣,間接訓練神經(jīng)網(wǎng)絡中的部分密集層,同時保持預訓練權重的穩(wěn)定。實現(xiàn)上,LoRA 簡潔明了地凍結預訓練語言模型的矩陣參數(shù),并選用 A 和 B 矩陣進行替代。在下游任務中,僅更新 A 和 B 矩陣,如圖所示。
結合圖片來看,LoRA 的實現(xiàn)流程如下:
-
在原始預訓練語言模型(PLM)的基礎上,我們引入了一個旁路,通過降維再升維的操作,來模擬所謂的內(nèi)在秩。
-
在訓練過程中,我們將固定預訓練語言模型(PLM)的參數(shù),僅對降維矩陣 A 和升維矩陣 B 進行訓練。
-
模型的輸入輸出維度保持不變,輸出時,將 BA 與 PLM 的參數(shù)進行疊加。
-
使用隨機高斯分布對矩陣 A 進行初始化,同時將矩陣 B 初始化為 0 矩陣,以確保訓練開始時,旁路矩陣仍維持為 0 矩陣狀態(tài)。
具體實現(xiàn):接下來我們從公式上解釋 LoRA 的實現(xiàn)。假設要在下游任務微調(diào)一個預訓練語言模型(如 GPT-3),則需要更新預訓練模型參數(shù),公式表示如下:
h = W 0 x + Δ W x = W 0 x + B A x h=W_{0} x+\Delta W x=W_{0} x+B A x h=W0?x+ΔWx=W0?x+BAx
W0 是預訓練模型的初始化參數(shù),而 ΔW 是需要更新的參數(shù)。在全參數(shù)微調(diào)的情況下,參數(shù)量等同于 W0 的參數(shù)量。例如,對于 GPT3,ΔW 的參數(shù)量約為 175B。由此可見,全參數(shù)微調(diào)大型語言模型對于資源有限的環(huán)境來說是不切實際的。鑒于前人的研究揭示預訓練語言模型具有較低的 “內(nèi)部維度”,這些模型在任務適配過程中即便被隨機投影到較小的子空間,也能保持有效的學習。因此,LoRA 引入了一個小參數(shù)模塊,專門用于學習改變量 ΔW。
在訓練過程中,W0 保持不變,而 A 和 B 包含訓練參數(shù),會發(fā)生變化。在推理階段,只需將變化量融入原模型,即可實現(xiàn)無延遲操作。若要切換任務,只需在切換過程中減去 BA,并替換為用其他任務訓練好的 B’A’ 即可。
總的來說,LoRA 是一種簡單而有效的輕量級微調(diào)方案,它基于大語言模型的內(nèi)在低秩特性,通過增加旁路矩陣來模擬全參數(shù)微調(diào)。目前,LoRA 技術已廣泛應用于大語言模型的微調(diào),如 Alpaca 和 Stable Diffusion + LoRA,并能與其他高效的參數(shù)微調(diào)方法,如最先進的參數(shù)高效微調(diào)(PEFT)有效結合。
“r” 是 LoRA 中至關重要的參數(shù),它決定了 LoRA 矩陣的秩或維度,對模型的復雜度和容量產(chǎn)生直接影響。當 “r” 值較高時,模型的表達能力增強,但可能引發(fā)過擬合問題;相反,降低 “r” 值可以減少過擬合,但相應地,模型的表達能力會有所減弱。在我們保持所有層都啟用 LoRA 的前提下,將 “r” 值從 8 提升至 16,以探究其對性能的具體影響。一般來說,微調(diào) LLM 時選擇的 alpha 值是秩的兩倍。調(diào)整 “alpha” 有助于在擬合數(shù)據(jù)和通過正則化防止過擬合之間保持平衡。
QLoRA,即量化 LoRA 的簡稱,由 Tim Dettmers 等人提出。它是一種在微調(diào)過程中有效降低內(nèi)存占用的技術。在反向傳播階段,QLoRA 將預訓練的權重量化為 4-bit,并采用分頁優(yōu)化器來管理內(nèi)存峰值。QLoRA 會增加運行時間成本(因為量化和反量化增加了額外步驟),但它是一種很好的節(jié)省內(nèi)存的方法。此外,AdamW 優(yōu)化器是 LLM 訓練的常用選擇。此外,雖然學習率調(diào)度器可能有益,但 AdamW 和 SGD 優(yōu)化器之間幾乎沒有區(qū)別。
LongLoRA:增強大語言模型(LLM)的長上下文處理能力,而無需大量算力資源。LongLoRA 通過使用一種簡化的注意力形式和 LoRA 方法來高效擴展上下文長度,成功在 LLaMA2 7B/13B/70B 模型上將上下文長度擴展至 32K、64K、100K,幾乎不增加算力消耗。此外,研究還創(chuàng)建了 LongQA 數(shù)據(jù)集來進一步改進模型的輸出能力,并證明了通過增加訓練信息量可以獲得更好的結果。LongLoRA 不僅兼容現(xiàn)有技術,而且在處理長文本和長對話中尋找特定主題方面表現(xiàn)出色,為大型語言模型領域帶來了創(chuàng)新的微調(diào)方法。
注意:LoRA 經(jīng)常與現(xiàn)代的 LLMs 結合使用。盡管如此,眾多 LoRA 的變體已經(jīng)涌現(xiàn)(LoRA+、VeRA、LoRA-FA、LoRa-drop、AdaLoRA、DoRA、Delta-LoRA),它們以不同方式偏離了原始方法,旨在提升速度、性能或兩者兼具。
-
LoRA+ 通過為兩個矩陣設置不同學習率來提高訓練效率;
-
VeRA 減少參數(shù)數(shù)量,通過訓練額外的向量而非直接訓練矩陣 A 和 B;
-
LoRA-FA 只訓練矩陣 B;
-
LoRA-drop 決定哪些層值得通過 LoRA 增強;
-
AdaLoRA 動態(tài)調(diào)整矩陣的秩;
-
DoRA分別訓練大小和方向;
-
Delta-LoRA 通過 A 和 B 的梯度更新預訓練矩陣 W。
這些方法展示了在不犧牲性能的情況下,如何通過創(chuàng)新思路減少訓練大語言模型的計算需求。
AdapterFusion 算法,用以實現(xiàn)多個 Adapter 模塊間的最大化任務遷移。通過將適配器的訓練劃分為知識提取和知識組合兩個階段,成功解決了災難性遺忘、任務間干擾以及訓練不穩(wěn)定的問題。然而,Adapter 模塊的引入增加了模型的整體參數(shù)量,進而影響了模型在推理時的性能。AdapterFusion 在大多數(shù)情況下性能優(yōu)于全模型微調(diào)和 Adapter。
前綴微調(diào)(Prefix-Tunning)是一種用于生成任務的輕量級微調(diào)方法。它通過向輸入添加一個特定的、連續(xù)的任務向量序列,即 “前綴”,來實現(xiàn)這一點。這些前綴在圖中以紅色塊表示。與提示(Prompt)不同,前綴完全由自由參數(shù)組成,不與真實的 token 相對應。與傳統(tǒng)的微調(diào)相比,前綴微調(diào)僅針對前綴進行優(yōu)化。因此,我們只需存儲一個大型 Transformer 模型和已知任務特定前綴的副本,這使得為每個額外任務產(chǎn)生的開銷非常小。
Prompt-tuning 為每個任務定義了獨特的 Prompt,并將其與數(shù)據(jù)拼接作為輸入。在此過程中,預訓練模型被凍結以進行訓練。值得注意的是,隨著模型規(guī)模的擴大,其效果逐漸提升,并最終與微調(diào)效果相當。此外,Prompt-tuning 還引入了 Prompt-ensembling 的概念,即在同一批次中同時訓練同一任務的不同 Prompt。這種方法相當于訓練了多個不同的「模型,但相較于模型集成,其成本大幅降低。
P-Tuning 方法旨在解決大語言模型中 Prompt 構造方式對下游任務效果的重大影響問題。通過引入連續(xù)可微的 virtual token 替代傳統(tǒng)的離散 token,實現(xiàn)了模板的自動構建,使得 GPT 在 SuperGLUE 上的成績首次超過了 BERT 模型,改變了 GPT 不擅長 NLU 的觀點。P-Tuning 將 Prompt 轉換為可學習的 Embedding 層,通過 MLP+LSTM 處理,提高了模型的適應性和性能。P-Tuning v2 進一步改進,通過在每一層都加入 Prompts tokens 作為輸入,不僅增加了可學習的參數(shù),還提高了模型預測的直接影響,顯示出跨規(guī)模和 NLU 任務的通用性。此外,P-Tuning v2 還引入了多任務學習和回歸傳統(tǒng)分類標簽范式,提高了訓練效率和模型的通用性。
??? 相關鏈接:
-
《大型模型的參數(shù)高效微調(diào)》全面綜述
-
LongLoRA:超長上下文,大語言模型高效微調(diào)方法
-
騰訊技術工程 - 大模型微調(diào)方法總結
-
大規(guī)模語言模型高效參數(shù)微調(diào):P-Tuning 微調(diào)系列
-
LoRA 和 QLoRA 微調(diào)語言大模型:數(shù)百次實驗后的見解
-
不是大模型全局微調(diào)不起,只是 LoRA 更有性價比,教程已經(jīng)準備好了文章來源:http://www.zghlxwxcb.cn/news/detail-850918.html
-
LoRA 家族概述文章來源地址http://www.zghlxwxcb.cn/news/detail-850918.html
到了這里,關于了解大語言模型的參數(shù)高效微調(diào)(Parameter-Effcient Fine-Tuning)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!