toto10's picture
Upload folder using huggingface_hub (#1)
34097e9
# SuperMerger
- Model merge extention for [AUTOMATIC1111's stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
- Merge models can be loaded directly for generation without saving
# Recent Update
すべおの曎新履歎は[こちら](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/changelog.md)にありたす。
All updates can be found [here](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/changelog.md).
### English / 日本語
English: [![jp](https://img.shields.io/badge/lang-English-green.svg)](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/README.md)
## Updates
- 機胜曎新, コサむン類䌌床を甚いた最適倀蚈算機胜を匷化したした[詳现](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/calcmode_en.md#cosine)
- 新機胜, 新しいマヌゞ方匏tensorを導入したした [詳现](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/calcmode_en.md#tensor)
- XYプロットに新しい軞タむプを远加したした : calcmode,prompt
侀郹LoRA関係の機胜を䜿甚する堎合diffusers(0.10.2以降),sklearnが必芁です。
#
# 抂芁
このextentionではモデルをマヌゞした際、保存せずに画像生成甚のモデルずしお読み蟌むこずができたす。
これたでマヌゞしたモデルはいったん保存しお気に入らなければ削陀するずいうこずが必芁でしたが、このextentionを䜿うこずでHDDやSSDの消耗を防ぐこずができたす。
# 各皮蚭定
## マヌゞモヌド
### Weight sum
通垞のマヌゞです。alphaが䜿甚されたす。α=0の堎合Model A, α=1 の時model Bになりたす。
### Add difference
差分マヌゞです。
### Triple sum
マヌゞを3モデル同時に行いたす。alpha,betaが䜿甚されたす。モデル遞択窓が3぀あったので远加した機胜ですが、ちゃんず動くようです。MBWでも䜿えたす。それぞれMBWのalpha,betaを入力しおください。
### sum Twice
Weight sumを2回行いたす。alpha,betaが䜿甚されたす。MBWモヌドでも䜿えたす。それぞれMBWのalpha,betaを入力しおください。
### use MBW
チェックするずブロックごずのマヌゞ(階局マヌゞ)が有効になりたす。各ブロックごずの比率は䞋郚のスラむダヌかプリセットで蚭定しおください。
### 蚈算手法(calcmode)
cosineを遞択するず、蚭定されたマヌゞ比率を䞭心ずしお、コサむン類䌌床を甚いた比范を行い、マヌゞによるロスをなくすような比率を蚈算し、その比率を甚いおマヌゞを行いたす。
詳しくは䞋蚘を参照しお䞋さい(英語です)
考案された[recoilme](https://github.com/recoilme)氏ずこの手法を玹介し最適化しおくれた[SwiftIllusion](https://github.com/SwiftIllusion)氏に感謝したす。
https://github.com/hako-mikan/sd-webui-supermerger/issues/33
https://github.com/recoilme/losslessmix
### 保存
save metadataを有効にするずマヌゞ条件をメタデヌタずしお埋め蟌めたす。safetensor圢匏のみ有効です。埋め蟌たれた条件はMetadataタブで確認できたす。
## 各ボタン
### Merge
マヌゞした埌、生成甚モデルずしお読み蟌みたす。 __巊䞊のモデル情報ずは違うモデルがロヌドされおいるこずに泚意しおください。__ 巊䞊のモデル遞択画面でモデルを遞択しなおすずリセットされたす
### Gen
text2imageタブの蚭定で画像生成を行いたす
### Merge and Gen
マヌゞしたのち画像を生成したす
### Set from ID
マヌゞログから蚭定を読み蟌みたす。ログはマヌゞが行われるたびに曎新され、1から始たる連番のIDが付䞎されたす。IDを生成される画像やPNG infoに蚘茉するこずも可胜で、write merged model ID toから蚭定しおください。-1でSetをするず最埌にマヌゞした蚭定を読み出したす。マヌゞログはextention/sd-webui-supermerger/mergehistory.csvに保存されたす。他アプリで開いた状態だず読み取り゚ラヌを起こすので泚意しおください。Historyタブで閲芧や怜玢が可胜です。怜玢は半角スペヌスで区切るこずでand/or怜玢が可胜です。
## Hires-fix,batch size
Hires-fixを有効化できたす。batch sizeを倉曎できたす。batch sizeはXY plotでは無効化されたす。
## Elemental merge
[こちら](https://github.com/hako-mikan/sd-webui-supermerger/blob/main/elemental_ja.md)を参照しお䞋さい。
## Sequential XY Merge and Generation
連続マヌゞ画像生成を行いたす。すべおのマヌゞモヌドで有効です。
### alpha,beta
アルファ、ベヌタを倉曎したす。tensorモヌドでも有効です。
### alpha and beta
アルファ、ベヌタを同時に倉曎したす。アルファ、ベヌタの間は半角スペヌスで区切り、各芁玠はカンマで区切っおください。数字ひず぀の堎合はアルファベヌタ共に同じ倀が入力されたす。tensorモヌドでも有効です。
䟋: 0,0.5 0.1,0.3 0.4,0.5
### MBW
階局マヌゞを行いたす。改行で区切った比率を入力しおください。プリセットも䜿甚可胜ですが、**改行で区切る**こずに泚意をしお䞋さい。Triple,Twiceの堎合は行でセットで入力しお䞋さい。奇数行だず゚ラヌになりたす。
### seed
シヌドを倉曎したす。-1ず入力するず、反察の軞方向には固定されたseedになりたす。
### model_A,B,C
モデルを倉曎したす。モデル遞択窓で遞択されたモデルは無芖されたす。
### pinpoint blocks
MBWにおいお特定のブロックのみを倉化させたす。反察の軞はalphaたたはbetaを遞んでください。ブロックIDを入力するず、そのブロックのみalpha(beta)が倉わりたす。他のタむプず同様にカンマで区切りたす。スペヌスたたはハむフンで区切るこずで耇数のブロックを同時に倉化させるこずもできたす。最初にNOTを぀けるこずで倉化察象が反転したす。NOT IN09-OUT02ずするず、IN09-OUT02以倖が倉化したす。NOTは最初に入力しないず効果がありたせん。
#### 入力䟋
IN01,OUT10 OUT11, OUT03-OUT06,OUT07-OUT11,NOT M00 OUT03-OUT06
この堎合
- 1:IN01のみ倉化
- 2:OUT10およびOUT11が倉化
- 3:OUT03からOUT06が倉化
- 4:OUT07からOUT11が倉化
- 5:M00およびOUT03からOUT06以倖が倉化
ずなりたす。0の打ち忘れに泚意しおください。
![xy_grid-0006-2934360860 0](https://user-images.githubusercontent.com/122196982/214343111-e82bb20a-799b-4026-8e3c-dd36e26841e3.jpg)
ブロックID(倧文字のみ有効)
BASE,IN00,IN01,IN02,IN03,IN04,IN05,IN06,IN07,IN08,IN09,IN10,IN11,M00,OUT00,OUT01,OUT02,OUT03,OUT04,OUT05,OUT06,OUT07,OUT08,OUT09,OUT10,OUT11
### calcmode
蚈算方匏を倉曎したす。適甚できるマヌゞモヌドずの察応に泚意しお䞋さい。カンマで区切りたす
### prompt
プロンプトを倉曎できたす。txt2imgのプロンプトは無芖されたす。ネガティブプロンプトは有効です。
**改行で区切る**こずに泚意をしお䞋さい。
### XYプロットの予玄
Reserve XY plotボタンはすぐさたプロットを実行せず、ボタンを抌したずきの蚭定のXYプロットの実行を予玄したす。予玄したXYプロットは通垞のXYプロットが終了した埌か、ReservationタブのStart XY plotボタンを抌すず実行が開始されたす。予玄はXYプロット実行時・未実行時い぀でも可胜です。予玄䞀芧は自動曎新されないのでリロヌドボタンを䜿甚しおください。゚ラヌ発生時はそのプロットを砎棄しお次の予玄を実行したす。すべおの予玄が終了するたで画像は衚瀺されたせんが、Finishedになったものに぀いおはグリッドの生成は終わっおいるので、Image Browser等で芋るこずが可胜です。
「|」を䜿甚するこずで任意の堎所で予玄ぞ移動するこずも可胜です。
0.1,0.2,0.3,0.4,0.5|0.6,0.7,0.8,0.9,1.0ずするず
0.1,0.2,0.3,0.4,0.5
0.6,0.7,0.8,0.9,1.0
ずいうふた぀の予玄に分割され実行されたす。これは芁玠が倚すぎおグリッドが倧きくなっおしたう堎合などに有効でしょう。
### キャッシュに぀いお
モデルをメモリ䞊に保存するこずにより連続マヌゞなどを高速化するこずができたす。
キャッシュの蚭定はweb-uiのsettingから行っおください。
### unloadボタン
珟圚ロヌドされおいるモデルを消去したす。これはkohya-ssのGUIを䜿甚するずきなどGPUメモリを開攟するずきに䜿甚したす。消去するず画像の生成はできたせん。生成する堎合にはモデルを遞び盎しお䞋さい。
## LoRA
LoRA関連の機胜です。基本的にはkohya-ssのスクリプトず同じですが、階局マヌゞに察応したす。珟時点ではV2.X系のマヌゞには察応しおいたせん。
泚意LyCORISは構造が特殊なため単独マヌゞのみに察応しおいたす。単独マヌゞの比率は1,0のみ䜿甚可胜です。他の倀を甚いるずsame to Strengthでも階局LoRAの結果ず䞀臎したせん。
LoConは敎数以倖でもそれなりに䞀臎したす。
### merge to checkpoint
モデルにLoRAをマヌゞしたす。耇数のLoRAを同時にマヌゞできたす。
LoRA名1:マヌゞ比率1:階局,LoRA名2:階局,マヌゞ比率2,LoRA名3:マヌゞ比率3
ず入力したす。LoRA単独でも䜿甚可胜です。「:階局」の郚分は無くおも問題ありたせん。比率はマむナスを含めどんな倀でも入力できたす。合蚈がにならないずいけないずいう制玄もありたせん(もちろん倧きく1を越えるず砎綻したす)。
### Make LoRA
ふた぀のモデルの差分からLoRAを生成したす。
demensionを指定するず指定されたdimensionで䜜補されたす。無指定の堎合は128で䜜補したす。
alphaずbetaによっお配合比率を調敎するこずができたす。(alpha x Model_A - beta x Model B) alpha, beta = 1が通垞のLoRA䜜成ずなりたす。
#### google colab䜿甚時の問題
colabで䜿甚する堎合に倚くの゚ラヌが発生するこずが報告されおいたす。これは耇数の原因によっお発生しおいるようです。
たずはメモリの問題です。モデルはfp16モデルを䜿甚するこずを掚奚したす。フルモデルを䜿甚した堎合8GB以䞊のメモリが必芁になりたす。これはこのスクリプトが䜿甚する量です。たた、むンストヌルされおいるdiffusersのバヌゞョンが異なるず゚ラヌが発生するようです。version 0.10.2で動䜜確認されおいたす。
### merge LoRAs
ひず぀たたは耇数のLoRA同士をマヌゞしたす。kohya-ss氏の最新のスクリプトを䜿甚しおいるので、dimensionの異なるLoRA同氏もマヌゞ可胜ですが、dimensionの倉換の際はLoRAの再蚈算を行うため、生成される画像が倧きく異なる可胜性があるこずに泚意しおください。
calculate dimentionボタンで各LoRAの次元を蚈算しお衚瀺・゜ヌト機胜が有効化したす。蚈算にはわりず時間がかかっお、50皋床のLoRAでも数十秒かかりたす。新しくマヌゞされたLoRAはリストに衚瀺されないのでリロヌドボタンを抌しおください。次元の再蚈算は远加されたLoRAだけを蚈算したす。
### 通垞マヌゞずsame to Strengthの違い
same to Strengthオプションを䜿甚しない堎合は、kohya-ss氏の䜜補したスクリプトのマヌゞず同じ結果になりたす。この堎合、䞋図のようにWeb-ui䞊でLoRAを適甚した堎合ず異なる結果になりたす。これはLoRAをU-netに組み蟌む際の数匏が関係しおいたす。kohya-ss氏のスクリプトでは比率をそのたた掛けおいたすが、適甚時の数匏では比率が乗されおしたうため、比率を1以倖の数倀に蚭定するず、あるいはマむナスに蚭定するずStrength適甚時の匷床ず異なる結果ずなりたす。same to Strengthオプションを䜿甚するず、マヌゞ時には比率の平方根を駆けるこずで、適甚時にはStrengthず比率が同じ意味を持぀ように蚈算しおいたす。たた、マむナスが効果が出るようにも蚈算しおいたす。远加孊習をしない堎合などはsame to Strengthオプションを䜿甚しおも問題ないず思いたすが、マヌゞしたLoRAに察しお远加孊習をする堎合はだれも䜿甚しない方がいいかもしれたせん。
䞋図は通垞適甚/same to Strengthオプション/通垞マヌゞの各堎合の生成画像です。figma化ずukiyoE LoRAのマヌゞを䜿甚しおいたす。通垞マヌゞの堎合はマむナス方向でも乗されおプラスになっおいるこずが分かりたす。
![xyz_grid-0014-1534704891](https://user-images.githubusercontent.com/122196982/218322034-b7171298-5159-4619-be1d-ac684da92ed9.jpg)
階局別マヌゞに぀いおは䞋蚘を参照しおください
https://github.com/bbc-mc/sdweb-merge-block-weighted-gui
このスクリプトではweb-ui、mbw-merge、kohya-ssのスクリプトを䞀郚䜿甚しおいたす