hako-mikan / sd-webui-supermerger

model merge extention for stable diffusion web ui
GNU Affero General Public License v3.0
753 stars 112 forks source link

Triple sumとsum TwiceでcosineAなどを使った場合、Model Cは合成されない #266

Closed zzz7xz closed 11 months ago

zzz7xz commented 1 year ago

3つのモデルを合成する際、Calculation ModeをcosineAやcosineBにするとbetaの数字を変えても Model AとModel BのWeight sumと同じ結果が出力され、Model Cは合成されていないようです。 normalの場合は合成されます。

zzz7xz commented 1 year ago

Issueを分けるべきでしたらすみません。別件で、Save current merge(fp16 only)が想定の通り動作していないように思います。 Merge!で一時的に合成したモデルと、save modelオプションをつけて保存したモデルは同じ結果が出力されますが、 Save current merge(fp16 only)で保存したモデルは異なる結果が出力されます。

wkpark commented 1 year ago

known bug exists. when using any LoRA in the prompt, Save current merge will not work correctly.

zzz7xz commented 1 year ago

Thanks for the info. Though, even without LoRA in Prompt, save model and save current merge (fp16 only) seem to output different models.

hako-mikan commented 1 year ago

英語しかないので申し訳ないのですが https://github.com/hako-mikan/sd-webui-supermerger/blob/main/calcmode_en.md それぞれのcalcmodeには適応できるモードが限られています Save current merge(fp16 only)については確認してみます

hako-mikan commented 1 year ago

Save current merge(fp16 only)の問題はLoRAが関係しているようですね。 Web-UIの仕様でLoRAを使用するとLoRAのウェイトを変更するまではLoRAを合成した状態でモデルを取り扱うのでそのまま保存するとLoRAごと保存され、そのモデルをLoRAと使用するとLoRAの効力が2倍になります。Adjustの問題も同様の起源ですので、これは対応します。

zzz7xz commented 1 year ago

ありがとうございます!

英語しかないので申し訳ないのですが https://github.com/hako-mikan/sd-webui-supermerger/blob/main/calcmode_en.md それぞれのcalcmodeには適応できるモードが限られています

cosineA/cosineB
Available modes : weight sum

上記の部分ですね。読み飛ばしていました。失礼いたしました。 2個の合成2回で対応いたします。

Save current merge(fp16 only)の問題はLoRAが関係しているようですね。

こちらはLoRAを使用していなくても起きるように思います。 WebUI起動(Promptは空欄)→ Merge → Save current merge(fp16 only) で保存したモデルはToolkitで解析すると、

Model is 1.99 GB. Multiple model types identified: UNET-v1-BROKEN, VAE-v1-BROKEN. Model type UNET-v1-BROKEN will be used. Model components are: UNET-v1-SD.
Contains 394.30 MB of junk data!
Model will be pruned to 1.60 GB.

同条件で WebUI起動(Promptは空欄)→ Merge(save modelオプションあり)で保存したモデルは、

Model is 1.99 GB. Model type identified as SD-v1. Model components are: CLIP-v1-SD, VAE-v1-SD, UNET-v1-SD.
Contains no junk data.
Model is unaltered, nothing to be done.

となります。

Web-UIの仕様でLoRAを使用するとLoRAのウェイトを変更するまではLoRAを合成した状態でモデルを取り扱うのでそのまま保存するとLoRAごと保存され、そのモデルをLoRAと使用するとLoRAの効力が2倍になります。Adjustの問題も同様の起源ですので、これは対応します。

WebUI側の仕様なのですね。承知いたしました。対応いただけるとのことで、ありがとうございます。

(Adjustの効果が別のモデルにも影響するのは、それはそれで面白かったりします。 知る限りモデルの明るさや色の調整を数値で行ってすぐに試せる方法がないので。 CD TunerのIssuesにも要望として挙げさせていただきましたが、あちらの拡張で後加工ではなく明るさや色を調整できるとありがたいです。仕組みを分かっていないので、無茶を言っていたらすみません…。)

hako-mikan commented 1 year ago

Save current model時にLoRAまで一緒に合成されてしまう問題は解決しました。また、READMEにMerge ModeとCalcmodeの対応表を追加しました。

zzz7xz commented 1 year ago

ご対応ありがとうございます!確認いたしました。

--

ImportError: cannot import name 'EulerDiscreteScheduler' from 'diffusers' (J:\stable-diffusion-webui\venv\lib\site-packages\diffusers\__init__.py)

更新後、起動時上記のエラーが2回出て本拡張が読み込まれませんでしたが、venv内にあった diffusersdiffusers-0.3.0.dist-info フォルダを削除したところ、新しいdiffusersがインストールされ拡張も読み込まれました。

--

Save current merge(fp16 only) の件は、出力結果に目視の範囲では差異は見られなくなりました。 ただ、若干異なるモデルが出力されているようです。

Merge! -> Save current merge(fp16 only)

Report (1833/0041/0018)
Model is 1.99 GB. Model type identified as SD-v1. Model components are: CLIP-v1-SD, VAE-v1-SD, UNET-v1-SD.
Contains no junk data.
Uses the WD-VAE-v2 VAE.
Model is unaltered, nothing to be done.
Total keys: 1143 (1.99 GB).

Merge! (save model)

Report (1833/2662/0018)
Model is 1.99 GB. Model type identified as SD-v1. Model components are: CLIP-v1-SD, VAE-v1-SD, UNET-v1-SD.
Contains no junk data.
Model is unaltered, nothing to be done.
Total keys: 1131 (1.99 GB).
zzz7xz commented 1 year ago

追記です。 Save current merge(fp16 only)は、Bake in VAEにNoneを設定していても、そのとき読み込んでいたSD VAEの情報もマージされるようです。 SD VAEをkl-f8-anime2.vae.ptからNoneに変更した場合、Uses the WD-VAE-v2 VAE.は表示されなくなりました。 ただ、それでもTotal keys: 1143で、Merge! (save model)のTotal keys: 1131とは異なるようです。

Merge! -> Save current merge(fp16 only) (SD VAE: None)

Report (1833/2662/0018)
Model is 1.99 GB. Model type identified as SD-v1. Model components are: VAE-v1-SD, UNET-v1-SD, CLIP-v1-SD.
Contains no junk data.
Model is unaltered, nothing to be done.
Total keys: 1143 (1.99 GB).
hako-mikan commented 1 year ago

Total keysが異なる問題は修正されました。