diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-07-11 18:16:43 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2023-07-11 18:16:43 +0000 |
commit | af081211ee93622473ee575de30fed2fd8263c09 (patch) | |
tree | b047d051d31e8332f6a8491c41bbcb4c35ccf692 /modules/sd_models_xl.py | |
parent | 7b833291b3ef4690ef158ee3415c2e93948acb2d (diff) | |
download | stable-diffusion-webui-gfx803-af081211ee93622473ee575de30fed2fd8263c09.tar.gz stable-diffusion-webui-gfx803-af081211ee93622473ee575de30fed2fd8263c09.tar.bz2 stable-diffusion-webui-gfx803-af081211ee93622473ee575de30fed2fd8263c09.zip |
getting SD2.1 to run on SDXL repo
Diffstat (limited to 'modules/sd_models_xl.py')
-rw-r--r-- | modules/sd_models_xl.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/sd_models_xl.py b/modules/sd_models_xl.py new file mode 100644 index 00000000..d43b8868 --- /dev/null +++ b/modules/sd_models_xl.py @@ -0,0 +1,40 @@ +from __future__ import annotations
+
+import torch
+
+import sgm.models.diffusion
+import sgm.modules.diffusionmodules.denoiser_scaling
+import sgm.modules.diffusionmodules.discretizer
+from modules import devices
+
+
+def get_learned_conditioning(self: sgm.models.diffusion.DiffusionEngine, batch: list[str]):
+ for embedder in self.conditioner.embedders:
+ embedder.ucg_rate = 0.0
+
+ c = self.conditioner({'txt': batch})
+
+ return c
+
+
+def apply_model(self: sgm.models.diffusion.DiffusionEngine, x, t, cond):
+ return self.model(x, t, cond)
+
+
+def extend_sdxl(model):
+ dtype = next(model.model.diffusion_model.parameters()).dtype
+ model.model.diffusion_model.dtype = dtype
+ model.model.conditioning_key = 'crossattn'
+
+ model.cond_stage_model = [x for x in model.conditioner.embedders if type(x).__name__ == 'FrozenOpenCLIPEmbedder'][0]
+ model.cond_stage_key = model.cond_stage_model.input_key
+
+ model.parameterization = "v" if isinstance(model.denoiser.scaling, sgm.modules.diffusionmodules.denoiser_scaling.VScaling) else "eps"
+
+ discretization = sgm.modules.diffusionmodules.discretizer.LegacyDDPMDiscretization()
+ model.alphas_cumprod = torch.asarray(discretization.alphas_cumprod, device=devices.device, dtype=dtype)
+
+
+sgm.models.diffusion.DiffusionEngine.get_learned_conditioning = get_learned_conditioning
+sgm.models.diffusion.DiffusionEngine.apply_model = apply_model
+
|