ファインチューニング
事前学習済みモデルを特定のタスクやドメインに適応させる追加学習
ファインチューニングとは
ファインチューニング (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 Model | Bedrock 上のモデルをファインチューニング |
| SageMaker Training | カスタムの学習ジョブを実行 |
| SageMaker JumpStart | 事前学習済みモデルをワンクリックでファインチューニング |
Bedrock のカスタムモデルは、S3 に学習データ (JSONL 形式) を置くだけでファインチューニングを開始できる。
学習データの準備
ファインチューニングの成否は学習データの品質に大きく依存する。
- 量: 数百〜数千件の高品質なデータが目安。多ければ良いわけではない
- 品質: ノイズや矛盾のないデータ。人手でキュレーションする
- 形式: 指示 (instruction) と応答 (response) のペア
- 多様性: 偏ったデータで学習すると、特定パターンに過学習する
注意点
- 過学習: 学習データに過度に適合し、汎用性が失われる。検証データで精度を監視する
- 壊滅的忘却: ファインチューニングで元の能力が劣化する。LoRA で影響を最小化する
- コスト: GPU インスタンスの時間課金。SageMaker のスポットインスタンスで 70〜90% 削減可能
関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
関連する記事
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。
本についてくるダウンロード素材を使い倒す
プログラミングの本には、サンプルコードや素材のダウンロード特典がついていることがあります。この特典を活用するだけで、学習効率が大きく変わります。
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。