いちいちモデルマージせずにモデルマージする方法(ComfyUI)

モデルマージとは

モデルマージとは、異なる2つ以上のモデルをそれぞれの比率で統合し、新たなモデルを作成するプロセスです。

SD1.5の時代は階層マージも積極的に行われていましたが、そのあたりは私がSD1.5をあまり使いこむことなくXLに移行したため、誤った情報を伝えそうなので割愛します。

この手法は、各モデルの長所を活かし、短所を補うことで、より精度の高い予測や分析が可能になることを目指しています。例えば、あるモデルがイラストの背景部分に高い精度を示す一方で、別のモデルがキャラクターの表情などで高い結果を出す場合、これらを適切な比率で組み合わせることで、全体としての性能を向上させることができます。

で、出来上がったマージモデルを○○Mixなどの名前で流通させているものが多くありますし、公開せず自分だけのモデルを作る人もいます。

従来のモデルマージのやり方

モデルマージというと、A1111やForge環境の皆様はSuperMergerをお使いだと思います。私もかつてはそうでした。
このやり方では、一度Safetensorsファイルをモデルデータのフォルダに書き出す必要があります。

ComfyUIのモデルマージのやり方

対して、今回紹介する方法は、随時モデルマージしながら使う方法です。具体的なノードの組み合わせについては、図の通りです。

モデルマージ6段とLoRA接続

ComfyUIでは、拡張機能なしで、ModelMergeSimple, ModelMergeSDXLなどのモデルマージ機能、CLIPMergeSimpleなどCLIPのマージ機能を持ったノードがあります。

ModelMergeSimple

ModelMergeSimpleは単純に2つのモデルデータのMix比率をratioという値で示します。1.0だとmodel2の要素は残さず、0.5だと半々、0.8だとmodel1の要素は2割になります。

階層ごとに何があるかわからないSDXLのモデルマージで深みにはまってみたい方はModelMergeSDXLでチャレンジしてみる

CLIPMergeSimple

CLIPMergeはSimpleでよいと思います。
興味があれば調べてみてください。

つなぎ方

3つ以上のモデルをマージする場合は、最初の2段のModelMergeSimpleから出ているmodel出力をmodel1,追加するmodelのmodel出力をmodel2につなぎます。言葉にするとわかりづらいので、図を参考にしてみてください。

注意事項

メモリ容量の注意

RAMでの計算が多くなるため、RAMが64GB未満の方は、3段~4段くらいのモデルにとどめておいたほうが良いです。

ratioについて

ComfyUIでモデルマージをするにあたり、
モデルを1つずつつなぎ合わせて、
ノードもfixedにしてプロンプトも固定で、
最適解がでるようにratioをしっかり検証しましょう。

食い合わせの悪いモデルをマージさせると、
かなり簡単に絵が破綻します。

ネガティブプロンプトについて

モデルマージ前後で同じプロンプトを使っていると、マージを重ねるたびに徐々におかしくなっていきます。特にネガティブプロンプトは最小にしたほうがよさそうです。
モデルマージをした前後で絵が変になったと思ったらratioかネガティブプロンプトを見直して、それでもだめならそのモデルはマージから除外しましょう。