diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-11-05 16:31:44 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-05 16:31:44 +0000 |
commit | 96ee3eff6c8e6868e43fa57e1679603e89b89b1d (patch) | |
tree | c6e557895ff3172bad42da469a6912ac718078a1 | |
parent | c3699d4fd185d5a7285c5519f9bb4b6fec236d9f (diff) | |
parent | ff805d8d0eb8e3de42f04747de0d1c7354491810 (diff) | |
download | stable-diffusion-webui-gfx803-96ee3eff6c8e6868e43fa57e1679603e89b89b1d.tar.gz stable-diffusion-webui-gfx803-96ee3eff6c8e6868e43fa57e1679603e89b89b1d.tar.bz2 stable-diffusion-webui-gfx803-96ee3eff6c8e6868e43fa57e1679603e89b89b1d.zip |
Merge pull request #13865 from Gothos/master
Add support for SSD-1B
-rw-r--r-- | CHANGELOG.md | 5 | ||||
-rw-r--r-- | modules/sd_hijack.py | 12 | ||||
-rw-r--r-- | modules/sd_models.py | 7 | ||||
-rw-r--r-- | modules/sd_models_types.py | 5 |
4 files changed, 26 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cd3572c..2c72359f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.6.1
+
+### Bug Fixes:
+ * fix an error causing the webui to fail to start ([#13839](https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/13839))
+
## 1.6.0
### Features:
diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py index bc5fbcd3..4fff418d 100644 --- a/modules/sd_hijack.py +++ b/modules/sd_hijack.py @@ -183,6 +183,18 @@ class StableDiffusionModelHijack: except Exception as e:
errors.display(e, "applying cross attention optimization")
undo_optimizations()
+
+ def conv_ssd(self, m):
+ delattr(m.model.diffusion_model.middle_block, '1')
+ delattr(m.model.diffusion_model.middle_block, '2')
+ for i in ['9','8','7','6','5','4']:
+ delattr(m.model.diffusion_model.input_blocks[7][1].transformer_blocks,i)
+ delattr(m.model.diffusion_model.input_blocks[8][1].transformer_blocks,i)
+ delattr(m.model.diffusion_model.output_blocks[0][1].transformer_blocks,i)
+ delattr(m.model.diffusion_model.output_blocks[1][1].transformer_blocks,i)
+ delattr(m.model.diffusion_model.output_blocks[4][1].transformer_blocks,'1')
+ delattr(m.model.diffusion_model.output_blocks[5][1].transformer_blocks,'1')
+ devices.torch_gc()
def hijack(self, m):
conditioner = getattr(m, 'conditioner', None)
diff --git a/modules/sd_models.py b/modules/sd_models.py index 3b6cdea1..d76dc580 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -352,10 +352,13 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer model.is_sdxl = hasattr(model, 'conditioner')
model.is_sd2 = not model.is_sdxl and hasattr(model.cond_stage_model, 'model')
model.is_sd1 = not model.is_sdxl and not model.is_sd2
-
+ model.is_ssd = model.is_sdxl and 'model.diffusion_model.middle_block.1.transformer_blocks.0.attn1.to_q.weight' not in state_dict.keys()
if model.is_sdxl:
sd_models_xl.extend_sdxl(model)
-
+
+ if model.is_ssd:
+ sd_hijack.model_hijack.conv_ssd(model)
+
if shared.opts.sd_checkpoint_cache > 0:
# cache newly loaded model
checkpoints_loaded[checkpoint_info] = state_dict.copy()
diff --git a/modules/sd_models_types.py b/modules/sd_models_types.py index 5ffd2f4f..1f28942a 100644 --- a/modules/sd_models_types.py +++ b/modules/sd_models_types.py @@ -22,7 +22,10 @@ class WebuiSdModel(LatentDiffusion): """structure with additional information about the file with model's weights"""
is_sdxl: bool
- """True if the model's architecture is SDXL"""
+ """True if the model's architecture is SDXL or SSD"""
+
+ is_ssd: bool
+ """True if the model is SSD"""
is_sd2: bool
"""True if the model's architecture is SD 2.x"""
|