はじめに
AIのモデルを一から訓練するには、GPU費用もデータセットも大量に必要です。
ワイドショーを見ていてSakana AIが気になったので、解説ページを読んでみました。
進化的モデルマージとは
優秀なもの同士を掛け合わせて、さらに優秀なものを作る方法です。
これまで人間の勘や経験で行っていたところを、プログラムで膨大な組み合わせを試し、良いものを選んでいきます。
アプローチは2つあります。
1つ目:レイヤーのレベルでマージ
複数の既存モデルのレイヤーを組み合わせて、最適な組み合わせを探します。
人間がやろうとすると勘や経験が必要な部分を、膨大な試行で見つけ出します。
画像生成モデルで例えると、構図を決める層、服装や背景や色を決める層、実際に描き込む層を、モデルに関係なく組み合わせていくイメージです。(実際には役割が綺麗に分かれているわけではなく、モデルごとに異なることもあります)
2つ目:重みのレベルでマージ
複数のモデルの重みを数値的に混ぜ合わせて、最も優秀なものを探します。
レイヤーに関係なく、モデルAとモデルBのあいのこが生まれるイメージです。
混ぜ方は無限にあるため、これも数多く試すことで、進化的に良い配合を見つけます。
2つを混ぜると
新しいモデルCに入れるレイヤーを、3通りから選べるようになります。
モデルA 新しいモデルC モデルB
[A-1] ──────→ [C-1] ← Aから取ってくる
[C-2] ←────────── [B-2] ← Bから取ってくる
[A-3] ──────→ [C-3] ←────────── [B-3] ← AとBを混ぜる
これを人間の勘ではなくプログラムで膨大に試すことで、速いランナーが生まれるように、生き物の進化のように優秀なモデルが生まれます。
結果
日本語モデル1つと数学モデル2つを親にして、その子供や孫を作っています。
日本語の数学テスト
| モデル | 中身 | サイズ | スコア |
|---|---|---|---|
| Shisa Gamma | 日本語(親) | 7B | 9.6 |
| WizardMath | 数学(親) | 7B | 18.4 |
| Abel | 数学(親) | 7B | 30.0 |
| 重みマージ | 子 | 7B | 52.0 |
| レイヤーマージ | 子 | 10B | 36.4 |
| 両方 | 孫 | 10B | 55.2 |
| 既存の70Bモデル | 比較用 | 70B | 13.6〜18.0 |
| GPT-3.5 | 比較用 | - | 50.4 |
親にもGPT-3.5にも勝っています。
日本語の総合テスト
| モデル | 中身 | サイズ | 平均 |
|---|---|---|---|
| Shisa Gamma | 日本語(親) | 7B | 66.1 |
| 重みマージ | 子 | 7B | 70.5 |
| レイヤーマージ | 子 | 10B | 53.2 |
| 両方 | 孫 | 10B | 66.2 |
| 既存の70Bモデル | 比較用 | 70B | 64.5〜71.5 |
日本語の総合テストでも良い結果でした。
ただし、数学に一番強い孫のモデルは、総合では少し下がっています。
思ったこと
0から学習するよりは桁違いに安いと思います。
膨大なパターンを組み合わせて評価するには時間と資源がかかるので、個人では大変ですが、試せなくはなさそうです。
私も以前、画像の中の指定したものを消すためのチューニングをしたことがあります。
もしまた何かの用途でAIを調整するなら、コストはかかりますが、進化的マージを試してみるのも面白そうだと思いました。
AIの世界には「The Bitter Lesson」(Rich Sutton)という有名な考え方があり、チェスでも人間が知識を作り込むより、コンピュータに大量に探索させた方が結局勝った、という話があります。
これまでピンときていなかったのですが、自分も学習したことがあるモデルを良くする方法として、ここまで身近なところに来たんだと実感しました。
考えてみればシンプルな話ですが、人間がどれがいいかを考えるより、自動で交配させる方が進化は早く、勘や経験に頼らずにより良い品質のものができる点が興味深かったです。
今後どういうアプローチが優れているかを考えるときには、AIに任せて、大量のアプローチを組み合わせて作らせてみるのもいいなと思いました。
出典
Sakana AI「進化的アルゴリズムによる基盤モデルの構築」(2024年3月21日)
https://sakana.ai/evolutionary-model-merge-jp/
元論文:Akiba et al., "Evolutionary Optimization of Model Merging Recipes", arXiv:2403.13187 (2024)
https://arxiv.org/abs/2403.13187
