ファインチューニングとアライメント
事前学習済み言語モデルを指示に従うモデルに変える方法。教師ありファインチューニング、LoRAとQLoRA、報酬モデルとRLHF、直接選好最適化、そして結果の確認方法を解説します。
概要
事前学習済みモデルは、テキストのもっともらしい続きを予測します。質問に答えたり、書式に従ったり、何かを拒否したりはしません。次トークン予測にはそれを求めるものが何もないからです。ファインチューニングとアライメントは、ベースモデルをAPI経由で呼び出すアシスタントに変える段階であり、同じ段階をより小さな規模で行うことが、オープンモデルを自分のタスク、書式、ドメインに適応させる方法です。このハブは、現場のエンジニアが出会う手法を扱います。教師ありファインチューニング、パラメータ効率の良いアダプタ、選好最適化、そしてそれらが効いたかどうかを教えてくれる評価です。
最も重要な判断は、これらすべての前にあります。ファインチューニングはモデルの振る舞いを変えますが、事実を追加するのは苦手です。問題が知識の欠如なら、検索のほうが安価で更新も容易です。問題が書式、口調、狭いタスク、あるいは長いプロンプトによるレイテンシなら、小さなオープンモデルをファインチューニングするほうが、大きなモデルにプロンプトを与えるより優れていることがよくあります。
重要な考え方
教師ありファインチューニングは書式を教える
教師ありファインチューニング(SFT)は、望む振る舞いの例、すなわちプロンプトと理想的な応答を、ロールマーカー付きのモデルのチャットテンプレートを通して描画したもので学習を続けます。損失は事前学習と同じ次トークンの交差エントロピーで、通常はアシスタントのトークンだけが数えられるようマスクされます。丁寧に書かれた数千の例は、かき集めた10万の例に勝ります。これは2023年のLIMA論文の知見で、品質の基準は、各応答が本番に出ても満足できるかどうかです。チャットテンプレートは正確に合わせてください。あるテンプレートで学習し別のテンプレートで提供されたモデルは、静かに劣化します。
LoRAとQLoRAが手頃にする
7 Bモデルを16ビットでAdamを使ってフルファインチューニングすると、重み、勾配、最適化器の状態でパラメータあたり約16バイトが必要で、活性化を除いて110 GB以上になります。LoRAはベースの重みを凍結し、選んだ行列に対して低ランクの更新を学習します。Wを変える代わりにB×Aを加えるもので、AとBは小さな内部次元r、典型的には8から64をもちます。学習可能なパラメータは100分の1以下に減り、アダプタは数十メガバイトで、1つのベースモデルに対して複数のアダプタを保持できます。QLoRAはさらに進んで、凍結したベースを4ビットのNF4で保存しその場で逆量子化します。これにより7 Bのファインチューニングが8 GB未満に、70 Bのものが1枚の48 GBカードに収まります。
# snippet
import torch
class LoRALinear(torch.nn.Module):
def __init__(self, base: torch.nn.Linear, r: int = 16, alpha: int = 32):
super().__init__()
self.base = base # frozen pretrained weight
self.base.weight.requires_grad_(False)
self.a = torch.nn.Parameter(torch.randn(r, base.in_features) * 0.01)
self.b = torch.nn.Parameter(torch.zeros(base.out_features, r)) # zero: starts as identity
self.scale = alpha / r
def forward(self, x):
return self.base(x) + (x @ self.a.T @ self.b.T) * self.scale
学習後、アダプタは追加コストなしでサービングできるようベースの重みにマージできますが、マージ先は16ビットの重みにしてください。4ビットの重みにマージすると、丸めによって学習した内容の一部が失われます。
選好最適化: RLHFとDPO
SFTは模倣しかできません。2つの回答のうち良いほうをモデルに好ませるには、選好に関する信号が必要です。人間のフィードバックによる強化学習(RLHF)では、人間が応答のペアを比較し、その比較を予測するように報酬モデルを学習し、報酬を上げるようにPPOで方策を更新します。その際、KLペナルティが方策をSFTモデルの近くに保ちます。これが2022年のInstructGPTのレシピで、今でもほとんどのアシスタント学習の骨格です。
2023年の直接選好最適化(DPO)は、同じ目的関数を選好ペアそのものに対する分類損失として書き直せることを示しました。参照モデルが報酬モデルの代わりを務めます。サンプリングループも別の報酬ネットワークも不要で、多くのチームが最初に試す手法になっているのはそのためです。数学やコードをはじめとする検証可能な答えをもつタスクでは、最近の研究は人間の選好を検証器とグループ相対方策更新(GRPO)に置き換えています。DeepSeek-R1(総パラメータ671 B、アクティブ37 B、128 kコンテキスト、MITライセンス、2025年1月)が長い推論トレースを生成するように学習されたのはこの方法です。
効いたかどうかの評価
同じホールドアウトセットでベースモデルおよびSFTモデルと比較してください。何とも比較しないのは論外です。自由形式の出力に対する通常の道具は、書かれたルーブリックをもつLLM判定器で、平均的には人間の評価者とよく相関しますが、長い回答と自分自身のスタイルを好む既知のバイアスがあります。指示追従はIFEvalで確認し、一般的な能力が後退していないことをいくつかの標準ベンチマークで確認し、過剰な拒否と追従(sycophancy)は手作業で探してください。選好学習されたモデルは報酬を攻略することを学びうるので、スコアだけでなく毎回出力のサンプルを読んでください。評価のハブはハーネスを、安全性のハブは結果のレッドチーミングを扱います。
どこから始めるか
まずLLMをうまく使うを読み、プロンプトが失敗したときにだけファインチューニングするようにし、PyTorchで最初のニューラルネットワークでその下にある学習ループを学んでください。次にApple SiliconでのLoRAファインチューニングプロジェクトを実行してください。SmolLM2-135M-Instruct(135 Mパラメータ、8 kコンテキスト、Apache-2.0、2024年11月)をラップトップで数分で適応させます。量子化フォーマットのリファレンスは、結果をサービングするときに出会うNF4とGGUFの各タイプを説明します。
ツールとプラットフォーム
| ツール | 用途 | ライセンス | プラットフォーム |
|---|---|---|---|
| PEFT | Transformersモデル向けのLoRA、QLoRA、その他のアダプタ | Apache-2.0 | Hugging Face |
| TRL | SFT、報酬モデリング、DPO、GRPO、PPOのトレーナー | Apache-2.0 | Hugging Face |
| bitsandbytes | QLoRA向けの4ビットおよび8ビット重み読み込み | MIT | オープンソース |
| Unsloth | 単一GPUでより高速なLoRA学習カーネル | Apache-2.0 | オープンソース |
| Axolotl | 設定ファイル駆動のファインチューニング実行 | Apache-2.0 | オープンソース |
| mlx-lm | Apple SiliconでのLoRAファインチューニング | MIT | Apple |
| OpenAI fine-tuning API | クローズドモデルのホスト型SFTと選好チューニング | プロプライエタリなサービス | OpenAI |
| lm-evaluation-harness | 前後での標準ベンチマーク | MIT | オープンソース |
よくある間違い
- 変化する事実を教えるためにファインチューニングする。モデルは前四半期の数値を自信をもって述べます。検索を使ってください。
- サービング時に使うものと異なるチャットテンプレートで学習する。空白やシステムプロンプトの枠も含めてです。
- 同じエクスポートからサンプリングしたという理由で、評価例を学習セットに残す。
- フルファインチューニング向けの学習率をLoRAに使う、あるいはその逆。LoRAは典型的に10倍高い学習率を求めます。
- ベースモデルのライセンスを無視する。Llamaの派生物にはLlamaのライセンスが付いて回り、Apache-2.0モデルの派生物にはそれがありません。
- 出力を読まずに判定器のスコアを報告する。選好学習されたモデルは、こちらより先に判定器の盲点を見つけます。
さらに深く
- Ouyang et al., Training language models to follow instructions with human feedback, 2022。InstructGPTの論文です。
- Hu et al., LoRA: Low-Rank Adaptation of Large Language Models, 2021。および Dettmers et al., QLoRA: Efficient Finetuning of Quantized LLMs, 2023。
- Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model, 2023。
- Zhou et al., LIMA: Less Is More for Alignment, 2023。
- Zheng et al., Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, 2023。
- TRLドキュメントとPEFTドキュメント。