モデルマージングの例
これらのワークフローの背後にある考え方は、複数のモデルをマージして複雑なワークフローを作成し、それらをテストして結果に満足したらCheckpointSaveノードをアンミュートしてチェックポイントを保存することです。デフォルトでは、CheckpointSaveノードはチェックポイントをoutput/checkpoints/フォルダに保存します。
これらのノードは次の場所にあります: advanced -> model_merging
最初の例は、2つの異なるチェックポイント間のシンプルなマージの基本的な例です。
これらの画像をComfyUIでロードして、完全なワークフローを取得できます。
ComfyUIでは、保存されたチェックポイントにはそれを生成するために使用された完全なワークフローが含まれているため、画像と同様にUIにロードして、それを作成するために使用された完全なワークフローを取得できます。
この例は、3つの異なるチェックポイントをマージする例で、unetの入力、中間、出力ブロックが異なる比率を持つシンプルなブロックマージングを使用しています。
Lorasはモデルの重みへのパッチであるため、モデルにマージすることもできます。
また、モデルの重みを引いたり加えたりすることもできます。この例では、非インペイントモデルからインペイントモデルを作成するために使用される式: (inpaint_model - base_model) * 1.0 + other_model
を使用しています。他のUIでの”Add Difference”オプションに慣れている場合、ComfyUIではこのように行います。
重要な点として、モデルはハードウェアでの推論に使用される精度でマージされ保存されるため、通常は16ビット浮動小数点になります。32ビット浮動小数点でマージを行いたい場合は、ComfyUIを次のオプションで起動してください: —force-fp32
高度なマージング
CosXL
ここでは、通常のSDXLモデルからマージングを使用してCosXLモデルを作成する方法の例を示します。必要なものは、CosXL base model、SDXL base model、および変換したいSDXLモデルです。この例では、albedobase-xlを使用しました。