はじめに
- SakanaAI の 『Evolutionary Optimization of Model Merging Recipes』論文がすごい
- けど、仕組みと「どこまですごい!」を捉えきれていない
- どうにか理解したい!
対象論文
Evolutionary Optimization of Model Merging Recipes
大規模言語モデル(LLM)の合体を最適化するための新しいアプローチを提案した研究です。
Sakana AIの秋葉拓哉さんの解説はこちらです。
論文の重要なポイント
複数のLLMを合体して1つの強力なモデルを作る(=モデルマージ)際の2つの手法を定義している。
PS(パラメータ重みの混合)の最適化
- TIES-MergingをベースとしたDAREアルゴリズムと進化アルゴリズム(CMA-ES)を活用
DFS(レイヤーの結合)の最適化
- Indicator arrayを導入して探索空間を削減。さらにレイヤー間のスケーリング調整も最適化に組み込んでいる
用語まとめ
用語 | 説明 |
---|---|
Model Merging | 複数のモデルを1つのモデルへ合体させる技術 |
Evolutionary Algorithms | 進化の原理を用いて最適解を探索するアルゴリズム |
Merging in the Parameter Space | 複数のレイヤーが持つパラメータ配合の最適化 |
Merging in the Data Flow Space | 複数のモデルの全レイヤーから、最適なレイヤーの配置の探索 |
TIES-Merging | モデル合体の手法の1つ |
DARE | TIES-Mergingをベースとしたアルゴリズム |
Fitness | 進化アルゴリズムにおける解の評価指標 |
Indicator Array | レイヤーの選択を表現するための配列 |
Scaling Factor | レイヤー間の出力のスケーリングを調整するための係数 |
CMA-ES | 共分散行列適応進化戦略(Covariance Matrix Adaptation Evolution Strategy)の略。進化的アルゴリズムの一種で、最適化問題を解くために使用される。 |
個体 | CMA-ESにおいて、問題の解候補を表す。ここでは、パラメータ重みの混合割合を表す。 |
多変量正規分布 | 複数の変数がそれぞれ正規分布に従う確率分布。CMA-ESでは、この分布に従って個体を生成する。 |
上位n個体 | 各世代で生成された個体の中で、目的関数の評価値が高い上位n個の個体。これらを用いて次世代の多変量正規分布のパラメータを更新する。 |
MGSM | マルチモーダル言語生成モデル(Multimodal Language Generation Model)の略。テキストと画像を組み合わせて、質問に回答するモデル。 |
VQA | Visual Question Answeringの略。画像を見て質問に回答するタスク。 |
ROUGEスコア | 自動要約の評価指標の一つ。生成された要約と参照要約との間の n-gramの一致度を測定する。 |
論文を一緒に読む
解説が本当にありがたいです🙏
技術ポイント
モデルマージの手法として、PSとDFSの2つが説明されています。
PS(パラメータ重みの混合)
- 進化的アルゴリズムであるCMA-ES(共分散行列適応進化戦略)を使用して、最適なパラメータ重みの混合を探索。
- 多変量正規分布に従って個体(重みの混合割合)を生成し、上位n個体を抽出して多変量正規分布のパラメータを更新する過程を繰り返す。
- 目的関数は各タスクのスコア(MGSMの精度、VQAのROUGEスコアなど)。
DFS(レイヤーの結合)
レイヤー自体をつなぎ合わせる手法。
レイヤーの並び替え
- 合計M層のベースとなる2モデルからT層のモデルを作る場合、$(M+1)^T$の組み合わせを探索する必要がある。
- 同じ層の繰り返しや層間の順序を入れ替えるとパフォーマンスに悪影響があることがわかったため、探索空間を$2^T$に制限できる(2はモデルの数)。
レイヤー間の結合
- 異なるモデルからレイヤーを持ってきても、そのままでは上手く動かない。
- レイヤーiとjをつなぐスケーリングを$W_{ij}$($W \in R^{M \times M}$)とし、これも進化的探索で最適化する。
- $M^2$は大きすぎるため、FFNで近似: $W_{ij} = \pi_{\theta}(i,j,t)$、パラメータ$\theta$を探索する($t \leq T$)。
- これもCMA-ESを使って探索。
PSとDFSの組み合わせ
PSとDFSを同時に行うと探索空間が広くなりすぎる上、性質が異なるため扱いにくいとのことで、まずPSマージ(探索)を適用して複数のマージモデルを生成し、次にDFSマージ(探索)を適用して最終的なモデルを生成するアプローチが提案されています。
関連
モデルのマージ
モデルのマージは、2つ以上のLLMを1つのモデルに結合する手法です。
モデルマージの先行研究まとめ
- モデルのマージ自体は実は古くから行われてきた
- 画像生成モデルで特にマージしたモデルが一般的に使われるように
- LLMのマージ自体も先行研究がある
- Open LLM Leaderboard の上位モデルのほとんどは、言語モデル愛好家のコミュニティによって作られたマージモデルで徐々に占められてきている
用語 | 説明 | カテゴリ |
---|---|---|
mergekit | 2つ以上のLLMを1つのモデルに結合するためのツールキット。 | ツール |
SLERP | Spherical Linear Interpolation。2つのベクトル間を滑らかに補間する手法。方向の変化を重視。 | マージアルゴリズム |
TIES | 複数のタスク固有モデルを1つのマルチタスクモデルに効率的にマージする手法。冗長性の削減と不一致の解消を行う。 | マージアルゴリズム |
DARE | TIESに似たアプローチだが、ファインチューニングされた重みをランダムにリセットし、重みを再スケーリングする点が異なる。 | マージアルゴリズム |
Passthrough | 異なるLLMのレイヤーを連結してエキゾチックな数のパラメータを持つモデルを作る手法。Frankensteinモデルとも。 | マージアルゴリズム |
frankenmerges / Frankenstein models | Passthroughにより、複数のLLMを組み合わせて作られた大規模なモデル。 | モデルタイプ |
Open LLM Leaderboard | HuggingFaceが提供するオープンソースのLLMのパフォーマンスを比較するリーダーボード。 | リソース |
density (TIES/DARE) | マージ時に保持するパラメータの割合。残りはベースモデルから取得される。 | パラメータ |
weight (TIES/DARE) | マージ時の各モデルの重み付け。TIESでは自動で正規化される。 | パラメータ |
normalize (TIES) | パラメータの重みの合計が1になるように正規化するかどうか。 | パラメータ |
int8_mask (DARE) | 8ビット整数クオンタイズを適用するかどうか。メモリ使用量を削減できる。 | パラメータ |
lazy_unpickle (mergekit) | 実験的な機能。メモリ使用量を削減するためにモデルを遅延ロードする。 | パラメータ |