Model Merging
Model Merging は、複数の fine-tuned checkpoint を 追加学習なし、または少ない検証だけで 一つの model に合成する技術です。Ensemble のように複数 model を同時実行するのではなく、weight space 上で checkpoint を混ぜるため、推論コストを増やさずに能力や robust 性をまとめることを狙います。
自作概念図。共有 base model から作られた task-specific checkpoint を、weight space の rule によって単一 checkpoint に統合します。
基本発想
同じ base model から複数の fine-tuned model を作ったとします。
ここで は base model、 と は task vector です。Model merging は、これらの差分を何らかの形で足し合わせます。
この式は単純ですが、実際には task 間の干渉、parameter scale、符号の衝突、normalization layer、embedding の違いなどが問題になります。
Model Soups
Model Soups は、同じ model architecture の複数 checkpoint を単純平均する方法です。
Vision model でよく知られ、fine-tuning run や hyperparameter が少し違う checkpoint を平均すると、validation performance や calibration が改善することがあります。LLM でも、同一 base、同一 tokenizer、近い training recipe の checkpoint では単純平均が意外に効く場合があります。
Task Arithmetic
Task Arithmetic は、fine-tuned model と base model の差を task vector と見なし、task vector を加減算します。
たとえば code 能力と math 能力を足す、ある能力を弱める、複数 task を重ねる、といった操作を weight space で行います。ただし、task vector 同士が同じ parameter に異なる方向の更新を持つと、能力が相殺されることがあります。
SLERP
SLERP (Spherical Linear Interpolation) は、二つの checkpoint を球面上で補間します。単純な線形補間より weight norm の変化を抑えられるため、checkpoint 間の距離が大きい場合に使われます。
ここで は二つの vector の角度です。
TIES-Merging
TIES は、task vector の干渉を減らすために、主に三つの手順を使います。
- Trim: 重要度の低い更新を落とします。
- Elect Sign: parameter ごとに支配的な符号を選びます。
- Merge: 選ばれた符号に合う更新だけを集約します。
TIES の狙いは、異なる task が同じ parameter を逆方向に動かしている場合に、単純平均で両方を壊さないようにすることです。
DARE
DARE は、task vector の要素を random に drop し、残した要素を rescale してから merge する方法です。Fine-tuning の差分には冗長性が多いという観察を利用し、干渉を減らしながら task vector を足し合わせます。
直感的には、すべての差分を足すのではなく、「重要な sparse update だけを複数 model から持ち寄る」ような挙動になります。
いつ有効か
Model merging が有効になりやすい条件は次の通りです。
- すべての checkpoint が同じ base model から始まっている。
- Tokenizer、architecture、special token が一致している。
- Fine-tuning task が補完的で、完全には衝突していない。
- 各 checkpoint の quality が一定以上である。
- Merge 後に小さな validation set で重み係数を選べる。
逆に、異なる base model 同士、異なる tokenizer、極端に異なる training recipe、強い safety tuning と強い uncensored tuning のような衝突が大きい場合は、壊れやすくなります。
LLM 開発での使いどころ
| 用途 | 例 |
|---|---|
| Skill composition | code model と math model を合成する |
| Safety / helpfulness balance | chat tuning と safety tuning の比率を調整する |
| Checkpoint selection | 複数 run の平均で安定化する |
| Community model | 公開 checkpoint を merge して leaderboard を狙う |
| Low-cost ablation | 追加学習なしで能力の足し引きを試す |
限界
Model merging は魔法ではありません。Merge 前の checkpoint が持たない能力を新規に獲得するわけではなく、主に既存能力の組み合わせや平均化です。また、merge 後の model は予期しない regression を起こすことがあるため、instruction following、safety、coding、math、long context などを個別に評価する必要があります。
関連ページ
主なソース
- Model Soups: https://arxiv.org/abs/2203.05482
- Editing Models with Task Arithmetic: https://arxiv.org/abs/2212.04089
- TIES-Merging: https://arxiv.org/abs/2306.01708
- DARE: https://arxiv.org/abs/2311.03099
- Git Re-Basin / Linear Mode Connectivity: https://arxiv.org/abs/2209.04836