作者:Sebastian Raschka
機器之心編譯
編輯:趙陽
LoRA 微調(diào)方法,隨著大模型的出現(xiàn)而走紅。
進NLP群—>加入NLP交流群
最近幾個月,ChatGPT 等一系列大語言模型(LLM)相繼出現(xiàn),隨之而來的是算力緊缺日益嚴重。雖然人人都想打造專屬于自己的大模型,但是能負擔得起上億參數(shù)模型訓練的機構卻寥寥無幾。在快速發(fā)展的人工智能領域,以高效和有效的方式使用大型語言模型正變得越來越重要。LoRA(Low-Rank Adaption,低秩自適應) 作為微調(diào) LLMs 一種比較出圈的技術,其額外引入了可訓練的低秩分解矩陣,同時固定住預訓練權重,從而大大減少了下游任務的可訓練參數(shù)數(shù)量。本文中,來自 Lightning AI 首席人工智能教育家 Sebastian Raschka 將帶你了解如何以高效的方式用 LoRA 來微調(diào) LLM。下面是全文內(nèi)容。為什么要進行微調(diào)?預訓練大語言模型通常被稱為基礎模型,這樣稱呼的原因是:大語言模型在各種任務中表現(xiàn)良好,可以將它們用作對目標任務進行微調(diào)的基礎。正如 Sebastian Raschka 在上一篇博文《Understanding Parameter-Efficient Finetuning of Large Language Models: From Prefix Tuning to LLaMA-Adapters》中所討論的,微調(diào)能夠使模型適應目標域和目標任務。盡管如此,大模型在計算上的成本可能非常昂貴 —— 模型越大,更新其網(wǎng)絡層的成本就越高。如果不想將網(wǎng)絡中所有的層都進行更新,可以使用諸如前綴微調(diào)和適配器之類的高效調(diào)參方法。如今,有一種更流行的微調(diào)技術:Hu 等人提出的低秩自適應(LoRA)。什么是 LoRA?它是如何工作的?它與其他流行的微調(diào)方法相比如何?本文將回答所有這些問題。提高權重更新效率論文《 LoRA: Low-Rank Adaptation of Large Language Models》提出將權重變化 ΔW 分解為秩較低的表示。(LoRA 不會直接分解矩陣,而是通過反向傳播來學習分解的矩陣)。在仔細研究 LoRA 之前,我們先簡要解釋一下規(guī)則微調(diào)期間的訓練程序。首先是權重變化 ΔW。假設 W 表示給定神經(jīng)網(wǎng)絡層中的權重矩陣。然后,使用常規(guī)反向傳播,我們可以獲得權重更新 ΔW,它通常被計算為損失乘以學習率的負梯:然后,得到 ΔW 后,原始權重按如下公式更新:W'=W+ΔW。如下圖所示(為了簡單起見,省略了偏置矢量)。或者,我們可以保持權重更新矩陣分離,并按如下公式計算輸出:h=Wx+ΔWx:
其中 x 表示輸入,如下所示:
?當在神經(jīng)網(wǎng)絡中訓練全連接(即 dense)層時,如上所示,權重矩陣通常具有全秩,這意味著矩陣不具有任何線性相關(即冗余)的行或列。相比之下,與全秩相比,低秩意味著矩陣具有冗余的行或列。 因此,盡管預訓練模型的權重是滿秩矩陣,但根據(jù) Aghajanyan 等人的說法,LoRA 的作者指出預訓練的大型語言模型在適應新任務時具有較低的內(nèi)在維度。低內(nèi)在維度意味著數(shù)據(jù)可以由低維度空間有效地表示或近似,同時保留其大部分基本信息或結構。換句話說,這意味著可以將適應任務的新權重矩陣分解為低維(較?。┚仃嚕粫G失太多重要信息。例如,假設 ΔW 是 A×B 維權重矩陣的權重更新矩陣,這個權重更新矩陣可以分解為兩個較小的矩陣:ΔW=W_A W_B,其中 W_A 是 A×r 維矩陣,W_B 是 r×B 維矩陣。在這里,我們保持原始權重 W 凍結,并且只訓練新的矩陣 W_A 和 W_B。如下圖所示。選擇秩上圖中的 r 是超參數(shù),指定用于自適應的低秩矩陣的秩。r 越小,低秩矩陣越簡單,在自適應過程中需要學習的參數(shù)越少,訓練就更快,計算需求會相應的減少。然而,r 變小的弊端是,低秩矩陣捕獲任務特定信息的能力降低。這可能導致較低的自適應質(zhì)量,并且與較高的 r 相比,模型在新任務上可能表現(xiàn)不佳??傊?LoRA 中確定 r 的取值,需要在模型復雜性、自適應能力和擬合不足或擬合過度的風險之間進行權衡。因此,重要的是用不同的 r 值進行實驗,以找到正確的平衡,從而在新任務中滿足所需的性能。LoRA 實戰(zhàn)LoRA 的使用很直接,可以將其視為 LLM 中全連接層的前向傳遞修正版。偽代碼如下所示:
在上面的偽代碼中,alpha 是一個縮放因子,用于調(diào)整組合結果的大?。ㄔ寄P洼敵黾由系椭茸赃m應)。這平衡了預訓練模型的知識和新的任務特定適應 —— 默認情況下,alpha 通常設置為 1。還要注意,當 W_A 被初始化為小的隨機權重時,W_B 被初始化為 0,從而使得,這意味著需要從原始權重開始訓練。參數(shù)效率接下來說一說最棘手的問題:如果引入新的權重矩陣,參數(shù)如何才能有效?新的矩陣 W_A 和 W_B 可以非常小。例如,假設 A=100,B=500,那么 ΔW 的大小為 100×500=50000。如果將其分解為兩個較小的矩陣,一個 100×5 維矩陣 W_A 和一個 5×500 維矩陣 W_B。這兩個矩陣總共只有 5×100+5×500=3000 個參數(shù)。減少推理開銷在實踐中,如果在如上所示的訓練后保持原始權重 W 以及矩陣 W_A 和 W_B 處于分離狀態(tài),推理過程中就會額外產(chǎn)生效率損失,因為引入了額外的計算步驟。相反可以在訓練后通過 W’=W+W_A?W_B 更新權重,這類似于前面提到的 W’=W+ΔW。然而,保持權重矩陣 W_A 和 W_B 分離也可能有些優(yōu)勢。例如,假設希望保留預訓練的模型作為各種客戶的基礎模型,并且希望從基礎模型開始為每個客戶創(chuàng)建一個微調(diào)的 LLM。在這種情況下,就不需要為每個客戶存儲完整的權重矩陣 W’。不然存儲模型的所有權重 W’=W+W_A W_B 對于 LLM 來說可能非常大,因為 LLM 通常具有數(shù)十億到數(shù)萬億的權重參數(shù)。因此,可以保留原始模型 W,只需要存儲新的輕量級矩陣 W_A 和 W_B。用具體的數(shù)字來說明的話,一個完整的 7B LLaMA checkpoint 需要 23 GB 的存儲容量,而選擇 r=8 的秩,則 LoRA 權重可以小到 8 MB。實踐效果LoRA 在實踐中有多好,與完全微調(diào)和其他參數(shù)有效方法相比如何?根據(jù) LoRA 的論文,在幾個特定任務的基準測試中,使用 LoRA 的模型的建模性能略好于使用 Adapters、prompt tuning 或 prefix tuning 的模型。通常,LoRA 的性能甚至比微調(diào)所有層更好,如下面 LoRA 論文的注釋表所示。值得注意的是,LoRA 與其他微調(diào)方法正交,這意味著它也可以與 Adapters 或 prefix tuning 相結合。LoRA & LLaMA現(xiàn)在,讓我們使用 LoRA 來微調(diào) Meta 提出的 LLaMA 模型。除了用于訓練和運行 LLaMA 本身的代碼(使用原始的 Meta-LLaMA 權重)外,還包含用于使用 LLaMA Adapter 和 LoRA 微調(diào) LLaMA 的代碼。作者建議使用以下操作方法文件:
-
下載預訓練的權重:https://github.com/Lightning-AI/lit-llama/blob/main/howto/download_weights.md
-
使用 LoRA 進行微調(diào):https://github.com/Lightning-AI/lit-llama/blob/main/howto/finetune_lora.md
-
使用適配器進行微調(diào):https://github.com/Lightning-AI/lit-llama/blob/main/howto/finetune_adapter.md(可選,用于比較研究)
下一節(jié)將比較 7B LLaMA 基礎模型與使用 LoRA 和 LLaMA Adapter 微調(diào)的 7B LLaMA 基礎模型。(請注意,需要具有至少 24 GB RAM 的 GPU)。計算性能基準本節(jié)中,作者將比較 LLaMA 7B 基礎模型與使用 LoRA 和 LLaMA Adapter 微調(diào)的基礎模型的計算性能。微調(diào)數(shù)據(jù)集是 Alpaca 52k 指令數(shù)據(jù)集,其結構如下:
數(shù)據(jù)集是按照 Self-Instruct 論文中描述的方法生成的,由 49759 個訓練樣本和 2000 個驗證樣本組成。Self-Instruct 的流程可總結為 4 個步驟:
-
種子任務池,包含一組人工編寫的指令(本例中為 175 條)和樣本指令;
-
使用預訓練的 LLM(如 GPT-3)來確定任務類別;
-
給定新指令,讓預訓練的 LLM 生成響應結果;
-
在將響應結果添加到任務池之前,先收集、剪枝和篩選響應結果。
-
語言模型
+關注
關注
0文章
524瀏覽量
10277 -
LoRa
+關注
關注
349文章
1689瀏覽量
231962 -
ChatGPT
+關注
關注
29文章
1561瀏覽量
7673
原文標題:調(diào)教LLaMA類模型沒那么難,LoRA將模型微調(diào)縮減到幾小時
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論