JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

參數高效微調:LoRA、QLoRA 與適配器

為什麼你幾乎從不需要更新每一個權重——以及幾個小小的可訓練零件,如何幫你走完大半的路。

搬動每一個權重的代價

完整微調會更新一個模型的「所有」參數。以一個 70 億參數的模型來說,這代表你得同時放著權重、它們的梯度、以及最佳化器的滾動統計量——往往超過 80 GB 的GPU 記憶體,是模型本身大小的好幾倍。這讓完整微調對多數人遙不可及,也讓每一次實驗都又慢又貴。

參數高效微調(parameter-efficient fine-tuning,PEFT)用一個賭注繞過整個問題:把那個巨大的基礎模型「凍結」起來、只訓練少量的新參數,就能抓住微調所需的大部分東西。從實證上看,這個賭注成功的次數高得驚人。

\text{trainable params}:\quad d\,k \;\longrightarrow\; r\,(d+k),\qquad r \ll \min(d,k)

全量微调要训练矩阵的全部 d×k 个权重;PEFT 只训练 r(d+k) 个,当秩 r 很小时这只是极小的一部分。

LoRA:主力幹將

LoRA(低秩適配,Low-Rank Adaptation)是多數人講 PEFT 時心裡想的那個方法。它的洞見是:微調對一個大權重矩陣造成的「改變量」通常是低秩的——可以用兩個瘦長矩陣相乘很好地逼近。所以 LoRA 不去動那個凍結的權重,而是在它旁邊學那兩個小矩陣,再把它們的乘積加回去。最後可訓練的參數通常不到 1%。

W' = W_0 + \Delta W = W_0 + \frac{\alpha}{r}\,B A,\quad B\in\mathbb{R}^{d\times r},\; A\in\mathbb{R}^{r\times k},\; r\ll\min(d,k)

LoRA 冻结基础矩阵 W₀,把它的更新学成低秩乘积 BA,并用 α/r 缩放。

# A typical LoRA setup
rank  r        = 16                 # width of the low-rank update
lora_alpha     = 32                 # scaling applied to the update
target_modules = [q_proj, k_proj,   # which weight matrices get an
                  v_proj, o_proj]   #   adapter (often the attention ones)
dropout        = 0.05
# Base weights stay frozen; only the small r-sized matrices train.
真正要緊的幾個旋鈕:秩(rank)、alpha(縮放)、以及要套用到哪些矩陣。

QLoRA:用一張顯示卡微調大模型

QLoRA把省記憶體推得更遠,做法是把 LoRA 與量化(quantization)結合:它以 4 位元精度載入凍結的基礎模型,再在上頭以正常精度訓練 LoRA 適配器。基礎模型幾乎不佔記憶體,因為它被量化了、而且永遠不更新;同時可訓練的適配器仍保持精準。這正是為什麼有人能在單張消費級或中等雲端 GPU 上,微調 13B 到 70B 的模型。

適配器與軟提示

LoRA 只是一個更大家族裡的一支。適配器模組(adapter modules)在凍結的 transformer 層之間插入小小的瓶頸層,只訓練那些層——這是個較早的點子,LoRA 在某種程度上把它精簡了。軟提示微調(soft prompt tuning)更輕:它凍結整個網路,只學少數幾個「連續」的嵌入向量,附加在輸入前面——一種活在向量空間、而非文字裡的可訓練提示。

适配器模块在冻结的 Transformer 块中插入小的可训练瓶颈层,而注意力和前馈网络的权重保持不变。

Transformer 块示意图:层归一化、注意力、残差连接和前馈网络。

這些方法用一點點準確度,換來更少的可訓練參數與更小的成品檔案。實務上今天由 LoRA 與 QLoRA 主導,但認識整個家族能幫你看出那個共通的點子:「凍結那個巨人,訓練一個小東西」。

完整 vs PEFT:各自的勝場

  1. 預設就用 PEFT(LoRA/QLoRA):便宜、迭代快、容易同時托管多個變體,而且在大多數行為與風格任務上能追平完整微調。
  2. 當你要教一項龐大的「新能力」、或吸收大量新領域知識,而且你有足夠的硬體與資料來支撐時,再考慮完整微調
  3. 無論選哪個,都要也和「原始」模型對照評估——有時基礎模型本來就能勝任,微調只是徒增風險。