ファインチューニング

事前学習済みモデルを特定のタスクやドメインに適応させる追加学習

AI機械学習
ファインチューニング」の技術書を見る (15 冊) →

ファインチューニングとは

ファインチューニング (Fine-tuning) は、大量のデータで事前学習 (Pre-training) された基盤モデルに対して、特定のタスクやドメインのデータで追加学習を行い、モデルの振る舞いを調整する手法である。

モデルの重みそのものを更新するため、プロンプトエンジニアリングRAG では対応しきれない、文体の統一、専門用語の正確な使用、特定フォーマットの出力に効果がある。

RAG vs ファインチューニング vs プロンプトエンジニアリング

RAG とファインチューニング vs プロンプトエンジニアリングの違いを以下にまとめる。

観点プロンプトエンジニアリングRAGファインチューニング
モデルの変更なしなし重みを更新
知識の追加プロンプト内のみ外部 DB から検索学習データに組み込み
コスト低い中 (検索インフラ)高い (GPU 学習)
更新の容易さ即時ドキュメント追加で即時再学習が必要
得意なこと出力形式の指定最新情報の参照文体・トーンの統一

実務では、プロンプトエンジニアリング → RAG → ファインチューニングの順に試し、必要な精度が得られた段階で止めるのが効率的。

ファインチューニングの手法

ファインチューニングの手法を以下にまとめる。

手法説明コスト
Full Fine-tuning全パラメータを更新非常に高い
LoRA (Low-Rank Adaptation)低ランク行列で差分だけ学習低い
QLoRA量子化 + LoRAさらに低い
Instruction Tuning指示-応答ペアで学習中程度

LoRA は元のモデルの重みを凍結し、小さなアダプター層だけを学習するため、GPU メモリと学習時間を大幅に削減できる。

AWS での実装

AWS での実装を以下にまとめる。

サービス用途
Bedrock Custom ModelBedrock 上のモデルをファインチューニング
SageMaker Trainingカスタムの学習ジョブを実行
SageMaker JumpStart事前学習済みモデルをワンクリックでファインチューニング

Bedrock のカスタムモデルは、S3 に学習データ (JSONL 形式) を置くだけでファインチューニングを開始できる。

学習データの準備

ファインチューニングの成否は学習データの品質に大きく依存する。

  • 量: 数百〜数千件の高品質なデータが目安。多ければ良いわけではない
  • 品質: ノイズや矛盾のないデータ。人手でキュレーションする
  • 形式: 指示 (instruction) と応答 (response) のペア
  • 多様性: 偏ったデータで学習すると、特定パターンに過学習する

注意点

  • 過学習: 学習データに過度に適合し、汎用性が失われる。検証データで精度を監視する
  • 壊滅的忘却: ファインチューニングで元の能力が劣化する。LoRA で影響を最小化する
  • コスト: GPU インスタンスの時間課金。SageMaker のスポットインスタンスで 70〜90% 削減可能

関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事