From 680fddc03685c04f2ef9aa096b11671f1c063f56 Mon Sep 17 00:00:00 2001 From: vladmandic Date: Fri, 16 Jan 2026 09:59:42 +0100 Subject: [PATCH] disable fallback on models with custom loaders Signed-off-by: vladmandic --- CHANGELOG.md | 1 + modules/sd_models.py | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41823eca8..7cb4954c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ Plus some significant under-the-hood changes to improve code coverage and qualit - lora switch logic from force-diffusers to allow-native - split `reference.json` - print system env on startup + - disable fallback on models with custom loaders - **Fixes** - extension tab: update checker, date handling, formatting etc., thanks @awsr - controlnet with non-english ui locales diff --git a/modules/sd_models.py b/modules/sd_models.py index 8db759e87..89a437463 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -495,8 +495,11 @@ def load_diffuser_force(detected_model_type, checkpoint_info, diffusers_load_con shared.log.error(f'Load {op}: path="{checkpoint_info.path}" {e}') if debug_load: errors.display(e, 'Load') - return None - return sd_model + return None, True + if sd_model is not None: + return sd_model, True + else: + return sd_model, False def load_diffuser_folder(model_type, pipeline, checkpoint_info, diffusers_load_config, op='model'): @@ -797,6 +800,7 @@ def load_diffuser(checkpoint_info=None, op='model', revision=None): # pylint: di return sd_model = None + handled = False try: # initial load only if sd_model is None: @@ -837,25 +841,25 @@ def load_diffuser(checkpoint_info=None, op='model', revision=None): # pylint: di timer.load.record("vae") # load with custom loader - if sd_model is None: - sd_model = load_diffuser_force(model_type, checkpoint_info, diffusers_load_config, op) + if sd_model is None and not handled: + sd_model, handled = load_diffuser_force(model_type, checkpoint_info, diffusers_load_config, op) if sd_model is not None and not sd_model: shared.log.error(f'Load {op}: type="{model_type}" pipeline="{pipeline}" not loaded') return # load sdnq-prequantized model - if sd_model is None: + if sd_model is None and not handled: if model_type.endswith('SDNQ'): sd_model = load_sdnq_model(checkpoint_info, pipeline, diffusers_load_config, op) model_type = model_type.replace(' SDNQ', '') # load from single-file - if sd_model is None: + if sd_model is None and not handled: if os.path.isfile(checkpoint_info.path) and checkpoint_info.path.lower().endswith('.safetensors'): sd_model = load_diffuser_file(model_type, pipeline, checkpoint_info, diffusers_load_config, op) # load from hf folder-style - if sd_model is None: + if sd_model is None and not handled: if os.path.isdir(checkpoint_info.path) or (checkpoint_info.type == 'huggingface') or (checkpoint_info.type == 'transformer') or (checkpoint_info.type == 'reference'): sd_model = load_diffuser_folder(model_type, pipeline, checkpoint_info, diffusers_load_config, op)