すでに文章が上手な人を採用したとします。
毎回仕事を頼むたびに会社の書き方を一から説明する方法もあります。
もう一つは、会社のExampleを繰り返し研修し、その書き方を習慣として身につけてもらう方法です。
この後者が**Fine-tuning(ファインチューニング)**を理解する良い比喩です。
既存Modelへ追加Trainingする
Foundation Modelは、すでに大規模Trainingで広いPatternを学んでいます。
Fine-tuningでは追加のExampleを使い、Model Parameterの一部または全部を更新し、特定Behaviorが出やすいようにします。
Methodによっては全Parameterを更新せず、小さな追加Parameterだけを学習するParameter-Efficientな方法もあります。
Promptとの違い
Promptは今回のRequestへInstructionやContextを追加します。
Fine-tuningはModelの学習Parameterを変えるため、毎回長いInstructionを書かなくても同じBehaviorが出やすくなります。
たとえば、
- 固定Output Format
- Classification
- Domain Terminology
- Tool Callの形式
- 一貫したStyle
など、繰り返し現れるPatternに向いています。
Fine-tuningはDatabaseではない
今日の為替、毎週更新されるPolicyなどをModel Weightへ入れると、更新が大変です。
第023回のRAGなら、Source Documentを外部に置いたまま更新でき、どの資料を根拠にしたか確認しやすくなります。
入門の目安として、
- Request時に参照するKnowledgeを変えたい → RAG / Context
- 繰り返すModel Behaviorを変えたい → Fine-tuning
と考えると整理しやすいです。
Training Dataは量だけではない
矛盾した1,000件のExampleより、正確で代表的なExampleの方が役立つ場合があります。
- Input形式
- 正しいOutput
- Edge Case
- 変えてはいけないBehavior
- Trainingに使わないEvaluation Set
を用意します。
Trainingに使ったExampleだけで評価すると、本当にGeneralizeしたか分かりません。
間違いも学習する
Labelが間違っていれば、その間違いを学ぶ可能性があります。
Sensitive DataをTraining Exampleへ入れれば、Privacy Riskも増えます。
Fine-tuningは「SmartにするButton」ではなく、与えたDataとObjectiveへModelを最適化する処理です。
CostとMaintenance
TrainingにはCostがかかり、Requirementが変わればFine-tuned Modelも古くなります。
まずPrompt、Structured Output、Tool、RAGで解けないか確認し、繰り返し使うBehaviorで大きな効果があるときにFine-tuningを検討します。
今日の一文
Fine-tuningとは、追加TrainingでModel Parameterを更新し、特定Behaviorを一回のPromptではなくModel側へ反映する方法です。
次の第025回では、ModelをCloudではなく自分のHardware上で動かすLocal LLMを見ます。
コメント
質問、感想、補足したいことがあれば、ここに残せます。
まだコメントはありません。1Fになってみませんか。