LoginSignup
3
2

Evolutionary Optimization of Model Merging Recipesを動かしてみる

Posted at

はじめに

この記事では、以下のLLMの進化的マージの論文で公開されている評価コードを動かしてみた結果を書きます。

Evolutionary Optimization of Model Merging Recipes

セットアップ

とりあえずローカル環境で試してみました。
環境は以下です。

  • Mac OS X Ventura 13.3.1
  • Python 3.9.9

インストール

git clone https://github.com/SakanaAI/evolutionary-model-merge.git
cd evolutionary-model-merge

fastextからlid.176.ftzをダウンロードしてディレクトリに配置してパスを環境変数LID176FTZ_PATHに入れる。
以下のコマンドで対応

curl https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.ftz -o ./lid.176.ftz
export LID176FTZ_PATH=./lid.176.ftz

そのまま以下でライブラリインストール

pip install -e .

CUDAなしのpytorchでもいけないかなーとやってみたらやはりCUDAのエラー(python 3.10 以上にしろというエラーもあった)

OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.

ということで以下でGoogle colabのGPU環境で実行します。

colab環境

colabの環境は以下でした。

  • Ubuntu 22.04.3 LTS
  • Python 3.10.12

ローカルでやったものと同様のセットアップを実行して、A100環境で動きました。
※shisa-gamma-7b-v1というモデルだけ、githubのconfigのままではモデルパスのエラーが出たため、以下のように修正

model:
  target: evomerge.CausalLMWithvLLM
  params:
+    model_path: augmxnt/shisa-gamma-7b-v1
-    # model_path: augmxnt/shisa-gamma-7b-v1
-    model_path: /home/mkshing/.cache/huggingface/hub/models--augmxnt--shisa-gamma-7b-v1/snapshots/49bf4a58453d191845668b8ff17e4b8f0e9ccae6/
    # model_kwargs:
    #   dtype: bfloat16
    template: ja-alpaca-cot
  
eval:
  target: evomerge.eval.JaMGSM

結果

現段階(2024/05/11)では、LLMの評価は以下の7つを試すことができます。

リポジトリで公開されているMGSM-JAの正解率の評価を実行した結果が以下です。

モデル Abel-7B-002 Arithmo2-Mistral-7B shisa-gamma-7b-v1 WizardMath-7B-V1.1 EvoLLM-JP-A-v1-7B EvoLLM-JP-v1-7B EvoLLM-JP-v1-10B
MGSM-JA 正解率 0.316 0.248 0.088 0.448 0.508 0.564 0.536
MGSM-JA 日本語 正解率 0.316 0.248 0.088 0.2 0.508 0.532 0.528

なぜかEvoLLM-JP-v1-10Bの正解率よりEvoLLM-JP-v1-7Bの正解率の方が高くなってしまいました。(論文では、10Bのモデルが最も正解率が高くなっています)

ちなみにEvoLLM-JP-v1-7BEvoLLM-JP-A-v1-7BEvoLLM-JP-v1-10Bの違いは以下です。

  • EvoLLM-JP-v1-7B:3つのモデル(Abel-7B-002shisa-gamma-7b-v1WizardMath-7B-V1.1)をParameter space(PS)でマージしたモデル(WizardMath-7B-V1.1を使用しているためオープンソースではなく MICROSOFT RESEARCH LICENSE TERMSライセンス)
  • EvoLLM-JP-A-v1-7B:Apache License, Version 2.0でリリースするために、オープンソースライセンスのモデルのみで作成されたEvoLLM-JP-v1-7Bと同等の性能のモデル(Abel-7B-002shisa-gamma-7b-v1Arithmo2-Mistral-7Bのマージ)
  • EvoLLM-JP-v1-10B:Parameter space(PS)とData flow space(DFS)でマージされたモデル(Abel-7B-002shisa-gamma-7b-v1WizardMath-7B-V1.1のマージ)

上記の3つのモデルはマージの仕方と、使っているモデルの違いがあります。

7Bの二つのモデルはParameter space(PS)におけるマージ、つまりアーキテクチャは元のMistralから変えずに重みを加重平均をとったような形でマージしています。

10Bのモデルでは、PSのマージに加えてData flow space(DFS)におけるマージを行っています。
DFSにおけるマージとは、別々のモデルのレイヤーを重ねる形でマージしていく手法で、論文の図がわかりやすいので以下に載せておきます。

スクリーンショット 2024-05-11 19.30.45.png

今回試したcolabは以下です。全てのセルを実行するだけで評価できます。

まとめ

進化的マージでは、PSとDFSというマージ手法がある。
論文ではMGSM-JAの正解率において、PSとDFSを両方用いている10Bのマージモデルが最も正解率が高いが、公開されている評価コードだと7Bの方が高くなった。

公開されている2つの7Bのマージモデルのうちでは、 EvoLLM-JP-v1-7Bの方が正解率が高くなった。
しかし、EvoLLM-JP-A-v1-7Bは正解率が低いがApache License, Version 2.0なので商用利用が可能

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2