🔌

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のアダプターだけ配布