MENU

【mergekit】モデルをマージして 効率的にモデル作成

mergekitはモデル作成に使えるオープンソースです。

モデルのパラメーターの重みをベースに割合加算してくっつけることができます。

目次

手順

GitHub
GitHub - arcee-ai/mergekit: Tools for merging pretrained large language models. Tools for merging pretrained large language models. - arcee-ai/mergekit

Installationセクションの通り、クローンしてpip install -e .するだけで使えます。

インストールが終わったら直下でmergekit-yaml path/to/your/config.yml ./output-model-directory [–cuda] [–lazy-unpickle] [–allow-crimes] [… other options]で動かせます。

サンプルyamlはexamples直下にあります。使いやすそうだったのでbio-merge.ymlを使いました。

models:
  - model: Elizezen/LewdSniffyOtter-7B
    parameters:
      density: 0.6
      weight: 0.6
  - model: Local-Novel-LLM-project/Vecteus-v1
    parameters:
      density: 0.4
      weight: 0.4

merge_method: ties
base_model: Local-Novel-LLM-project/Ninja-V3
parameters:
  normalize: false
  int8_mask: true
dtype: float16

今回はNinja-V3をベースに適当に探してくっつけてみました。

アーキテクチャが違っていてもできるようですが、無難にそろえたほうがいいかと思います。

見ればわかりますがmodelにはhugginfaceのモデル名を入れてください。(この場合はswdq/Ninja-V3-nsfw-enhance)

アーキテクチャはconfig.jsonを見ればわかるようになっています。今回はMistralForCausalLMで揃えました。

スクリプトが終われば指定ディレクトリにhuggigfaceにそのまま上げれる形で出てきます。

今回の結果は以下の通りです。

あわせて読みたい
swdq/Ninja-V3-nsfw-enhance · Hugging Face We’re on a journey to advance and democratize artificial intelligence through open source and open science.

まとめ

アーキテクチャさえ同じであればモデルマージで微調整を簡単にできるようになりました。

汎用モデルにコーディング専用モデルをくっつけたり、nsfwモデルをくっつけたり、などが気軽に試せるのは利点ですね。割とコンテキスト長がちょうどいいモデル帯がなぜかあまりないので3万コンテキスト長あたりのモデルにくっつけてファインチューニング用基礎モデルを作ってみようかなーとか考えてます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

プログラミングをそれとなく続けてきて歴だけは10年。
コーディングは基本的な命令文とクラスの概念は理解。
あとはライブラリなどを使ってそれとなく。
最近はAI関連を触ってます。

目次