大規模言語モデル(LLM)は、大量のテキストを用いた事前学習によって一般的な言語能力を獲得しています。
しかし、事前学習だけでは特定用途や特定ルールに最適化されないため、必要に応じて追加の学習を行い、挙動を調整します。
この追加学習が ファインチューニング(Fine-tuning) です。
ファインチューニングとは何か
ファインチューニングは、既存の事前学習済みモデルに対し、限定的なデータセットを用いて再学習させ、特定の振る舞いや出力形式を安定的に再現できるようにする工程です。
主な目的は次の通りです。
- 特定の文体・ルール・スタイルを忠実に反映させる
- 一定のフォーマットや構造を厳密に維持させる
- 一貫した判断基準にもとづく出力を再現させる
- 特定領域での応答傾向を調整する
ファインチューニングの代表的アプローチ
Full Fine-tuning(モデルの重みを広範囲に更新)
モデル全体のパラメータを更新する方式。
最も柔軟性が高い反面、計算資源とデータ品質の影響を強く受けます。
利点
- 振る舞いの調整幅が広い
- 長期的に安定した挙動を得やすい
注意点
- 計算コストが大きい
- データ品質が悪いと性能劣化が起こりやすい
LoRA / QLoRA(低ランク近似による軽量な調整)
LoRA(Low-Rank Adaptation)や QLoRA は、モデルの全重みを更新せず、小規模な追加パラメータのみ学習する方式です。
利点
- 必要なメモリと計算量が小さい
- 速度が速く、環境への要求も低い
- 元モデルの性能を保ちつつ挙動を調整できる
補足
QLoRA は量子化を併用し、さらに効率を向上させた手法です。
Instruction tuning(指示—応答ペアでの学習)
「指示(instruction)」と「望ましい応答(response)」のペアを大量に与えて学習させるアプローチ。
ChatGPT のような対話型モデルの基本方式です。
重要点
Instruction tuning は “学習目的の分類” であり、
Full FT / LoRA / QLoRA と組み合わせて実施できる点が特徴です。
ファインチューニングと RAG の違い
RAG(Retrieval-Augmented Generation)は、外部データベースを参照しながら回答を生成する手法です。
| 項目 | ファインチューニング | RAG |
|---|---|---|
| 目的 | モデルの振る舞い・出力傾向を変える | 外部知識を動的に参照する |
| パラメータ更新 | あり | なし |
| 得意分野 | 文体統一、回答形式の制御、判断基準の固定化 | 最新情報、頻繁に更新される知識の反映 |
| 不得意分野 | 情報更新の頻度が高い領域 | 文体の調整、系統だった出力整形 |
両者は競合ではなく、多くの場面で併用されます。
学習データの構造と品質
データ形式
多くの環境で JSONL(1行1サンプル)形式が用いられます。
データ例
{"prompt": "〇〇について説明してください", "completion": "△△の観点から説明すると…"}
データ件数の目安
- 最少:数十〜数百件
- 安定した効果:数千件以上
- 大規模用途:数万件規模
品質が重要な理由
モデルは「与えられた例を強く模倣する」ため、
- 文体のばらつき
- 誤字・曖昧な構造
- 不統一な表現
などが含まれると、そのまま学習され、出力も不安定になります。
ファインチューニングが有効なケース・不向きなケース
有効なケース
- 書き方・文体を安定させたい
- 出力フォーマットを厳密に守らせたい
- ルールベースの判断を再現させたい
- 長期的に同じ種類の処理を繰り返す用途
不向きなケース
- 最新情報を頻繁に扱う
- 体系的な知識を随時更新したい
- データ数が非常に少ない
このような場合は RAG やプロンプトエンジニアリングが適しています。
学習プロセスの一般的な流れ
- 目的の明確化
- 何を改善したいか、どのような挙動を再現したいかを定義する
- データ収集・整備
- 文体や構造を統一し、不必要なノイズを除去する
- データ形式への整形(JSONLなど)
- 学習方式の選択(LoRA / QLoRA / Full FT)
- 学習の実行
- 評価
- ベンチマーク、タスク固有の評価指標、ヒューマンチェック
- 改善と再学習
ファインチューニングは 1 回で最適化されるものではなく、データ改善を含む反復が効果を大きく左右します。
計算資源・コストの目安
目安としてよく挙げられる範囲
| モデル規模 | 手法 | GPU構成 | コストのオーダー |
|---|---|---|---|
| 7B〜13B | LoRA / QLoRA | A100 ×1 程度 | 数万円〜十数万円 |
| 70B | LoRA | A100 ×2〜4 | 数十万円〜 |
| 70B Full FT | 複数GPU | 数百万円規模のケースも |
※ 実際のコストは
- データ量
- エポック数
- クラウド料金
- 量子化の有無
などで大きく変動します。
利用例(特定領域に依存しない形で整理)
- 文書スタイルの統一
- 特定の出力構造を必ず守るタスク
- 判定基準を共有した応答生成
- 固定された専門領域での応答最適化
これらは分野を問わず利用されている一般的なパターンです。
注意点のまとめ
- 小規模データでも、一貫性があれば十分効果が出る
- データの混乱はそのままモデルの出力に現れる
- 学習目的を明確にしてからデータを作成するほど安定する
- RAG との併用で、知識と振る舞いを分離すると管理しやすい
以上、LLMのファインチューニングについてでした。
最後までお読みいただき、ありがとうございました。
