Model Merging(モデルマージング)
複数のLLMのモデルウェイト(重み)を数学的に統合して、それぞれの長所を持つ新しいモデルを作成する技術。追加学習なしに異なるファインチューニング済みモデルを組み合わせられる。
Model Merging とは
Model Merging(モデルマージング)とは、複数の異なるLLMのモデルパラメータ(ウェイト)を数学的な操作で統合し、新しいモデルを作成する技術だ。
従来のアンサンブル(推論時に複数モデルの出力を統合)とは異なり、Model Mergingは学習・推論を一切行わずにウェイト空間で直接統合する。結果として得られるモデルは通常の単一モデルと同じアーキテクチャを持ち、追加のコンピューティングコストなしに複数モデルの特性を持てる可能性がある。
なぜModel Mergingが注目されるのか
問題: 特定タスクに特化したファインチューニングは、他のタスクの性能を劣化させることが多い(Catastrophic Forgetting)。
汎用モデル → コーディング特化チューニング → コーディング能力↑、日本語能力↓
汎用モデル → 日本語特化チューニング → 日本語能力↑、コーディング能力↓
解決策: 両方のファインチューニング済みモデルをマージして、両方の能力を持つモデルを作成。
コーディング特化 + 日本語特化 → マージ → コーディング+日本語両対応モデル
コスト面のメリット:
- 追加ファインチューニング不要(GPUコスト ゼロ)
- データ収集・ラベリング不要
- MergeKitを使えばCPUで数分〜数時間で完了
主要なマージ手法
1. SLERP(Spherical Linear Interpolation)
最もシンプルな手法。球面線形補間を使ってウェイトをブレンドする。
# 疑似コード
merged_weight = slerp(weight_A, weight_B, t=0.5) # t=0.0〜1.0
- 特徴: 2モデルのみ対応、直感的なtパラメータで割合を調整
- 適用例: 「コーディングモデルを60%、会話モデルを40%でブレンド」
- 限界: 3モデル以上には直接使えない
2. TIES-Merge(Task-Interference via Eliminating Redundancy)
2023年NeurIPSで発表された手法。モデル間で矛盾するパラメータを除去してから統合する。
プロセス:
- 各モデルのベースモデルからの差分(タスクベクトル)を計算
- 重要度の低いパラメータをゼロにする(Trim)
- 符号が一致するパラメータのみを保持(Elect)
- 選択されたパラメータをマージ(Merge)
- 特徴: 複数モデルの干渉を最小化、精度が安定
- パラメータ:
density(保持率),weight(各モデルの寄与度)
3. DARE(Drop and Rescale)
2023年に発表。ランダムにパラメータを削除してリスケールする正則化手法。TIESと組み合わせる「DARE+TIES」が2024年の実用でほぼ標準。
# MergeKit設定例
merge_method: dare_ties
base_model: meta-llama/Llama-3.1-8B
models:
- model: coding-expert-8b
parameters:
density: 0.53
weight: 0.4
- model: japanese-expert-8b
parameters:
density: 0.53
weight: 0.6
4. Frankenmerge(レイヤースタッキング)
異なるモデルのレイヤーを交互に積み重ねる手法。MoE(Mixture of Experts)の粗い版に相当。
モデルA: [L1, L2, L3, L4, L5, L6, L7, L8]
モデルB: [L1, L2, L3, L4, L5, L6, L7, L8]
↓
マージ: [A:L1, A:L2, B:L3, B:L4, A:L5, A:L6, B:L7, B:L8]
- 特徴: パラメータ数が増加する場合もある(深いモデルを作れる)
- 適用例: 7Bモデル2つを組み合わせて11B相当のモデルを作成
5. Model Stock
2024年発表のKAIST研究。複数モデルのウェイト空間の重心を「賢く」計算する手法。全モデルの単純平均より安定した性能を実現。
実用ツール:MergeKit
MergeKitはOSSのモデルマージツール。GradientAI(旧arcee-ai)が開発。
pip install mergekit
mergekit-yaml merge_config.yaml ./output-model --cuda
対応手法: SLERP, TIES, DARE, DARE-TIES, Model Stock, Frankenmerge, BlockMerge
必要スペック:
- 7Bモデルのマージ: RAM 16GB(CPU実行可)
- 70Bモデルのマージ: RAM 140GB+ or 複数GPU
2024年注目のマージモデル例
HuggingFaceでは数千以上のマージモデルが公開されている。
| モデル名 | ベース | マージ元 | 特徴 |
|---|---|---|---|
| Nous-Hermes-2-Mixtral-8x7B | Mixtral | 複数 | 高性能汎用 |
| OpenHermes-2.5-Mistral-7B | Mistral 7B | 複数 | コスパ最強 |
| Sakura-SOLAR-Instruct-v1 | SOLAR 10.7B | 日本語特化 | 日本語最強の1つ |
| EZO-Humanoid-2.1 | Llama 3.1 | 日本語+汎用 | 日本語対話 |
| Llama-3.1-Storm-8B | Llama 3.1 8B | 複数 | DARE-TIES適用 |
限界と注意点
成功率は保証されない: マージが必ずしも両モデルの長所を引き出すとは限らない。ウェイト空間で直接操作するため、予測不可能な挙動が生じることがある。
アーキテクチャの一致が必要: SLERPやTIESは原則として同じアーキテクチャ・同じパラメータ数のモデル間でしか使えない(Llama 3.1 8B + Llama 3.1 8Bはマージ可、Llama 3.1 8B + Mistral 7Bはアーキテクチャが異なるため困難)。
ベンチマーク評価が必須: マージ後は必ずLM Evaluation Harnessなどでベンチマーク評価を行い、期待通りの能力向上が得られているか確認する。
ライセンス問題: ベースモデルのライセンス(Llama 3はMeta Community License)を継承する。商用利用には原モデルのライセンス確認が必須。
よくある質問(FAQ)
Q: Model Mergingとロラ(LoRA)マージは同じか?
A: 関連するが異なる概念。LoRAマージは「LoRAアダプタをベースモデルに統合する」操作(merge_and_unload())。Model Mergingは「LoRAや通常FTで完成した複数の全パラメータモデル同士をマージ」する操作。LoRAマージの結果同士をさらにModel Mergingする使い方もある。
Q: マージで生じたモデルの性能はオリジナルを超えるか? A: 多くの場合はオリジナルより低下するが、「特定タスクの複合能力」という意味ではオリジナルを超えることがある。例えば数学特化モデルと日本語特化モデルのマージは、「日本語数学問題」に対してどちらのオリジナルよりも高精度になることがある。
Q: 商用モデル(GPT-4、Claude)をマージできるのか? A: 不可能。ウェイトが非公開のため。Model Mergingは公開ウェイト(Llama 3、Mistral、Gemma等)のオープンモデルにのみ適用可能。
Q: 2025年以降のトレンドは? A: 「Evolutionary Merge」(進化的アルゴリズムで最適なマージ設定を自動探索)や、「Mixture of Agents」(マージでなく動的ルーティング)との組み合わせが2025年の注目トレンド。MergeKitもevolutionary mergeに対応している。