🎓 レベル:標準 | 重要度:B(推奨) 📎 前提:微調整の選択肢(フル・LoRA・QLoRA) | 原理:ファインチューニング(機械学習)
要点(結論先出し)
- 微調整の成否はデータの質で大半が決まる。形式は**チャット形式(指示と応答のペア)**が基本。
- 主要ハイパラは少数:rank(r)・alpha・学習率・エポック数・最大系列長。小さく始めて過学習を避けるのが鉄則。
- 少量でも一貫した良質データが、大量の雑なデータに勝ることが多い(要最新確認)。
概念 ── データはチャット形式で揃える
近年のモデルはチャットテンプレート(system/user/assistant)に沿って学習・推論します。微調整データもこの形に揃えるのが自然です。
{"messages": [
{"role": "system", "content": "あなたは簡潔に答える日本語アシスタントです。"},
{"role": "user", "content": "ローカルLLMの利点は?"},
{"role": "assistant", "content": "プライバシー・コスト・オフライン・制御の4点です。"}
]}
1行1サンプル(JSONL)が扱いやすい。応答の質と一貫性がそのままモデルの癖になります。
主要ハイパーパラメータ(要最新確認)
| パラメータ | 役割 | 起点の目安 |
|---|---|---|
| rank (r) | アダプタの表現力 | 小さめ(例 8〜16) |
| alpha | アダプタの効き(スケール) | r と同程度〜2倍 |
| 学習率 | 更新の大きさ | 小さめ(過学習防止) |
| エポック数 | データを何周するか | 1〜3周から |
| 最大系列長 | 1サンプルの上限トークン | データに合わせ最小限 |
r と alpha、学習率は相互に効く。まず小さく回して損失と出力を見るのが安全(→ 対応lab)。
仕組み ── 学習ループの俯瞰
flowchart LR DATA["チャット形式データ(JSONL)"] --> TMPL["チャットテンプレート適用"] TMPL --> TRAIN["QLoRAで学習(アダプタ更新)"] TRAIN --> EVAL["検証データで確認(過学習を監視)"] EVAL --> CKPT["アダプタを保存"]
運用の勘所
- 検証用データを分けておく。学習データだけ見て喜ばない(過学習の典型)。
- 少量・高品質から。100〜数千件の良質サンプルで様式適応は十分なことが多い(要最新確認)。
- 失敗時は学習率を下げる・エポックを減らす・rを下げるの順で過学習を抑える。
- データに個人情報・機密が入るなら、ローカル微調整の意味はまさにそこ(外に出さない)。
なぜそうするか
LoRA系は更新パラメータが少ないぶん、雑なデータや過剰な学習で簡単に偏ります。小さく始めて検証を見ることで、「狙った様式だけ」を学ばせられる。データの一貫性に投資するほうが、ハイパラ探索より効くことが多いです。
⚠️ よくある落とし穴
- データの不整合:口調・形式がバラバラだと、モデルもブレる。揃える。
- エポックを回しすぎ:過学習で汎化が落ち、決まり文句しか言わなくなる。
- 検証なしで判断:学習損失だけでは過学習を見逃す。
- 微調整で知識を覚えさせようとする:事実の追加はRAGが適task → ローカルRAGの構成
対応lab
local-llm-study/labs/qlora_finetune.md… JSONL形式・ハイパラ・最小学習スクリプトの雛形。
関連
- 手法の選択 → 微調整の選択肢(フル・LoRA・QLoRA)
- 推論への変換 → アダプタのマージとGGUF変換
- 原理 → ファインチューニング