基本的なモデルマージについて

公開日:

更新日:


こんにちわ、なるみんと申します。



先日、でょさんと一緒に公開した、SE_V1_Aをたくさんの人に使っていただき大変うれしく思います♪

今回はStable Diffusion WebUI標準機能であるCheckpoint Merger(Checkpointの統合)で基本的なマージ方法を解説したいと思います。


・超簡単に解説しますと、
Aにモデルをセットして
Bにもモデルをセットして

Multiplier (M) でAとBどちらに寄せたいか(0.3ならAが70%、Bが30%)設定して

Mergeを押すとマージができます。

ね?簡単でしょ?おわり!
…だとちょっと寂しいので、もう少し詳しく説明します。

・詳しい解説です。



Primary model (A)にベースになるモデル、
Secondary model (B)に混ぜたいモデルをセットします。
場合によってはTertiary model (C)もセットします。

Custom Name (Optional)で名前を決めます(空白でも大丈夫です)

Multiplier (M)で比率を決めます。AとBの2つだけでしたら既定の0.3は
Aが70%、Bが30%のモデルが出来上がります。

Interpolation Method
No interpolation
マージは行わず、Aのモデルに対してモデル変換(ckpt、safetensors、fp16)とVAE同梱を可能にするモードです。

Weighted sum
補間には重み付けされた合計が使用されます。A、Bの2つのモデルを使用し結果は、A * (1 - M) + B * Mとして計算されます。
今回は既定のWeighted sumで行います。

Add difference
BとCの2つのモデルの差を、最初のモデルAに加算されます。A、B、Cの3つのモデルが必要。結果は、A + (B - C) * Mとして計算されます。

Checkpoint format
ckpt→NMKD Stable Diffusion GUIなど別のAI画像生成ソフトでも簡単に使用可能で汎用性が高い
safetensors→NMKD Stable Diffusion GUIで使用するにはコンバートが必要、WebUIだと読み込みの高速化やモデルの安全性があがる(マルウェアの同梱リスクが低くなる)
と特徴があるのでよくわからない場合はckptのままで大丈夫です。

Save as float16にチェックを入れるとfp16で保存さモデル容量の削減ができますが、float32と比較するとほんのごくわずか生成結果が異なります。

Bake in VAEで好きなVAEを同梱することができます。

Copy config fromはA, B or Cのまま
Discard weights with matching nameも空白のままにします。

Mergeを押すとマージができます。

基本的なマージの解説は以上になります。
自分の好みのモデルができるとAIイラストの幅も広がると思います♪
Stable Diffusion WebUIの拡張機能にMerge Block Weighted(階層マージ)というのもあるのですが、こちらはめちゃくちゃ奥が深いのでまた、別の機会にしたいと思います。
ありがとうございました~!