From 7f2e30576d86e4ec406d74e1ab5358b140928d81 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Sun, 1 Sep 2024 23:19:38 -0400 Subject: [PATCH] fix handling of online model configs --- CHANGELOG.md | 1 + modules/sd_models.py | 6 +++--- modules/sd_vae.py | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e9d799001..9be12ecf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Other improvements: improves quality of the flow-matching samplers - t5 support manually downloaded models applies to all models that use t5 transformer +- fix handling of model configs if offline config is not available Work-in-progress: - flux controlnet support: (*1) diff --git a/modules/sd_models.py b/modules/sd_models.py index c5e03010e..5f19c409a 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -1213,10 +1213,10 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No if model_type.startswith('Stable Diffusion'): if shared.opts.diffusers_force_zeros: diffusers_load_config['force_zeros_for_empty_prompt '] = shared.opts.diffusers_force_zeros - if diffusers_version < 28: - diffusers_load_config['original_config_file'] = get_load_config(checkpoint_info.path, model_type, config_type='yaml') else: - diffusers_load_config['config'] = get_load_config(checkpoint_info.path, model_type, config_type='json') + model_config = get_load_config(checkpoint_info.path, model_type, config_type='json') + if model_config is not None: + diffusers_load_config['config_files'] = model_config if model_type.startswith('Stable Diffusion 3'): from modules.model_sd3 import load_sd3 sd_model = load_sd3(fn=checkpoint_info.path, cache_dir=shared.opts.diffusers_dir, config=diffusers_load_config.get('config', None)) diff --git a/modules/sd_vae.py b/modules/sd_vae.py index 698f89d76..107b6fc94 100644 --- a/modules/sd_vae.py +++ b/modules/sd_vae.py @@ -212,9 +212,11 @@ def load_vae_diffusers(model_file, vae_file=None, vae_source="unknown-source"): import diffusers if os.path.isfile(vae_file): _pipeline, model_type = sd_models.detect_pipeline(model_file, 'vae') - diffusers_load_config = { - "config": os.path.join(sd_models.get_load_config(model_file, model_type, config_type='json'), 'vae'), - } + vae_config = sd_models.get_load_config(model_file, model_type, config_type='json') + if vae_config is not None: + diffusers_load_config = { + "config": os.path.join(vae_config, 'vae'), + } if os.path.getsize(vae_file) > 1310944880: # 1.3GB vae = diffusers.ConsistencyDecoderVAE.from_pretrained('openai/consistency-decoder', **diffusers_load_config) # consistency decoder does not have from single file, so we'll just download it once more elif os.path.getsize(vae_file) < 10000000: # 10MB