diff options
author | AUTOMATIC <16777216c@gmail.com> | 2023-05-23 15:02:09 +0000 |
---|---|---|
committer | AUTOMATIC <16777216c@gmail.com> | 2023-05-23 15:49:15 +0000 |
commit | a6e653be26cc05f4438145fa0082816e9fbbf5fc (patch) | |
tree | d8270d472d887a79e1b9963c9f33c879fc67b48b /modules/sd_hijack.py | |
parent | 0e1c41998af53250a1c8ddc59225b50cbe18e770 (diff) | |
download | stable-diffusion-webui-gfx803-a6e653be26cc05f4438145fa0082816e9fbbf5fc.tar.gz stable-diffusion-webui-gfx803-a6e653be26cc05f4438145fa0082816e9fbbf5fc.tar.bz2 stable-diffusion-webui-gfx803-a6e653be26cc05f4438145fa0082816e9fbbf5fc.zip |
possible fix for empty list of optimizations #10605
Diffstat (limited to 'modules/sd_hijack.py')
-rw-r--r-- | modules/sd_hijack.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py index 08d31080..f93df0a6 100644 --- a/modules/sd_hijack.py +++ b/modules/sd_hijack.py @@ -48,6 +48,11 @@ def apply_optimizations(): undo_optimizations()
+ if len(optimizers) == 0:
+ # a script can access the model very early, and optimizations would not be filled by then
+ current_optimizer = None
+ return ''
+
ldm.modules.diffusionmodules.model.nonlinearity = silu
ldm.modules.diffusionmodules.openaimodel.th = sd_hijack_unet.th
@@ -67,8 +72,9 @@ def apply_optimizations(): matching_optimizer = optimizers[0]
if matching_optimizer is not None:
- print(f"Applying optimization: {matching_optimizer.name}")
+ print(f"Applying optimization: {matching_optimizer.name}... ", end='')
matching_optimizer.apply()
+ print("done.")
current_optimizer = matching_optimizer
return current_optimizer.name
else:
@@ -149,6 +155,13 @@ class StableDiffusionModelHijack: def __init__(self):
self.embedding_db.add_embedding_dir(cmd_opts.embeddings_dir)
+ def apply_optimizations(self):
+ try:
+ self.optimization_method = apply_optimizations()
+ except Exception as e:
+ errors.display(e, "applying cross attention optimization")
+ undo_optimizations()
+
def hijack(self, m):
if type(m.cond_stage_model) == xlmr.BertSeriesModelWithTransformation:
model_embeddings = m.cond_stage_model.roberta.embeddings
@@ -168,11 +181,7 @@ class StableDiffusionModelHijack: if m.cond_stage_key == "edit":
sd_hijack_unet.hijack_ddpm_edit()
- try:
- self.optimization_method = apply_optimizations()
- except Exception as e:
- errors.display(e, "applying cross attention optimization")
- undo_optimizations()
+ self.apply_optimizations()
self.clip = m.cond_stage_model
|