はじめに
この記事では、以下の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つを試すことができます。
- GAIR/Abel-7B-002
- upaya07/Arithmo2-Mistral-7B
- augmxnt/shisa-gamma-7b-v1
- WizardLM/WizardMath-7B-V1.1
- SakanaAI/EvoLLM-JP-A-v1-7B
- SakanaAI/EvoLLM-JP-v1-7B
- SakanaAI/EvoLLM-JP-v1-10B
リポジトリで公開されている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-7B
、EvoLLM-JP-A-v1-7B
、EvoLLM-JP-v1-10B
の違いは以下です。
-
EvoLLM-JP-v1-7B
:3つのモデル(Abel-7B-002
、shisa-gamma-7b-v1
、WizardMath-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-002
、shisa-gamma-7b-v1
、Arithmo2-Mistral-7B
のマージ) -
EvoLLM-JP-v1-10B
:Parameter space(PS)とData flow space(DFS)でマージされたモデル(Abel-7B-002
、shisa-gamma-7b-v1
、WizardMath-7B-V1.1
のマージ)
上記の3つのモデルはマージの仕方と、使っているモデルの違いがあります。
7Bの二つのモデルはParameter space(PS)におけるマージ、つまりアーキテクチャは元のMistralから変えずに重みを加重平均をとったような形でマージしています。
10Bのモデルでは、PSのマージに加えてData flow space(DFS)におけるマージを行っています。
DFSにおけるマージとは、別々のモデルのレイヤーを重ねる形でマージしていく手法で、論文の図がわかりやすいので以下に載せておきます。
今回試した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なので商用利用が可能