ファインチューニング
ファインチューニングとは、すでに大量のデータから学習済みの事前学習モデルを、特定のタスクやドメインに特化したデータでさらに学習させ、その重みを調整する手法です。望ましいトーン、形式、専門知識をモデルに直接組み込むために使用されます。
ファインチューニングとは、GPTのような既に事前学習済みのモデルに対し、タスク固有またはドメイン固有のデータでさらに学習を行い、重みを調整することです。
これは、すべてのパラメータを更新するフルファインチューニングと、ごく一部のみを学習するPEFT(LoRA、QLoRA、その他)のアプローチに分かれます。
LoRAは、事前学習済みの重みを固定し、低ランク行列のみを学習することで、GPT-3 175B(arXiv:2106.09685)において学習可能パラメータを約10,000分の1、GPUメモリを約3分の1に削減します。
RAGは、新しい知識をリアルタイムで取り込むのに適している一方で、ファインチューニングは、トーン、形式、専門的な推論をモデル自体に内在化させるのに適しています。
GEOおよびAI検索の文脈では、ブランドの声やドメインの専門性をモデルに刻み込む手段として機能します。
ファインチューニングとは
ファインチューニングとは、すでに大規模な一般データでの学習を終えた事前学習済みモデルを、特定のタスクやドメインに合わせた比較的小さなデータセットでさらに学習させることで、モデル内部の重みを調整する手法です。ゼロからモデルを構築するのではなく、すでに言語や世界知識を広く備えたモデルを出発点とし、目的に合わせて「再教育」します。
OpenAIは、教師ありファインチューニング(SFT)を、望むスタイルや内容をより確実に生成できるよう、例を通じてモデルを教える方法だと説明しています。適切に構築されたファインチューニング済みモデルは、望ましい振る舞い——一貫した形式、トーン、専門性——をモデル自体に内在化できるため、毎回長いプロンプトで細かく指示する必要がなくなります。その結果、プロンプトは短くなっても同等の性能を維持できます。
ファインチューニングのアプローチ
ファインチューニングは、学習中に更新されるパラメータ数に応じて、大きく2つの系統に分かれます。
フルファインチューニング
これは従来型のアプローチで、モデル内のすべての重みを学習対象として更新します。タスクへの適合性は高いものの、モデルが大きくなるほど学習コストとGPUメモリ負荷は急激に増加します。そして、各ファインチューニング済みモデルについて数十億のパラメータを完全な形で保存・デプロイする必要があるため、コストは高くなります。
PEFT(Parameter-Efficient Fine-Tuning)
Hugging FaceのPEFT(Parameter-Efficient Fine-Tuning)ライブラリのドキュメントによると、PEFT手法は少数の(追加の)パラメータのみを学習するため、計算コストと保存コストを大幅に下げながら、フルファインチューニングに匹敵する性能を実現します。その結果、消費者向けハードウェアでも大規模言語モデルを学習・保存できるようになります。代表的な手法にはLoRA、QLoRA、IA3、AdaLoRAがあります。
LoRA(Low-Rank Adaptation)
LoRA(Low-Rank Adaptation)は、Edward J. Huら(2021年)によって提案された代表的なPEFT手法です(arXiv:2106.09685)。事前学習済みの重みをfrozenそして、代わりに各Transformer層に学習可能な低ランク分解行列を組み込み、それらの行列のみを学習します。論文によると、Adamを用いてGPT-3 175Bをフルファインチューニングする場合と比べて、LoRAは学習可能パラメータ数を約10,000倍、GPUメモリ要件を約3倍削減しながら、RoBERTa、DeBERTa、GPT-2、GPT-3でフルファインチューニングと同等またはそれ以上の品質を達成しており、推論時のレイテンシ増加もありません。
ファインチューニング vs. RAG
ファインチューニングとRAG(retrieval-augmented generation、検索拡張生成)は、新しい知識を扱うための2つのアプローチとして、しばしば比較されます。RAGはクエリ時に外部データを取得してモデルに入力するのに対し、ファインチューニングは情報をモデルのパラメータに「焼き込み」ます。両者は代替ではなく補完関係にあり、実際には一緒に使われることがよくあります。
観点 | ファインチューニング | RAG(Retrieval-Augmented Generation) |
|---|---|---|
仕組み | ドメインデータで追加学習し、重みを調整する | クエリ時に外部の知識ソースを取得し、コンテキストとして注入する |
モデルへの変更 | 重みとパラメータを直接変更する | ベースモデルをそのまま、変更しない |
知識の新しさ | 学習時点で固定され、更新には再学習が必要 | データソースを差し替えれば最新情報が即時反映される |
強み | トーン、出力形式、専門的推論をモデルに内在化できる | 知識集約型タスクにおける事実精度と出典の追跡性 |
コスト | 学習リソースが必要で、より小さなモデルでより大きなモデルの性能を代替できる | 一般的にファインチューニングよりコスト効率が高い |
最適な用途 | ブランド・ペルソナ、JSONのような固定フォーマット、特定分野の習熟 | 今日のニュースや新しい社内ポリシーのように頻繁に変わる事実 |
証拠と例
LoRAの論文(Hu et al., 2021, arXiv:2106.09685)は、モデルが大規模化するにつれてフルファインチューニングが現実的でなくなり、ファインチューニング済みの大規模モデルをインスタンスごとにデプロイするのは法外に高コストになるという懸念から出発しました。その成果は、低ランク行列のみを学習しつつ品質を維持することで、学習可能なパラメータを約10,000倍削減したことであり、後続のQLoRAやAdaLoRAといったPEFTファミリー手法、さらにHugging FaceのPEFTライブラリエコシステムへの道を開きました。
RAGとファインチューニングのどちらを選ぶべきかについては、Red Hatや数多くの業界分析が、事実の正確さが重要な知識集約型タスクではRAGに優位性があり、一般にコスト効率も高い一方で、モデルの振る舞い、スタイル、フォーマットそのものを変える必要がある場合にはファインチューニングが適しているという見解で一致しています。最も高度な形は両者を組み合わせたハイブリッドで、ファインチューニングによってモデルを「専門家のように考え、話す」ようにし、RAGによって「リアルタイムの事実ライブラリ」へのアクセスを与えるものです。一方で、OpenAIは自社のファインチューニングプラットフォームを段階的に縮小していることを示しているため、ツールを選定する際には提供元ごとのポリシー変更も考慮に入れる価値があります。