🎓 レベル:標準 | 重要度:A(必須) 📎 前提:量子化の仕組み(ビット数と精度) | 原理:ファインチューニング(機械学習)
要点(結論先出し)
- 微調整は3択:フル微調整(全パラメータ更新・重い)、LoRA(小さな低ランクアダプタだけ学習)、QLoRA(ベースを4bit凍結してLoRAを学習・最軽量)。
- ローカルの主役は QLoRA。8B級を12GB前後のGPU、7B級を8GBで微調整できる例も(要最新確認)。
- 学習されるのは**アダプタ(数十MB級)**だけ。ベース重みは凍結なので、ストレージも軽い。
概念 ── どこを動かすか
- フル微調整:全重みを更新。最高の自由度だが、学習にはモデルサイズの数倍のVRAM(勾配・オプティマイザ状態)。ローカルでは大型は非現実的。
- LoRA:ベースを凍結し、各層に**低ランクの小行列(アダプタ)**を足してそこだけ学習。更新対象が激減し、VRAMと時間が大幅減。原理は機械学習へ → ファインチューニング。
- QLoRA:さらにベースを4bit量子化したまま凍結し、その上でLoRAを学習。メモリ最小で、家庭用GPUでの微調整を可能にした立役者(要最新確認)。
仕組み ── QLoRAの構図
flowchart LR BASE["ベース重み(4bitで凍結)"] --> FWD["順伝播"] ADAPT["LoRAアダプタ(学習対象・低ランク)"] --> FWD FWD --> LOSS["損失"] LOSS --> UPD["アダプタのみ更新(ベースは固定)"]
ベースは4bitで置いたまま勾配を通し、追加した小さなアダプタだけを更新します。だから必要メモリが劇的に小さい。
必要VRAMの目安(要最新確認)
| 手法 | 7〜8B級の目安 | 備考 |
|---|---|---|
| フル微調整 | 数十GB以上 | 勾配・オプティマイザ状態が重い |
| LoRA(16bitベース) | 16〜24GB級 | アダプタのみ学習 |
| QLoRA(4bitベース) | 8〜12GB級 | 最軽量。家庭用GPUで現実的 |
数値は構成依存。自分のデータ長・バッチsizeで変わるので要最新確認。
運用の勘所
- まずQLoRAでアダプタを作り、効果を見てから本格化を検討。
- 学習で軽くしても、推論時のVRAM見積もりは別(→ VRAM所要の見積もり)。
- ツールは Unsloth(単機高速)・Axolotl(YAML駆動)・TRL など(要最新確認)。原理を理解していればツールは差し替え可能。
なぜそうするか
フル微調整は「全部を作り直す」ため重い。多くの用途ではスタイルや特定ドメインへの適応が目的で、それは小さなアダプタで十分。QLoRAは「ベースは凍結・追加分だけ学ぶ」ことで、ローカルの限られたVRAMでも微調整を成立させます。
⚠️ よくある落とし穴
- フル微調整をローカルで狙う:大型はVRAMが足りない。まずQLoRA。
- 学習VRAMと推論VRAMを混同:学習は勾配等で重い。推論見積もりとは別物。
- アダプタのランク(r)を盛りすぎ:大きいほど表現力は増すが過学習・重さも増す。小さく始める → データ準備と学習の実際
- 微調整で知識追加を期待:微調整は様式適応が得意。新知識の注入はRAGが向く → ローカルRAGの構成
対応lab
local-llm-study/labs/qlora_finetune.md… QLoRA最小設定(データ形式・主要ハイパラ・実行)。
関連
- データと学習 → データ準備と学習の実際
- 推論への橋渡し → アダプタのマージとGGUF変換
- 知識追加はRAG → ローカルRAGの構成