diff --git a/modules/modeldata.py b/modules/modeldata.py index 4b1254828..843b5acab 100644 --- a/modules/modeldata.py +++ b/modules/modeldata.py @@ -157,6 +157,8 @@ class ModelData: def __init__(self): self.sd_model: DiffusionPipeline | None = None self.sd_refiner: DiffusionPipeline | None = None + self.sd_model_name = '' + self.sd_refiner_name = '' self.sd_dict = 'None' self.initial = True self.locked = True @@ -173,6 +175,7 @@ class ModelData: try: from modules.sd_models import reload_model_weights self.sd_model = reload_model_weights(op='model') # note: reload_model_weights directly updates model_data.sd_model and returns it at the end + self.sd_model_name = shared.opts.sd_model_checkpoint self.initial = False except Exception as e: log.error("Failed to load stable diffusion model") @@ -190,6 +193,7 @@ class ModelData: try: from modules.sd_models import reload_model_weights self.sd_refiner = reload_model_weights(op='refiner') + self.sd_refiner_name = shared.opts.sd_model_refiner self.initial = False except Exception as e: log.error("Failed to load stable diffusion model") @@ -246,6 +250,10 @@ class Shared(sys.modules[__name__].__class__): model_type = 'unknown' return model_type + @property + def sd_model_name(self): + return model_data.sd_model_name + @property def sd_refiner_type(self): try: @@ -257,6 +265,10 @@ class Shared(sys.modules[__name__].__class__): model_type = 'unknown' return model_type + @property + def sd_refiner_name(self): + return model_data.sd_refiner_name + @property def console(self): try: diff --git a/modules/processing_args.py b/modules/processing_args.py index d03d18168..6bf2205a2 100644 --- a/modules/processing_args.py +++ b/modules/processing_args.py @@ -181,14 +181,23 @@ def get_params(model): def get_defaults(model, kwargs): remove = ['return_dict', 'output_type', 'num_images_per_prompt', 'callback', 'callback_on_step_end_tensor_inputs'] + default_cfg = 0 try: signature = inspect.signature(type(model).__call__, follow_wrapped=True) defaults = {k: v.default for k, v in signature.parameters.items() if v.default is not inspect.Parameter.empty and v.default is not None} # get all defaults defaults = {k: v for k, v in defaults.items() if k not in kwargs} # only log defaults that are not already set by kwargs defaults = {k: v for k, v in defaults.items() if k not in remove} # remove common args that are not useful to log log.debug(f'Pipeline: cls={model.__class__.__name__} defaults={defaults}') + default_cfg = defaults.get('guidance_scale', 0) except Exception as e: log.error(f'Pipeline defaults: {e}') + try: + model_name = model.sd_checkpoint_info.name or model.sd_model_checkpoint + is_turbo = getattr(getattr(model, 'config', None), 'is_distilled', False) or 'turbo' in model_name.lower() + if is_turbo and default_cfg > 1: + log.warning(f'Pipeline: cls={model.__class__.__name__} model="{model_name}" type=turbo default guidance={default_cfg}') + except Exception: + pass def set_pipeline_args(p, model, prompts:list, negative_prompts:list, prompts_2:list | None=None, negative_prompts_2:list | None=None, prompt_attention:str | None=None, desc:str | None='', **kwargs): diff --git a/modules/sd_models.py b/modules/sd_models.py index 5d7b4c741..aefdb2915 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -850,10 +850,7 @@ def load_diffuser(checkpoint_info=None, op='model', revision=None): # pylint: di "load_connected_pipeline": True, "safety_checker": None, # sd15 specific but we cant know ahead of time "requires_safety_checker": False, # sd15 specific but we cant know ahead of time - # "use_safetensors": True, } - # if shared.opts.huggingface_token and len(shared.opts.huggingface_token) > 0: - # diffusers_load_config['token'] = shared.opts.huggingface_token if revision is not None: diffusers_load_config['revision'] = revision if shared.opts.diffusers_model_load_variant != 'default':