aboutsummaryrefslogtreecommitdiffstats
path: root/modules/sd_models.py
diff options
context:
space:
mode:
authorKohaku-Blueleaf <59680068+KohakuBlueleaf@users.noreply.github.com>2023-12-02 09:00:09 +0000
committerKohaku-Blueleaf <59680068+KohakuBlueleaf@users.noreply.github.com>2023-12-02 09:00:09 +0000
commit110485d5bb511ab01ac3d890f1deca0502f4c7db (patch)
tree4335df77c422985e28b30c67ea846ca71e5ef1d7 /modules/sd_models.py
parent3d341ebc7dcb44df3b4c013b3805c08d8a35e24a (diff)
parent0bb6e00ba3c6775b17b3449c454c6efabb1bdad1 (diff)
downloadstable-diffusion-webui-gfx803-110485d5bb511ab01ac3d890f1deca0502f4c7db.tar.gz
stable-diffusion-webui-gfx803-110485d5bb511ab01ac3d890f1deca0502f4c7db.tar.bz2
stable-diffusion-webui-gfx803-110485d5bb511ab01ac3d890f1deca0502f4c7db.zip
Merge branch 'dev' into test-fp8
Diffstat (limited to 'modules/sd_models.py')
-rw-r--r--modules/sd_models.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/modules/sd_models.py b/modules/sd_models.py
index 90437c87..4b8a9ae6 100644
--- a/modules/sd_models.py
+++ b/modules/sd_models.py
@@ -230,15 +230,19 @@ def select_checkpoint():
return checkpoint_info
-checkpoint_dict_replacements = {
+checkpoint_dict_replacements_sd1 = {
'cond_stage_model.transformer.embeddings.': 'cond_stage_model.transformer.text_model.embeddings.',
'cond_stage_model.transformer.encoder.': 'cond_stage_model.transformer.text_model.encoder.',
'cond_stage_model.transformer.final_layer_norm.': 'cond_stage_model.transformer.text_model.final_layer_norm.',
}
+checkpoint_dict_replacements_sd2_turbo = { # Converts SD 2.1 Turbo from SGM to LDM format.
+ 'conditioner.embedders.0.': 'cond_stage_model.',
+}
+
-def transform_checkpoint_dict_key(k):
- for text, replacement in checkpoint_dict_replacements.items():
+def transform_checkpoint_dict_key(k, replacements):
+ for text, replacement in replacements.items():
if k.startswith(text):
k = replacement + k[len(text):]
@@ -249,9 +253,14 @@ def get_state_dict_from_checkpoint(pl_sd):
pl_sd = pl_sd.pop("state_dict", pl_sd)
pl_sd.pop("state_dict", None)
+ is_sd2_turbo = 'conditioner.embedders.0.model.ln_final.weight' in pl_sd and pl_sd['conditioner.embedders.0.model.ln_final.weight'].size()[0] == 1024
+
sd = {}
for k, v in pl_sd.items():
- new_key = transform_checkpoint_dict_key(k)
+ if is_sd2_turbo:
+ new_key = transform_checkpoint_dict_key(k, checkpoint_dict_replacements_sd2_turbo)
+ else:
+ new_key = transform_checkpoint_dict_key(k, checkpoint_dict_replacements_sd1)
if new_key is not None:
sd[new_key] = v