見出し画像

SuperMerger使いたい? #1 基礎編

単純マージや階層別マージに慣れてきたし、そろそろSuperMergerを使いたい! けど調べても使い方が出てこないし、どうしたら...

そんな声がちらほら聞こえ始めたところ、某所より使い方を記事にしろとお達しがありましたので、メモ程度の内容ではありますが、自分なりのSuperMergerの使い方について紹介したいと思います。

今回は基礎編ということで、SuperMergerの機能紹介とUIの解説をします。
実際の使用方法については次回から紹介します。

また、本記事は以下の方に向けた内容となっています。

  • Checkpoint Merger や Merge Block Weighted をある程度使用したことがある。

  • SuperMergerの存在は知ってるけど、何がいいの?

  • そもそもSuperMergerの使い方がよくわからん!

といった感じなので、既に使用中の方にとっては参考にならないかもしれません...予めご了承ください。



(※注意)
あくまで自己流でのSuperMergerの使い方を記載するものであり、間違った内容やバージョンアップによる記載事項との差異が含まれている可能性があります。
また、マージのレシピ紹介や使用モデルを推奨するものでもありません。
もし記載や内容に誤りがある場合は、優しく指摘していただけると幸いです。


記事公開時 拡張機能バージョン
SuperMerger:19d7bdef (Sun Apr 16 14:54:01 2023)




1.SuperMergerの機能紹介

まずはSuperMergerで何ができるのか、ざっくり以下の通りです。

  • 単純マージ

  • 階層別マージ

  • LoRAマージ

  • 階層マージを越えた階層マージ(エレメンタルマージ)


そして最大の特徴である「保存せずにモデルをマージする」という機能があります。

どういうことかと言いますと...
以下、モデルのマージと結果の確認(画像生成)を3回行う場合の例を記載します。

