LoRA 的核心觀點由 Hu 等人在 2021 年提出,其重點在於微調過程中的權重更新傾向於低秩 — 這表示這些變化可以透過兩個更小矩陣的乘積來良好近似。傳統上會更新權重矩陣 W(例如 4096 x 4096 = 1600 萬個參數),而 LoRA 則完全凍結 W,並加入兩個小矩陣 A(4096 x r)和 B(r x 4096),其中 r(秩)通常為 8、16 或 64。有效的更新為 BA,其形狀與 W 相同,但僅由 2 x 4096 x r 個參數定義。當 r 為 16 時,這約為 131,000 個可訓練參數,而非 1600 萬個 — 單一層的參數量減少達 120 倍。若將此應用於模型的所有注意力層,總可訓練參數數量將從十億級降至數百萬級,這就是為何 LoRA 適配器檔案通常僅為 10-50 MB,遠小於多 GB 的基底模型。
實際應用中,您會選擇套用 LoRA 的層(通常為注意力投影矩陣:Q、K、V 和輸出投影),並設定秩 r 和一個稱為 alpha 的縮放因子。alpha/r 比率控制適配器相對於凍結基底權重的影響力。更高的秩意味著更高的表達能力,但也需要更多參數和記憶體;實際應用中,秩 16 或 32 已涵蓋大多數使用情境。Dettmers 等人在 2023 年提出的 QLoRA 更進一步提升效率,透過將 LoRA 與基底模型的 4 位量化結合:凍結權重以 NF4(一種針對常態分佈權重優化的 4 位格式)儲存,而 LoRA 適配器則以 bf16 訓練。這讓您能在單一 48GB GPU 上微調 700 億參數模型 — 否則這需要多 GPU 設備與數百 GB 的 VRAM。
LoRA 生態系統已快速成熟。HuggingFace 的 PEFT 套件是標準實現,而 Axolotl、LLaMA-Factory 和 Unsloth 等工具則透過更高階的介面封裝它,處理資料格式、預設超參數和訓練迴圈。其中最強大的實用功能是適配器組合性:由於 LoRA 適配器是加法性的,您可以為不同任務訓練獨立的適配器,並在推論時直接合併或切換,而無需重新載入基底模型。某些服務框架如 LoRAX 和 vLLM 利用此特性,從單一基底模型記憶體中同時服務數百個不同 LoRA 適配器,將每個請求路由至適當的適配器。這使得提供每位客戶微調模型成為可能,而無需部署多個模型實例的成本。
LoRA 並非沒有代價。低秩限制意味著它無法學習任意的權重變化 — 如果任務需要大幅重構模型的內部表示,完整微調將優於 LoRA。實際上,這對與基底模型預訓練任務差異極大的任務,或當您試圖教導模型大量新事實知識(而非調整風格或格式)時影響最為顯著。另外,常見的錯誤是設定秩過低,導致困惑為何適配器似乎無法學習,或設定過高,導致適配器在小數據集上過度擬合。秩既是容量控制旋鈕,也是正則化旋鈕,與學習率和訓練步數一同調整對取得良好結果至關重要。