diff --git a/modules/api/models.py b/modules/api/models.py index a9f45287c..9afaee7ac 100644 --- a/modules/api/models.py +++ b/modules/api/models.py @@ -526,7 +526,8 @@ def create_model_from_signature(func: Callable, model_name: str, base_model: typ args.remove(arg) non_default_args = len(args) - len(defaults) defaults = (...,) * non_default_args + defaults - keyword_only_params = {param: kwonlydefaults.get(param, Any) for param in kwonlyargs} + kw_defaults = kwonlydefaults or {} + keyword_only_params = {param: (annotations.get(param, Any), kw_defaults.get(param, ...)) for param in kwonlyargs} for k, v in annotations.items(): if v == list[Image.Image]: annotations[k] = list[str] diff --git a/modules/image/namegen.py b/modules/image/namegen.py index 4432b2595..905427eed 100644 --- a/modules/image/namegen.py +++ b/modules/image/namegen.py @@ -67,12 +67,12 @@ class FilenameGenerator: default_time_format = '%Y%m%d%H%M%S' def __init__(self, p=None, seed:int=-1, prompt:str='', image=None, grid=False, width=None, height=None): + self.p = p if p is None: debug_log('Filename generator init skip') return else: debug_log(f'Filename generator init: seed={seed} prompt="{prompt}"') - self.p = p if seed is not None and int(seed) > 0: self.seed = seed elif p is not None and getattr(p, 'all_seeds', None) is not None and len(p.all_seeds) > 0: diff --git a/modules/processing_args.py b/modules/processing_args.py index c8276c38e..0da3c01ea 100644 --- a/modules/processing_args.py +++ b/modules/processing_args.py @@ -230,7 +230,10 @@ def set_pipeline_args(p, model, prompts:list, negative_prompts:list, prompts_2:l if 'use_mask_in_transformer' in possible: args['use_mask_in_transformer'] = shared.opts.te_use_mask - timesteps = re.split(',| ', shared.opts.schedulers_timesteps) + sched_timesteps = getattr(p, 'schedulers_timesteps', None) + if sched_timesteps is None: + sched_timesteps = shared.opts.schedulers_timesteps + timesteps = re.split(',| ', sched_timesteps) if len(timesteps) > 2: if ('timesteps' in possible) and hasattr(model.scheduler, 'set_timesteps') and ("timesteps" in set(inspect.signature(model.scheduler.set_timesteps).parameters.keys())): p.timesteps = [int(x) for x in timesteps if x.isdigit()] diff --git a/modules/sd_models.py b/modules/sd_models.py index 89a1d900b..b2f7f3c55 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -79,7 +79,7 @@ def set_caption_load_options(): else: sd_hijack_accelerate.restore_accelerate() if (shared.opts.runai_streamer_diffusers or shared.opts.runai_streamer_transformers) and (sys.platform == 'linux'): - log.debug(f'Caption loader: to_gpu={shared.opts.caption_to_gpu} runai chunk={os.environ["RUNAI_STREAMER_CHUNK_BYTESIZE"]} limit={os.environ["RUNAI_STREAMER_MEMORY_LIMIT"]}') + log.debug(f'Caption loader: to_gpu={shared.opts.caption_to_gpu} runai chunk={os.environ.get("RUNAI_STREAMER_CHUNK_BYTESIZE", "N/A")} limit={os.environ.get("RUNAI_STREAMER_MEMORY_LIMIT", "N/A")}') sd_hijack_safetensors.hijack_safetensors(shared.opts.runai_streamer_diffusers, shared.opts.runai_streamer_transformers) else: if shared.opts.caption_to_gpu: diff --git a/modules/sd_offload_aux.py b/modules/sd_offload_aux.py index e7a157b4f..8578b8184 100644 --- a/modules/sd_offload_aux.py +++ b/modules/sd_offload_aux.py @@ -62,8 +62,9 @@ def move_aux_to_gpu(name: str) -> None: # 1. Evict other auxiliary models first evict_aux(exclude=name, reason='pre') # 2. If balanced offload active, evict diffusers pipeline modules if memory is tight - from modules.sd_offload import apply_balanced_offload - shared.sd_model = apply_balanced_offload(shared.sd_model) + if shared.sd_loaded: + from modules.sd_offload import apply_balanced_offload + shared.sd_model = apply_balanced_offload(shared.sd_model) # 3. Move to GPU (stream + sync) if shared.opts.diffusers_offload_streams: global move_stream # pylint: disable=global-statement diff --git a/requirements.txt b/requirements.txt index 9f44cd0fc..dbb8171d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,7 +24,6 @@ rich==14.1.0 safetensors==0.7.0 peft==0.18.1 httpx==0.28.1 -compel==2.2.1 requests==2.32.3 tqdm==4.67.3 accelerate==1.12.0 diff --git a/webui.py b/webui.py index de2e6657a..11c48e8a5 100644 --- a/webui.py +++ b/webui.py @@ -364,6 +364,8 @@ def start_ui(): log.info(f'API redocs: {local_url[:-1]}/redocs') # pylint: disable=unsubscriptable-object if share_url is not None: log.info(f'Share URL: {share_url}') + if getattr(shared.cmd_opts, 'enso', False): + log.info(f'Enso URL: {local_url[:-1]}/enso') # pylint: disable=unsubscriptable-object # log.debug(f'Gradio functions: registered={len(shared.demo.fns)}') shared.demo.server.wants_restart = False modules.api.middleware.setup_middleware(app, shared.cmd_opts)