Skip to main content

Parameter-Efficient Fine-Tuning

Parameter-Efficient Fine-Tuning (PEFT) は、全パラメータを更新せず、ごく一部だけ追加・更新 することで、LLM を fine-tune する手法群です。LoRA、QLoRA、Adapter、Prompt tuning などが含まれます。

なぜ必要か

LLM 全パラメータの fine-tuning には、

  • 巨大な GPU メモリ
  • 大きな optimizer state (Adam の場合、parameter の 2 倍以上)
  • ストレージ (タスクごとに数十〜数百 GB の checkpoint)

が必要です。PEFT はこれらを大幅に削減し、消費 GPU 1 枚でも 70B 級モデルを fine-tune できるようにしました。

LoRA

LoRA (Low-Rank Adaptation) は、各 weight matrix WW に対して、低ランク行列の積で更新分を表します。

W=W+ΔW=W+BAW' = W + \Delta W = W + B A

ここで、ARr×dA \in \mathbb{R}^{r \times d}BRd×rB \in \mathbb{R}^{d \times r}rdr \ll d

  • Frozen な WW はそのまま
  • AABB だけを学習
  • パラメータ数を r/dr/d 倍程度に削減 (典型的に r=8〜64)
  • 推論時には W+BAW + BA を merge して overhead ゼロ

QLoRA

QLoRA は、

  1. Base model を 4-bit 量子化 して memory を削減
  2. その上に LoRA adapter を載せて学習
  3. NF4 量子化、double quantization、paged optimizers を組合せ

という構成です。これにより、消費 GPU 1 枚で 65B モデルの fine-tune が現実的になりました。

Adapter / Prompt tuning

LoRA の他にも、

手法追加するもの
Adapter各層に小 bottleneck MLP を挿入
Prefix tuning各層の attention に学習可能な prefix を挿入
Prompt tuningEmbedding に学習可能な soft prompt を加える
IA3Activation を学習スカラーで rescale

があります。LoRA / QLoRA が現状もっとも普及しています。

いつ使うか

状況推奨
GPU が限られているQLoRA
複数タスクを 1 base から派生LoRA
推論レイテンシ重視LoRA (merge 可能)
大幅な domain shiftFull fine-tuning
推論時に複数 adapter を切替LoRA + adapter switching

数式で見る LoRA の低ランク更新

LoRA は、元の weight matrix WRdout×din\mathbf{W}\in\mathbb{R}^{d_{out}\times d_{in}} を固定し、更新分だけを低ランク行列の積で表します。

ΔW=BA,ARr×din,BRdout×r\Delta\mathbf{W}=\mathbf{B}\mathbf{A}, \qquad \mathbf{A}\in\mathbb{R}^{r\times d_{in}},\quad \mathbf{B}\in\mathbb{R}^{d_{out}\times r}

Forward は次のように書けます。

h=Wx+αrBAx\mathbf{h}=\mathbf{W}\mathbf{x}+\frac{\alpha}{r}\mathbf{B}\mathbf{A}\mathbf{x}

ここで、rr は rank、α\alpha は LoRA scaling です。学習する parameter 数は、full fine-tuning の doutdind_{out}d_{in} に対し、LoRA では r(din+dout)r(d_{in}+d_{out}) です。

\frac{\#\mathrm{LoRA}}{\#\mathrm{Full}}= rac{r(d_{in}+d_{out})}{d_{in}d_{out}}

この式の気持ちは、「大きな重み全体を動かすのではなく、その更新方向が低ランク部分空間にあると仮定し、小さな adapter だけを学習する」というものです。Rank rr を上げるほど表現力は増えますが、memory と overfitting risk も増えます。

関連ページ

主なソース