論文 · arXiv 2106.09685
LoRA: Large Language Models 的低秩適應
LoRA: Low-Rank Adaptation of Large Language Models
三句話總結
- 🎯 對 GPT-3 175B 等超大型語言模型進行全量微調,每個下游任務都需要重新訓練並儲存數百億個參數,造成難以負荷的儲存空間、VRAM 與部署瓶頸。
- 🔧 凍結預訓練權重矩陣,並將可訓練的低秩分解矩陣()注入 Transformer 密集層,將乘積依 縮放,且可在部署時直接合併而無額外延遲。
- 📈 在 GPT-3 175B 上,LoRA 將可訓練參數減少了 10,000 倍,VRAM 需求降低 3 倍(從 1.2TB 降至 350GB),同時在 GLUE、WikiSQL 和 SAMSum 上的表現達到甚至超越全量微調。
摘要
自然語言處理的一個重要範式,是對一般領域資料進行大規模預訓練,隨後針對特定任務或領域進行適應。隨著預訓練模型規模不斷擴大,重新訓練所有模型參數的全量微調(full fine-tuning)變得越來越不可行。以 GPT-3 175B 為例——為每個微調模型部署具有 175B 參數的獨立實例,成本高昂到令人卻步。我們提出了低秩適應(Low-Rank Adaptation,簡稱 LoRA),它凍結預訓練模型權重,並將可訓練的秩分解矩陣注入 Transformer 架構的每一層中,從而大幅減少下游任務的可訓練參數數量。相較於使用 Adam 微調的 GPT-3 175B,LoRA 能將可訓練參數數量減少 10,000 倍,並將 GPU 記憶體需求降低 3 倍。在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上,LoRA 的模型品質與全量微調相當甚至更好,同時擁有更少的可訓練參數、更高的訓練吞吐量,且與 adapter 不同的是,它不會增加額外的推論延遲。我們也對語言模型適應中的秩虧(rank-deficiency)現象進行了實證研究,揭示了 LoRA 的有效性機制。我們釋出了一個便於將 LoRA 與 PyTorch 模型整合的套件,並在 https://github.com/microsoft/LoRA 提供了 RoBERTa、DeBERTa 和 GPT-2 的實作與模型權重檔(checkpoints)。
英文原文摘要
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.
論文解讀
問題與動機
將大規模預訓練語言模型適應至多元的下游應用時,傳統上依賴全量微調(full fine-tuning,即將所有參數 更新為 )。對於像 GPT-3 175B 這樣的龐大架構,為每個任務儲存並服務獨立的 175B 參數模型副本,在儲存空間、GPU 記憶體與 I/O 開銷方面都極為昂貴。先前的參數高效微調(parameter-efficient tuning)技術存在明顯缺點:
- 串聯式 Adapter 層(Series Adapter Layers):將瓶頸模組循序插入 Transformer 區塊中。由於這些循序操作無法平行化,它們會帶來顯著的推論延遲——在單 GPU、小批次(small-batch)的線上服務情境下,前向傳播速度最多會減慢 。
- Prefix / Prompt Tuning:最佳化附加在層激活值前面的連續 prompt 向量。這些方法難以最佳化,且表現不會隨 prompt 長度單調擴展,還會消耗本可用於上下文的序列長度預算。
LoRA 基於以下假設解決了這個效率與品質的權衡問題:在下游遷移過程中,權重適應更新量 具有較低的內在秩(intrinsic rank)。
核心概念
- 低秩重參數化(Low-Rank Reparametrization):對於凍結的密集矩陣 ,將適應更新量參數化為 ,其中 、,且秩 。
- 零額外推論延遲:由於重參數化是線性的,在部署時可將訓練好的低秩矩陣直接合併至預訓練權重中(),相較於微調,推論架構完全相同且無任何延遲懲罰。
- 共享基底模型與熱插拔(Hot-Swapping):龐大的凍結模型常駐於 GPU 記憶體中;切換任務只需替換低秩矩陣 與 ,將儲存需求從數百 GB 大幅縮減至數十 MB。
- 選擇性注意力機制適應:僅將秩分解應用於自注意力機制的投影矩陣(特別是 query 與 value ),便能在前饋網路(feed-forward MLP)層保持凍結的情況下達到具競爭力的表現。
方法細節
對於產生 的密集投影層,LoRA 將運算修改為:
關鍵實作細節:
- 初始化: 使用隨機高斯分佈 初始化,而 則初始化為零,確保在訓練開始時 。
- 縮放因子(Scaling Factor):更新量 會乘以 進行縮放,其中 是一個常數超參數。使用 Adam 最佳化時,將 設為初始秩 ,可以在嘗試不同的 值時免於重新調整學習率。
- 部署合併:在生產環境中,適應後的權重矩陣 會明確具體化為 。切換任務時,可透過相減恢復 (),並與新的 adapter 權重合併()。
- 目標層:雖然可應用於任何密集層,但實驗主要著重於 Transformer 的注意力投影矩陣()。將 的 LoRA 應用於 與 可獲得最佳的下游效率。
實驗結果
- GPT-3 175B:LoRA 將可訓練參數從 175,255.8M 減少到 4.7M( 或 )或 37.7M(),檢查點大小從 350GB 降至 35MB(減少 10,000 倍),訓練 VRAM 從 1.2TB 降至 350GB。訓練吞吐量提升了 (每張 V100 GPU 從 32.5 提升至 43.1 tokens/s)。
- 下游準確度(GPT-3):
- WikiSQL 邏輯形式驗證準確度:全量微調達到 ;LoRA(37.7M)達到 。
- MultiNLI matched 驗證準確度:全量微調達到 ;LoRA(4.7M)達到 。
- SAMSum 對話摘要:全量微調得分為 52.0 / 28.0 / 44.5 ROUGE-1/2/L;LoRA(4.7M)達到 53.8 / 29.8 / 45.9。
- RoBERTa 與 DeBERTa(GLUE 基準測試):在 RoBERTa Large 上,LoRA 僅用 0.8M 參數便能匹敵全量微調的 355.0M 參數(平均分數 對比 )。在 DeBERTa XXL(1.5B)上,LoRA 以 4.7M 參數在 GLUE 取得 的平均分,高於全量微調(1,500.0M 參數)的 。
- 內在秩分析:子空間相似度分析顯示, 與 的 前幾個奇異方向高度重疊(維度 1 的正規化相似度 )。此外, 會放大 中存在但未被高度強調的方向,在 時放大因子 。
限制與開放問題
- 多任務批次處理(Multi-Task Batching):當低秩權重 合併至 以消除推論延遲後,在單次前向傳播中同時對多個任務的輸入進行批次處理將變得不直覺。
- 啟發式層選擇:目前的做法依賴經驗法則(調整 與 ),缺乏一套原則性的選擇架構來決定應該調整注意力層與 MLP 層中的哪些矩陣。
- 極端領域轉移(Extreme Domain Shifts):對於與預訓練分佈差異極大的下游任務(例如將英文 LLM 適應至截然不同的目標語言),低秩適應相較於更高秩或全量微調可能會顯得力不從心。
關鍵術語
- Low-Rank Adaptation (LoRA) (低秩適應)
- 一種參數高效微調方法,凍結基底模型權重,並與密集層並行訓練低秩分解矩陣。
- Intrinsic Rank (內在秩)
- 在特定任務遷移過程中,捕捉有意義的參數適應所需的低有效維度或奇異向量數量。
- Adapter Layers (Adapter 層)
- 循序插入 Transformer 區塊中的外部瓶頸模組,會引入無法平行化的循序運算與推論延遲。
- Prefix Tuning
- 一種適應策略,將可訓練的連續向量附加至輸入 token 或層的隱藏狀態前方,會減少可用的上下文序列長度。
- Weight Folding / Weight Merging (權重合併)
- 在推論前將低秩矩陣 直接算術相加至預訓練權重矩陣 中,以消除運行時開銷。
- Grassmann Distance Subspace Similarity (格拉斯曼距離子空間相似度)
- 一種度量指標 ,用於測量適應更新量的正交奇異向量矩陣之間行空間(column spans)的重疊程度。
- Feature Amplification Factor (特徵放大因子)
- 的 Frobenius 範數與 投影至 奇異子空間之範數的比率,用於衡量特定任務方向被強化的程度。
常見問題
為什麼 LoRA 相較於 adapter 不會引入額外的推論延遲?
因為 LoRA 是線性的(),在線上服務前可以明確計算低秩乘積 並加回 ()。因此推論時執行的是標準矩陣乘法,沒有在 adapter 架構中造成延遲的循序瓶頸層。
LoRA 應該應用於 Transformer 的哪些權重矩陣?
在 GPT-3 上的實驗顯示,在固定參數預算下,同時適應 query()與 value()投影權重能獲得最佳表現。以較小的秩(例如 )適應多個注意力矩陣,其效果優於將所有參數配給單一矩陣類型並使用較大的秩。
適應大型語言模型時,多大的秩 $r$ 就足夠了?
對於下游任務而言,非常小的秩(如 、 或 )通常就已足夠。子空間相似度分析表明,以較小秩學到的前幾名奇異向量與較大秩(如 )學到的高度重疊,而較大秩多數只是捕捉到了隨機的最佳化雜訊。
LoRA 如何初始化其低秩矩陣?
矩陣 使用隨機高斯分佈初始化,而矩陣 則初始化為零。這確保了在訓練開始時 ,使模型預訓練的前向傳播完全保持不變。
本頁解讀由 AI 根據論文生成,可能有錯誤;細節請以原文為準。