Fix force upcast VAE with Diffusers

This commit is contained in:
Disty0
2023-07-29 21:01:24 +03:00
parent 3258b27523
commit 085d1da825
+7 -5
View File
@@ -591,11 +591,6 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No
vae = sd_vae.load_vae_diffusers(None, vae_file, vae_source)
if vae is not None:
diffusers_load_config["vae"] = vae
elif shared.opts.diffusers_vae_upcast != 'default':
# There is no good way to change vae.force_upcast while VAE is loading
# as part of the pipeline or to override it after.
# ?? = True if shared.opts.diffusers_vae_upcast == 'true' else False
shared.log.info(f'Diffusers VAE force upcast ({shared.opts.diffusers_vae_upcast}) is only supported with an explicit VAE.')
if not os.path.isfile(checkpoint_info.path):
try:
@@ -693,6 +688,13 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No
else:
sd_model.disable_attention_slicing()
if hasattr(sd_model, "vae"):
if shared.opts.diffusers_vae_upcast != 'default':
if shared.opts.diffusers_vae_upcast == 'true':
sd_model.vae.config["force_upcast"] = True
sd_model.vae.config.force_upcast = True
else:
sd_model.vae.config["force_upcast"] = False
sd_model.vae.config.force_upcast = False
shared.log.debug(f'Diffusers {op} VAE: name={sd_model.vae.config.get("_name_or_path", "default")} upcast={sd_model.vae.config.get("force_upcast", None)}')
if shared.opts.cross_attention_optimization == "xFormers" and hasattr(sd_model, 'enable_xformers_memory_efficient_attention'):
sd_model.enable_xformers_memory_efficient_attention()