Checkpoint MergerまたはMerge Block Weightedで3回マージを実施した場合
① モデルをマージ(保存)
② モデル切り替え
③ t2iで画像生成
④ 比率変えてもう一回マージ!(保存)
⑤ モデル切り替え..
⑥ t2iで画像生成..
⑦ 比率変えてもう一回マージ!!(保存)
⑧ モデル切り替え...
⑨ t2iで画像生成...
⑩ 2番目の結果がよかったからこれにしよう...(ハァ..ハァ..

SuperMerger で3回マージを実施した場合
① モデルをマージしつつそのまま画像生成(保存しない)
② 比率変えてもう一回マージ&画像生成!(保存しない)
③ 比率変えてもう一回マージ&画像生成!!(保存しない)
④ 2番目の結果がよかったから保存しよう!(2番目の設定呼び出して保存)

はい。明らかに効率が違いますね。
これまでの Checkpoint Merger や Merge Block Weighted では、マージ結果の確認にモデルの保存・モデルの読み込み・t2iで画像生成を実施する必要がありました。

しかしSuperMergerでは、マージの都度モデルを保存する必要が無くマージしたモデルでそのままt2iの画像生成まで一括実行可能で、さらに気に入った比率設定を後から呼び出してマージモデルを保存できるといったように、作業の手間や不要なHDD・SSDの消耗を大幅に抑えることができます。

もちろん、上記以外にも様々な機能がありますが、詳細はまた別記事にて。
機能の紹介は一旦この程度にして、UIの解説に移りましょう!


2.SuperMergerのUI解説

とりあえず操作したい気持ちは抑えて、まずはUIを見ていきます。

と、その前に拡張機能のインストールをしておきましょう。
※インストール方法は省略


それではUIの解説をしていきます。以下、全体図。

上から順に見ていきましょう。


Model A、Model B、Model C
マージするモデルを選択します。
Model Cは下記「Merge Mode」の「Weight sum」以外で使用されます。
(Weight sumを実行する場合、Model Cを選択していても無視されます。)


Merge Mode
- Weight sum:A*(1-alpha)+B*alpha
Model AとModel Bをalpha値の割合でマージします。
(Checkpoint MergerのWeight sumと同等の機能)

- Add difference:A+(B-C)*alpha
Model BとModel Cの差分にalpha値をかけたものをModel Aにマージします。
(Checkpoint MergerのAdd differenceと同等の機能)

- Triple sum:A*(1-alpha-beta)+B*alpha+C*beta
Model A、B、Cの3つのモデルを上記計算で同時にマージします。
(有効に働くかはわからないとのこと)

- sum Twice:(A*(1-alpha)+B*alpha)*(1-beta)+C*beta
Weight sumを2回行います。
1回目:Model AとModel Bをalpha値の割合でマージ(=Model AB)
2回目:Model ABとModel Cをbeta値の割合でマージ


Calcutation Mode
- normal
設定されたalpha値、beta値の比率を使用し、通常のマージを行います。

- cosine
設定されたマージ比率を中心として、コサイン類似度を用いてマージによるロスをなくすような比率計算を行い、その比率でマージを行う、とのこと。
詳しくはこちら↓


use MBW
Merge Block Weightedの拡張機能と同等の機能を使用できるようになります。
チェックを付けた場合、右側のalpha、betaの代わりに、画面最下部の「Weights Setting」の比率設定が使用されます。
(右側のalpha、betaの値は使用されません。)


alpha, beta
Merge Modeの比率で使用する値です。
use MBW にチェックが入っていた場合は無視されます。


Merge!
モデルのマージを実行します。
「save settings」のチェックによりモデルの作成方法が変わります。
マージ実行後はマージ結果が保持された状態となります。


Merge&Gen
モデルのマージ実行と画像生成を一括で行います。
生成した画像は画面右側に表示されます。
生成する画像のプロンプトは「txt2img」タブ側で入力したものが使用されます。
なお、「txt2img」タブ側でHires. fix、Batch sizeを有効にしても適用されません。
有効にする場合はSuperMerger側で設定する必要があります。
(Hires. fixの有効化については後述)


Gen
「Merge!」または「Merge&Gen」実行後に保持されたマージ結果を用いて、画像生成を行います。


save settings
- save model
「Merge!」「Merge&Gen」を実行後、モデルを保存します。
チェックを付けずに実行した場合は、モデルを保存しません。
すでに同じ名称のモデルがある場合は、保存されません。
ただし、overwriteにチェックが入っている場合は、上書きされます。

- overwrite
Custom Name (Optional)に入力した名前のモデルに上書きします。
間違えて上書きしないように注意しましょう!

- safetensors
safetensors形式でモデルを保存します。
チェックを付けずにマージした場合は、ckpt形式になります。

- fp16
fp16形式でモデルを保存します。

- save metadata
保存するモデルのメタデータにマージ情報(マージ元モデルのハッシュ値やMerge Mode等)を含めます。


write merged model ID to
- image
「Merge&Gen」実行後、生成される画像の左上にマージモデルのIDを付与します。
マージモデルのIDは、下記「merge from ID」で使用します。

- PNG info
「Merge&Gen」実行後、生成される画像のメタデータにマージモデルのIDを付与します。


Custom Name (Optional)
保存もしくは上書きするモデルの名称を指定します。
入力がない場合はマージに使用したモデル名を組み合わせた名称で保存されます。


merge from ID、Set from ID(-1 for last)
「merge from ID」にマージモデルのIDを入力後、「Set from ID」ボタン押下で該当するIDのマージ情報を呼び出します。
IDはモデルのマージ実行毎にマージ情報と共に自動で付与され、履歴として残ります。
履歴は「History」タブにて確認できます。



Hires Fix, Batch size
画像生成時のHires Fix、Batch sizeを設定します。
設定方法は「txt2img」と同じです。
「txt2img」タブ側のHires. fix、Batch sizeを有効にしても適用されませんので、こちらを有効にしてください。


Elemental Merge
階層マージを越えた階層マージ。
階層マージで使用される25の階層には、それぞれ複数の要素が含まれています。
Elemental Mergeでは、その要素ごとに比率を変更することができます。
気が向いたら解説するかも(遠い目)
詳しくはこちら↓



X type、Y type
「txt2img」の「X/Y/Z plot」に似た機能です。
Sequential Merge Parametersに「X type:シード値、Y type:マージ比率」といった指定で実行すると、モデルを作成せずに同じseedで異なるマージ比率によるモデルの画像生成テストが実行できます。


Sequential XY Merge and Generation
設定したX type, Y typeにより、モデルのマージと画像生成を実行します。


Stop XY
Sequential XY Merge and Generationを停止します。


Reserve XY Plot
マージ設定をXYプロットの実行予約として登録します。
予約した情報は後述の「Reservation」にて確認できます。


Weights Setting
use MBWにチェックした場合に適用される設定の編集ができます。

- weights for alpha, base alpha,IN00,IN02,...IN11,M00,OUT00,...,OUT11
alphaに該当する階層マージの設定です。
直接数値を入力するか、下部のスライダーを調整後、「set to alpha」ボタン押下で値を更新します。
※拡張機能の「Merge Block Weighted」と違い、先頭にbaseの値が追加されていますので、Merge Block Weightedで使用していた設定を移植する場合は注意してください。

- set to alpha
下部のスライダーを調整後、ボタン押下で「weights for alpha~」の値を更新します。

- read from alpha
「weights for alpha~」に入力した数値をスライダーに反映させます。

- weights,for beta, base beta,IN00,IN02,...IN11,M00,OUT00,...,OUT11
betaに該当する階層マージの設定です。使用方法はalphaと同じです。

- set to beta
下部のスライダーを調整後、ボタン押下で「weights for beta~」の値を更新します。

- read from beta
「weights for beta~」に入力した数値をスライダーに反映させます。

- set to X
設定した数値をX typeに反映させます。


Weights Presets
階層別マージ比率のプリセットの編集ができます。
ここで編集したプリセットは、X type、Y typeの設定に使用できます。

- Reload Presets
プリセットの一覧を再読み込みを行います。

- Reload Tags
プリセットのタグ(プリセット名)一覧を再読み込みします。

- Save Presets
プリセットの一覧の編集・追記状態を保存します。

- Open TextEditor
プリセットの情報が記載されたテキストファイルを開きます。


Reservation
XYプロットの予約リストの表示、登録、実行、リストから削除ができます。

- Reserve XY Plot
マージ設定をXYプロットの実行予約として登録します。

- Reload List
ボタン下部の予約リストの表示を更新します。

- Start XY plot
予約したXYプロットを実行します。

- Delete list(-1 for all)、Delete num
「Delete num」で指定した番号の予約をリストから削除します。


Current Cache、Reload Cache List
使用したことがないのでわかりません。
詳細がわかる方いたら教えてください!

unload model
マージ実行後のモデルの保持状態を解除します。
これを実行するか、画面最上部の「Stable Diffusion checkpoint」でモデルの切り替えを行わない限り、マージ実行した時のモデルが常に使用中の状態になります。
その為、マージ実行後に「txt2img」タブ側で画像生成を行うとそのままマージ後のモデルが使用されますので、注意してください。



3.おわりに

今回はここまでとします!
LoRAの画面とかまだ残っていますが、それもまた後日...
そして、正直なところこれを見てやってみたいと思う方はいないんじゃないかと心配しております...が、次回からは実践編ということでマージの方法を紹介していきたいと思いますので、どうかお付き合い頂ければと思います。

...文章ばかりで味気ないので、最後にうちのメイドさんを貼っておきます。
それでは。