目錄
前言
以下是我的理解,希望能拋磚引玉,如果有錯誤也請不吝指正。
系列文傳送門
[LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (1) – Transformer 介紹 [LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (2) – 預訓練語言模型的新範式 [LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (3) – PEFT 與 LoRA [LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (4) – LLM 開源與在地化之路
輕量化微調(Parameters-Efficient Fine-Tuning)
漸漸的,全參數微調(Full Parameters Fine-Tuning)已經不是普通公司吃得消的技術,
因此針對低資源情境也有一些研究出現,也就是輕量化微調(Parameters-Efficient Fine-Tuning),其中效果最優越的當屬附加器(Adapter)。
透過在預訓練模型的各層中插入附加器,可以達到快速且高效的調整權重與偏置 (bias) 的效果,最後再融合調整好的參數回該層就可完成整個微調流程。
低秩適應(Low-Rank Adaptation, LoRA)
想像一下 LoRA 這個巧妙的方法已經幫你省多少 resource 了,
在 GPT-2 跟 GPT-3 上 fine-tune 的表現居然還可以比傳統的全參數微調還好,
令人不由得大嘆一聲,微軟實屬🐮🍺!
Hu 等人(2022)提出了低秩適應(Low-Rank Adaptation, LoRA) [1] 如上圖,這是一種透過凍結 Transformer 的原始權重並在各層中加入可訓練的低秩分解矩陣以達到減少訓練參數的技術。
上圖中,左邊的 Pretrain Weights
代表原始預訓練模型的權重,它是一個 d×d
維的矩陣,右邊的黃色區塊則是由兩個低秩矩陣組成,下面的 A 矩陣的維度是 d×r
,而上面的 B 矩陣則是 r×d
。
在微調之前,A 會被初始化成隨機的小數值,而 B 矩陣為一個數值全 0 的矩陣,在微調的過程中,模型會學習並慢慢更新 A 與 B 中的數值,使得兩矩陣的乘積逐漸逼近原始的模型權重。
這種技術相較於傳統的全參數微調來說,可以極大幅的減少訓練參數至一萬倍以及大幅減少 GPU 的 VRAM 使用量至三倍。此外,在 GPT-2 [32] 與 GPT-3 [31] 的模型中,他們方法的效果甚至超越了全參數微調。
NOTE: LoRA 方法不僅適用於 LLM,在生圖用的 Stable Diffusion 領域,LoRA 幾乎也是壓倒性的存在。
量化低秩適應 (Quantization Low-Rank Adaptation, QLoRA)
如果是有限資源但又想要 tune LLM 的朋友,可以試試看 QLoRA,我用 4bit 精度的 QLoRA 做 instruction tuning 只需要 6 ~ 8GB 的 VRAM,相當推薦!
Dettmers 等人 (2023) 基於 Hu 等人的 LoRA [1] 方法進一步提出了量化低秩適應 (Quantization Low-Rank Adaptation, QLoRA)[4] — 這是一種更專注在節省 VRAM 但卻不降低效能的進階技術。
為了能夠在將模型量化成 4-bit 的情況下凍結參數且使用 LoRA [1] 微調,他們做了諸如 4-bit NormalFloat(NF4)、雙重量化(Double Quantization)與分頁優化器(Paged Optimizer)的創新。
此外他們也證實了對於特定任務而言,想要獲得優質模型的最重要因素是資料集的品質而非大小。
參考資料
- LoRA: Low-Rank Adaptation of Large Language Models
- Language Models are Unsupervised Multitask Learners
- [2005.14165] Language Models are Few-Shot Learners
- [2305.14314] QLoRA: Efficient Finetuning of Quantized LLMs
- 我碩論做的文獻回顧
- [推薦工具] 讓程式碼截圖變的美美的吧!VScode CodeSnap 與 3 種同功能線上工具介紹 - 2025-01-05
- [AI 繪圖初級教學] 用 X/Y/Z Plot 比較 Stable Diffusion 的 prompt 與 LoRA 效果 - 2024-12-27
- [AI 繪圖中級篇教學] Stable Diffusion WebUI WD14 Tagger 介紹 - 2024-12-26