論文紹介: Evolutionary Optimization of Model Merging Recipes

<!-- 論文紹介: Evolutionary Optimization of Model Merging Recipes -->

## はじめに
今回は Sakana AI による論文「Evolutionary Optimization of Model Merging Recipes」を紹介します。この論文では、LLM モデル同士を融合させて新しいモデルを作ってしまおう！というかなり斬新な論文です。早速読んでいきましょう。

> 🐣 Sakana AI さんの記事を見るたびにスイミーを思い出しちゃいます

参考文献:  
T. Akiba, M. Shing, Y. Tang, Q. Sun, D. Ha. ["Evolutionary Optimization of Model Merging Recipes"](https://arxiv.org/abs/2403.13187v1)

---

## 1 論文の概要

この論文は、AI モデル開発の新しい方向性を示す画期的な研究です。これまで、AI モデルの性能向上には「より大きなモデルを作れば良い」という考え方が主流でした。また、複数のモデルを融合する「モデルマージ」も試みられていましたが、この方法は人間の直感や専門知識に大きく依存していました。

> 🐣 黒魔術や錬金術であると、従来のモデルマージを皮肉っていますね

一方、この研究で提案された **Evolutionary Model Merge** は、進化的アルゴリズムを活用してモデルマージを最適化します。この手法は主に 2 つのアプローチを提案しています：

1．パラメータ空間でのマージ: CMA-ES を用いて既存のマージ手法（TIES-Merging と DARE）のパラメータを最適化
2. データフロー空間でのマージ: 異なるモデルのレイヤー間の接続順序とスケーリングを最適化

> 🐣 1．は実数値パラメータ探索、2．はモデル構造の交叉とみることができそうです

この手法により、追加の学習データや大規模な計算リソースを必要とせず、効率的なモデル開発が可能になりました。
研究チームは本手法を用いて、日本語 LLM と数学特化 LLM を統合した日本語数学 LLM（EvoLLM-JP）と、日本語 LLM と Vision-Language Model を統合した日本文化対応 VLM（EvoVLM-JP）を開発しました。特筆すべきは、EvoLLM-JP がわずか 7B パラメータでありながら、70B パラメータの従来モデルを上回る性能を実現した点です。

これらのモデルはオープンソースとして公開され、コミュニティへの貢献が重視されています。この研究は、単純な大規模化競争から既存モデルの知識を最大限活用する時代へのパラダイムシフトとなる可能性を秘めています。

> 🐣 この研究はパラダイムシフトになるぞ！ってちょっとカッコいい

---

## 2 関連研究
モデルマージは、複数のタスク特化型モデルを組み合わせて汎用性の高いモデルを生成する手法として注目を集めています。例えば、画像生成の分野では Stable Diffusion の写実的なモデルとアニメ調のモデルを融合させることで、両方の特徴を兼ね備えた新しいモデルが生まれています。言語モデルの分野でも、Open LLM Leaderboard において、異なる言語能力や推論能力を持つモデルを融合させたモデルが上位を占めるようになってきました。

これらの成功は、モデルマージの可能性を示す一方で、その手法は依然として試行錯誤に基づくものでした。本研究は、この融合プロセスを進化的アルゴリズムによって体系化し、より効率的で再現性のある手法として確立した点に新規性があります。特に、パラメータ空間での最適化だけでなく、データフロー空間での最適化も含めた包括的なアプローチを提案している点が特徴的です。

---
## 3 提案手法

本研究では、進化的アルゴリズムを用いて異なるモデル間の効果的な融合を実現します。融合のアプローチは以下の 3 つの手法に分類されます。

> 🐣 原論文では merge なので以降は統合、融合ではなくマージで統一しますね

### 3.1 パラメータ空間での融合

パラメータ空間での融合では、実数値最適化に優れた進化戦略 **CMA-ES（共分散行列適応進化戦略）** を用いて複数のモデルをマージするパラメータを最適化します。本手法では、各モデルに対して **Weight** と **Density** の 2 つのパラメータが割り当てられ、それらを CMA-ES で最適化します。そのため、CMA-ES で扱う「遺伝子長」はモデル数の 2 倍になります。

各モデルのネットワークの重みを $ W_i $、モデル間の重み係数を $ \alpha_i $ とすると、融合後のモデルの重み $ W_{\text{merged}} $ は次式で表されます：

$$
W_{\text{merged}} = \sum \alpha_i W_i
$$

ここで、重要なモデルの $ \alpha_i $ が大きくなることが期待されます。ただし、実際には TIES-Merging と DARE が適用されるため、この処理はさらに複雑になります。以下では、これらの手法について説明します。

本論文の設定では、次のようなモデルが使われています：

- **ベースモデル $ M $**：Mistral-7B-v0.1
- **ファインチューニングモデル $ A, B, C $**：
  - 日本語 LLM：Shisa Gamma-7B-v1
  - 英語数学 LLM1：WizardMath-7B-V1.1
  - 英語数学 LLM2：Abel-7B-002

#### 補足: タスクベクトル (task vector)
この論文が対象とするのは重みそのものではなく、ベースモデルとファインチューニングされたモデルの重みの**差分**です。それを論文では TIES-Merging と同様にタスクベクトルと呼んでいます。以下は本論文のタスクベクトルに関する説明部分の引用です。

> our approach leverages ***task vectors*** analysis to understand each model’s strengths,

> ***task vectors*** by subtracting pre-trained from fine-tuned model weights

この差分であるタスクベクトルの成分を $\Delta W_i$ とすると、ファインチューニングされた重み $W_i'$ はベースモデルの重み $W_i$ を用いて次式で表されます:

$$
W_i' = W_i + \Delta W_i
$$

ここで重要なのは、すべての操作や基準が $W_i'$ や $W_i$ ではなく $\Delta W_i$ に対して適用されることです。例えば、ある部分を「0 にする」という表現は、$W_i'$ や $W_i$ を 0 にするのではなく、$\Delta W_i$ を 0 にするという意味であり、その結果、その部分の重みはベースモデルの $W_i$ のままになります。

#### TIES-Merging

まず、TIES-Merging では 3 つのモデル間でマージ対象とならない重みを選別します。その際に重要となるのはベースモデルの重みとの差分であるタスクベクトルです。以下の条件に当てはまるタスクベクトルの成分はマージから除外されます：

> 🐣 タスクベクトル自体はタスクにひとつだけです。個々の成分が重みの差分に相当します

1. **ベースモデルからの変化がほとんどないタスクベクトルの成分**：
   - ファインチューニングの影響を受けておらず、タスク固有の特徴を学習していない部分。これらは変更不要と判断され、タスクベクトルの成分 $\Delta W_i$ が 0、つまりベースモデルの値がそのまま使用されます。

   > 🐣 変更が不要なだけで、ベースモデルの $W_i$ が不要なわけではありません。

2. **モデル間でベースモデルとの差分の符号が異なるタスクベクトルの成分**：
   - 例えば、あるモデルでタスクベクトルの成分が正の値、別のモデルで同じ位置の成分が負の値を持つ場合。これらは特定のドメインに特化した部分であり、統合すると不整合を引き起こすリスクがあるため、合理的な統合が必要です。

#### DARE
まず DARE ではタスクベクトル (task vector) のことを delta parameter と呼んでいますが、この論文に従ってタスクベクトルで統一します。DARE は、TIES-Merging で除外されなかったタスクベクトルの成分に対して適用されます。この手法では、モデルごとの Density パラメータ $ d_i $ に基づいてスパース化を行います。各モデルのタスクベクトルの成分のうち、$ 1 - d_i $ の割合が 0 に置き換えられます。

- **Density $ d_i $**：モデル内で維持する重みの割合を表します。例えば：
  - **Shisa Gamma**（Density = 0.8）：80% の重みを維持し、20% を削除
  - **WizardMath**（Density = 0.4）：40% の重みを維持し、60% を削除

このスパース化の目的は、過剰なタスクベクトルの成分を削除し、モデルを効率化することです。ただし、削除対象のタスクベクトルの成分を決定する基準については、ノルムが小さい部分を選ぶのか、完全ランダムなのかは論文中で明記されていません。

>こちらで自己解決しました。DARE はランダムで削除しています。
>[論文紹介: Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch](https://qiita.com/hiyoko1729/items/0b3482a3528d7d3347c4)


#### TIES-Merging と DARE の関係

論文には順番は明記されていませんが、DARE の論文によると、まず DARE が適用され、モデルが過密化しすぎないようにスパース化します。その後、TIES-Merging が適用されるようです。CMA-ES では、DARE の Density の値と各モデルの重みパラメータが探索され、最適なマージパラメータが決定されます。

### 3.2 データフロー空間での融合

近年の研究から、言語モデルの知識は各レイヤーに分散して格納されていることが分かってきました。よって既存モデルのレイヤーを組み合わせて推論パスを最適化する手法も提案します。

> 🐣 重みベースではなくて構造ベースですね。NAS に近いかも？
>
> #### 補足: NAS
> NAS（Neural Architecture Search）は AutoML（Automated Machine Learning）の一種でニューラルネットワークのパラメータではなくモデル構造そのもの (例: レイヤ数や接続パターン) を最適化する手法の総称です。

このデータフロー空間での融合では、各モデルのレイヤーの重みはそのままに、トークンがどのレイヤーをどの順序で通過するかを最適化します。例えばモデル A の $i$ 番目のレイヤーの後に、モデル B の $j$ 番目のレイヤーを通過させるといった具合です。

実装では、全レイヤー数 $M = 64$ （2つのモデルの場合）、繰り返し回数 $r = 3$ として、タイムステップ数 $T = M \times r = 192$ を設定しました。これらのレイヤーの使用/不使用を制御するインジケータ配列 $I$ を用意し、$I_i > 0$ の場合にそのレイヤーを使用します。

また、レイヤー間の遷移時には分布のシフトに対処する必要があります。そこで $M \times M$ のスケーリング行列 $W$ を導入し、レイヤー $i$ から $j$ への遷移時に入力を $W_{ij}$ でスケーリングします。このスケーリングは非常に重要で、実験では省略すると性能が 20% 以上低下することが分かりました。

探索空間が大きくなりすぎるのを防ぐため、スケーリング行列 $W$ はフィードフォワードネットワーク $\pi_\theta$ で生成することもできます：

$W_{ij} = \pi_\theta(i, j, t)$

ここで $\theta$ は進化的に最適化されるパラメータです。

最適化には EvoJAX 実装の CMA-ES を使用し、100 世代にわたって128個体で探索し、検証セットでの精度が最も高いモデルを最終的な成果物として選択しています。

この手法の大きな利点は、既存モデルの重みを変更することなく、レイヤーを効果的に組み合わせることで新しい能力を引き出せる点です。さらに、前節で説明したパラメータ空間での融合と組み合わせることで、より高い性能を達成することができます。

#### 補足: 遺伝的アルゴリズムの方が適している？
進化型計算的にはインジケータ配列 $I$ が個体になりますが、これは [0,1] のバイナリ列なので遺伝的アルゴリズム（GA）が得意とする組合せ最適化問題の形式と一致します。論文では CMA-ES を使用していますが、以下の点で GA の方が自然な選択肢だったとも考えられます：

1. 表現型がバイナリ列であり、GA の交叉や突然変異の操作が自然に適用できる
2. 離散的な探索空間であり、CMA-ES が本来想定している連続値空間ではない
3. GA では、良質の部分構造を交叉によって効率的に残せる

ただし、スケーリング行列 $W$ の最適化については連続値のパラメータとなるため、CMA-ES の使用は理にかなっています。
より効率的な実装としては：

- レイヤー選択（$I$）: GA
- スケーリング（$W$）: CMA-ES 

という 2 段階の最適化、もしくはハイブリッドアルゴリズムの使用が適当なのかもしれません。

> 🐣 量子化もそうだけど連続値と離散値の見極め大切！

### 3.3 両空間での融合

パラメータ空間（PS）での融合とデータフロー空間（DFS）での融合は直交する手法であり、これらを併用することで融合モデルの性能をさらに向上させることが可能です。まず PS 融合により複数のモデルを結合し、その結果得られたモデルを元のモデル群に追加してから DFS 融合を適用します。

この手法は、特に複数の目的を持つモデルマージにおいて効果を発揮します。具体的な手順は以下の通りです：

1. PS 融合を用いて、目的に応じた複数のモデルを生成
2. 生成したモデルをモデルプールに追加
3. NSGA-II などの多目的進化アルゴリズムを用いて DFS 融合を適用し、関連する評価指標全体での性能を向上

このような段階的な最適化により、単一の融合手法では達成できない性能向上が可能になります。PS 融合で得られた基礎的な能力を維持しながら、DFS 融合によってさらなる性能向上を実現できます。特に、数学的推論や視覚的認識など、複数のドメインにまたがる能力が要求されるタスクにおいて、この組み合わせアプローチの有効性が実証されています。

> 🐣 ただしこれは論文中では実験されていませんでした

---
## 4. 実験結果：進化的モデルマージの有効性

実験では 2 つの主要なタスクに取り組みました：

1. **日本語数学 LLM の進化（EvoLLM-JP）**
- ベースとなる3つのモデル：
  - 日本語 LLM（Shisa）
  - 数学 LLM（WizardMath, Abel）
- 主な成果：
  - MGSM-JA（日本語数学タスク）で 52.0% の精度を達成
  - 日本語ベンチマーク（JP-LMEH）で 70.5 のスコアを達成
  - **70B パラメータの日本語モデルを上回る性能を 7B で実現**
  - 数学と日本語の両方の知識を要する問題に対して特に高い性能

2. **日本語Vision-Language Model（EvoVLM-JP）**
- LLaVA（英語VLM）とShisa（日本語LLM）を融合
- 主な成果：
  - JA-VG-VQA-500 で 19.7 の ROUGE-L スコア
  - 日本文化に特化した JA-VLM-Bench-In-the-Wild で 51.2 を達成
  - 日本文化特有の文脈を理解した詳細な画像説明が可能に

特筆すべき点：
- パラメータ数を増やすことなく、既存の大規模モデルを上回る性能を達成
- 特定のタスク用に最適化していないにもかかわらず、幅広いベンチマークで高性能
- 日本語と数学、日本語と視覚など、異なるドメインの知識を効果的に組み合わせることに成功

この結果は、進化的モデルマージが効率的なモデル開発手法として有効であることを示しています。特に、文化的文脈を含む複雑なタスクにおいて、単純な翻訳や既存モデルの組み合わせでは達成できない性能向上を実現しました。

---
## 5. 考察と今後の課題

本研究では、進化的手法を用いて多様なオープンソースモデルを効果的に組み合わせる一般的な手法を提案しました。この手法の主要な特徴は:

1. ユーザーが指定した能力を持つ新しい基盤モデルを自動的に作成
2. 異なるドメイン（日本語と数学、日本語と視覚など）のモデルを非自明な方法で融合
3. 人間の専門家が直感的に発見するのが難しい組み合わせパターンを発見

実験では、数学的推論が可能な日本語LLMと、文化特有のコンテンツを理解する日本語VLMの作成に成功しました。特に注目すべきは、これらのモデルが最適化対象としていなかった多くのベンチマークでも最高性能を達成し、一部の 70B パラメータモデルさえも上回る結果を示したことです。

今後の展開:

- 画像生成の拡散モデルへの応用（すでに有望な結果）
- 適切なソースモデルの自動選択
- 多様な特性を持つモデル群の進化的生成
- モデル間の相互作用を通じた集合知の創発

また、本手法は計算コストの面でも重要な意味を持ちます。基盤モデルの開発コストと必要リソースが増大する中、既存のオープンソースモデルを活用する進化的アプローチは、プロトタイプモデルの迅速な開発を可能にし、大規模な投資判断の前に実現可能性を検証する手段として有効です。

これらの結果は、進化的モデルマージが AI 開発の新しいパラダイムとなる可能性を示唆しています。

---
## 6. 制限事項

本研究のアプローチには以下のような制限事項があることを認識しています：

1. **ソースモデルの制約の継承**
2. **アライメントの欠如**
3. **評価の限界**

これらの制限は、モデルマージという手法自体の制約というよりも、より広範なモデル開発における課題を反映しています。
今後の研究では、これらの制限に対処しつつ、進化的モデルマージの可能性をさらに探究していく必要があります。特に、アライメントやロバスト性の向上は重要な課題となります。

> 🐣 ひよこ的には進化型計算の適用部分でできることが多そうだなと感じました

## 補足: DARE は必要なのか？

確定的なアルゴリズムでタスクベクトルの成分を選ぶ **TIES-Merging** に対して、一般的にはランダムでタスクベクトルの成分を削除してしまう **DARE** を使用する必然性がどれくらいあるのかについては疑問に感じました。ただし、以下の可能性についてはしっかり考察する必要があります。

1. **DARE をランダムではなく、例えばノルムの小さい方から削除している**
    - 論文中では明確に言及されていませんが、スパース化の対象が何らかの基準に基づいて選ばれている可能性があります。特に、重要度が低いタスクベクトルの成分を削除することでモデルの効率化を目指しているのかもしれません。

2. **だからこそ DARE の適用強度にあたる density を CMA-ES で探索しているのでは？**
    - Density の値を CMA-ES を用いて進化的に最適化している点を考えると、著者らも DARE の適用について慎重であることがうかがえます。CMA-ES による探索によって、DARE の適用範囲や強度が適切に制御されているのかもしれません。
   **DARE が不要であれば density が 1.0 になるはずですからね**

著者らは予備実験などで、TIES-Merging と DARE を併用した方が性能が高いことを確認しているのかもしれません。しかし、**単体使用の実験結果**や、**DARE の詳細な選択基準**が提示されていれば、より理解が進んだように感じました。これらが示されていれば、DARE の有効性をより具体的に評価することができたと思います。

> DARE の論文で DARE+TIES-Merging の性能が良いことが報告されていました
>[論文紹介: Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch](https://qiita.com/hiyoko1729/items/0b3482a3528d7d3347c4)

---
## まとめ
この論文では、進化的アルゴリズムを用いたモデル統合の新しい枠組みを提案し、その有効性を実証しました。本手法は、計算コストを抑えつつ新しい能力を持つモデルを効率的に生成できる可能性を示しています。実際の数値実験により、提案するモデルマージの有効性を確認しました。

---

## おわりに
進化的アルゴリズムをモデル統合に応用するという発想は非常に興味深く、新たなモデル構築の可能性を感じました。特に、日本語に特化したモデルが海外の大型モデルを上回る成果を出した点は、オープンソースコミュニティにとっても意義深いものですね。
ただ、論文中ではシンプルな CMA-ES を適用しているだけみたいだったので、その辺の拡張にまた取り組んでみたいところです。ではまた次の記事でお会いしましょう。

> 🐣 TIES-merging と DARE も読まないとな…