blog.dopana

Back

Parameter-Efficient Fine-Tuning (PEFT)、特に LoRA (Low-Rank Adaptation) は、高価なGPUクラスタを使わずに大規模言語モデルをファインチューニングする手法として急速に普及しました。

LoRAの仕組み#

既存の重み行列 WRd×kW \in \mathbb{R}^{d \times k} 全体を更新する代わりに、ベース重み W0W_0 をフリーズし、低ランク分解行列 AABB を導入します:

W=W0+ΔW=W0+BAW = W_0 + \Delta W = W_0 + B \cdot A

ランク rmin(d,k)r \ll \min(d, k) と設定することで、学習に必要なパラメータ数を大幅に削減します。

Hugging Face PEFTでの実装例#

lora_config.py
from peft import LoraConfig, get_peft_model

peft_config = LoraConfig(
    r=8,
    lora_alpha=16,
    target_modules=["q_proj", "v_proj"], # [!code focus]
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

# model = get_peft_model(model, peft_config)
python

LoRAのメリット#

  • VRAMの節約: 学習時のVRAM要求量を60〜70%削減。
  • 軽量なチェックポイント: 数MB〜数十MBのアダプターファイルのみを保存・共有可能。
  • 推論遅延なし: デプロイ時にアダプター重みをベースモデルにマージ可能。

参考文献#