🔌
LoRA — 66M個を全部変えず、1M個のアダプターだけ挿す
ファインチューニングの効率的代替 — ベースモデルは固定し、小さい行列2つだけ訓練
ファインチューニングの問題
66M個全部調整する。7Bモデルは数十GBのGPUメモリが必要、5モデル作ると5倍の保存容量。
LoRAのアイデア
「66M個全部変える必要はない。小さいアダプターを挿すだけ。」
ファインチューニング:66M個全部調整→66M保存(260MB)
LoRA:66M固定+アダプター1M訓練→1Mだけ保存(4MB)
例え:ファインチューニング=スマホ本体を改造。LoRA=ケースを付ける。
仕組み — 行列分解
W(768×768)を直接変える代わりに、小さい行列2つを横に付ける:
W(固定) + A(768×8) × B(8×768) = アダプターは12K個だけ
コード
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(r=8, lora_alpha=16, target_modules=["q_lin", "v_lin"])
model = get_peft_model(model, lora_config)
# → 訓練可能: 0.44%
キーコンセプト
1
ベースモデルを凍結 — 66M個の数字を固定、変更不可に設定
2
小さい行列A(768×8)、B(8×768)を各レイヤーに挿す — アダプター
3
AとBだけ訓練 — 全体の0.44%だけ調整
4
推論時:output = W×input + (A×B)×input — 元の重み+アダプター補正
5
アダプターだけ保存(数MB)— 用途別にアダプターだけ交換
ユースケース
大型モデルファインチューニング — 7B/13Bモデルを1つのGPUで訓練可能
多用途モデル — ベースモデル1つ+アダプターN個で複数タスク対応
デプロイサイズ削減 — 260MBの代わりに数MBのアダプターだけ配布