Checkpoint Merger

Last-modified: 2025-02-16 (日) 10:45:28

Stable Diffusion web UIが標準で備えている機能の一つ。

  • モデル(.safetensors/.ckpt)ファイルを混ぜ合わせることが出来る。
  • モデルに他のVAEファイルをbake(焼き込む、つまり内蔵)することが出来る。

Checkpoint Merger実行結果メモ用

項目解説

Primary model (A)

Secondary model (B)

Tertiary model (C)

合成素材にするモデル達。
何はともあれAの指定は必須である。
BやCの指定が必要になるかどうかは、後述のInterpolation Methodの選択によって変わる。

🔃を押すと、モデルリストの表示が更新される。
モデルフォルダへ新しいモデルを追加した場合等に利用する。

Custom Name (Optional)

結果として作成されるモデルファイルの名前を入力する欄。
(Optional) とある通りで、入力は必ずしも必要ではない。
未入力の場合はABCのモデル名や割合に基づいて自動的に命名される。

例:

0.7(aaaa) + 0.3(bbbb).safetensors

ただしInterpolation MethodにNo interpolationを選択した場合は例外で、

要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。

等のエラーメッセージが表示される。
同名のファイル(モデルAのこと)が既に存在しており、上書きに失敗するからだ。
従って、No interpolationを選ぶ場合には、何らかの新しい名前を入力する必要がある。

また拡張子はこの欄の入力に含めないほうが良い。
後述の「Checkpoint format」の指定内容に基づいて、Checkpoint Mergerが自動的に書き足してくれるからだ。
自分で拡張子まで書くと、「hogehoge.safetensors.safetensors」のように二重になる、なった。

Multiplier (M) - set to 0 to get model A

複数のモデルを混ぜ合わせる際の割合を制御する値。デフォルト0.3。
この値がどういう使われ方をするかは、後述のInterpolation Methodによる。

Interpolation Method

No interpolation

補間なし。基本的にAのモデルがそのまま出力される。

  • ファイル形式(.safatensors/.ckpt)を変更したい
  • fp16で保存し直したい
  • 他のVAEを内蔵したい
  • モデルのメタデータを編集したい

などの場合に利用する。

Weighted sum

2つのモデルを混ぜ合わせる。
得られる結果は A*(1-M)+B*M となる。
※通常なんとなくM=元(A)の割合と思いがちだが、実際にはAをどれだけ消すかの割合なことに注意

Add difference

3つのモデルを混ぜ合わせる。
得られる結果は A+(B-C)*M となる。

Checkpoint format

ckpt

2022年の夏から年末にかけて使われていた、旧形式。

safetensors

現在主流になっている形式。おすすめ。

(関連) モデルについて#拡張子が色々あるけど、どれを選べば良いの?

Save as float16

ONにするとモデルをfp16で保存する。
デフォルトはOFFになっているが、ONにすることをおすすめする。
OFFではファイルサイズが大きくなってしまう場合がある。

(関連) モデルについて#同じモデルでも複数(fp16,fp32,pruned)あるけどどれがいいの?

Bake in VAE

内蔵したいVAEファイルを指定する。

モデルに別のVAEを内蔵する

「モデルに別のVAEをbakeする(焼き込む)」とも言う。
メインメモリを結構食います。SDXLではなおさら。

具体的な手順

  1. Primary model (A)を指定する
  2. Custom Name (Optional)に、結果として希望するモデルファイル名を入力
    空欄のままだとモデルAに上書き処理しようとして失敗し、エラーを吐く(詳しくはここに書いた通り)。
    なので、何らかの新規ファイル名を指定してあげる必要がある。
    また拡張子はこの欄の入力に含めないほうが良い。
    拡張子はCheckpoint Mergerが自動的に足してくれるので、ユーザーがこの欄に自分で入力すると
    hogehoge.safetensors.safetensors」のように二重になる、なった。
  3. Interpolation Method=No interpolation
    今回は内蔵VAE部分を差し替えるだけなので、モデル同士の足し算や引き算などは不要ってことだね。
  4. Save as float16をON
    主にファイルサイズ節約のため。OFFにしてもデメリットばかりでメリットがほぼないし……。
  5. Bake in VAE
    モデルに内蔵したいVAEファイルを指定する。
  6. Mergeボタンを押す
    出来上がった新しいモデルファイルは、普段のモデルフォルダに作成されている。
    (例: Models\StableDiffusion)

その他

Sigmoid

今は廃止された古い方式
拡張機能Marge Boardで対応している

Git Re-Basin

Merge-Stable-Diffusion-models-without-distortion
マージ時のモデルの損失を抑えるらしい(詳細不明
WebUIとは別の環境が必要
改良型.py
GUI版

おたより

  • A=null,B=とわDB(TL産fp16),C=NAI,result⇒xとし、A=sdv1-5,B=x,C=nullにしたけど転送できませんでした。 -- 2022-10-23 (日) 17:28:16
  • 海外 https://rentry.co/LFTBL -- 2022-11-10 (木) 04:42:15