diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 0f49bd254..2900b8def 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 0f49bd2540f443b551795e99aa55659ead336d30 +Subproject commit 2900b8defd8e320179ef0e7f9dd5dd51cfeb9cc1 diff --git a/modules/hidiffusion/__init__.py b/modules/hidiffusion/__init__.py index 8c93d68ef..004d54b33 100644 --- a/modules/hidiffusion/__init__.py +++ b/modules/hidiffusion/__init__.py @@ -34,7 +34,7 @@ def apply(p, model_type): hidiffusion.apply_hidiffusion(pipe, apply_raunet=shared.opts.hidiffusion_raunet, apply_window_attn=shared.opts.hidiffusion_attn, model_type=model_type, steps=p.steps) p.extra_generation_params['HiDiffusion'] = f'{shared.opts.hidiffusion_raunet}/{shared.opts.hidiffusion_attn}/{shared.opts.hidiffusion_steps > 0}:{shared.opts.hidiffusion_steps}' t1 = time.time() - shared.log.debug(f'HiDiffusion apply: raunet={shared.opts.hidiffusion_raunet} attn={shared.opts.hidiffusion_attn} aggressive={shared.opts.hidiffusion_steps > 0}:{shared.opts.hidiffusion_steps} t1={shared.opts.hidiffusion_t1} t2={shared.opts.hidiffusion_t2} time={t1-t0:.2f} type={shared.sd_model_type} width={p.width} height={p.height}') + shared.log.debug(f'Applying HiDiffusion: raunet={shared.opts.hidiffusion_raunet} attn={shared.opts.hidiffusion_attn} aggressive={shared.opts.hidiffusion_steps > 0}:{shared.opts.hidiffusion_steps} t1={shared.opts.hidiffusion_t1} t2={shared.opts.hidiffusion_t2} time={t1-t0:.2f} type={shared.sd_model_type} width={p.width} height={p.height}') def unapply(): diff --git a/modules/linfusion/__init__.py b/modules/linfusion/__init__.py index b263002bb..34495936b 100644 --- a/modules/linfusion/__init__.py +++ b/modules/linfusion/__init__.py @@ -16,6 +16,8 @@ def detect(pipeline): def apply(pipeline, pretrained: bool = True): global applied # pylint: disable=global-statement + if not shared.opts.enable_linfusion: + return if applied is not None: return # linfusion = LinFusion.construct_for(pipeline=pipeline) @@ -31,14 +33,14 @@ def apply(pipeline, pretrained: bool = True): return applied = LinFusion.from_pretrained(model_path, cache_dir=shared.opts.hfcache_dir).to(device=pipeline.unet.device, dtype=pipeline.unet.dtype) applied.mount_to(unet=pipeline.unet) - shared.log.debug(f'LinFusion: apply class={applied.__class__.__name__} model="{model_path}" modules={len(applied.modules_dict)}') + shared.log.info(f'Applying LinFusion: class={applied.__class__.__name__} model="{model_path}" modules={len(applied.modules_dict)}') def unapply(pipeline): global applied # pylint: disable=global-statement if applied is None: return - shared.log.debug('LinFusion: unapply') + # shared.log.debug('LinFusion: unapply') sd_models.set_diffusers_attention(pipeline) devices.torch_gc() applied = None diff --git a/modules/processing_diffusers.py b/modules/processing_diffusers.py index 87a14b3ac..5ed047c2c 100644 --- a/modules/processing_diffusers.py +++ b/modules/processing_diffusers.py @@ -53,7 +53,8 @@ def restore_state(p: processing.StableDiffusionProcessing): def process_pre(p: processing.StableDiffusionProcessing): - from modules import ipadapter, sd_hijack_freeu, para_attention, teacache, hidiffusion, ras, pag, cfgzero, transformer_cache, token_merge + from modules import ipadapter, sd_hijack_freeu, para_attention, teacache, hidiffusion, ras, pag, cfgzero, transformer_cache, token_merge, linfusion + shared.log.info('Processing apply modifiers') try: # apply-with-unapply @@ -64,6 +65,7 @@ def process_pre(p: processing.StableDiffusionProcessing): ras.apply(shared.sd_model, p) pag.apply(p) cfgzero.apply(p) + linfusion.apply(shared.sd_model) # apply-only sd_hijack_freeu.apply_freeu(p) @@ -84,7 +86,8 @@ def process_pre(p: processing.StableDiffusionProcessing): def process_post(p: processing.StableDiffusionProcessing): - from modules import ipadapter, hidiffusion, ras, pag, cfgzero, token_merge + from modules import ipadapter, hidiffusion, ras, pag, cfgzero, token_merge, linfusion + shared.log.info('Processing unapply modifiers') try: sd_models_compile.check_deepcache(enable=False) @@ -94,6 +97,7 @@ def process_post(p: processing.StableDiffusionProcessing): ras.unapply(shared.sd_model) pag.unapply() cfgzero.unapply() + linfusion.unapply(shared.sd_model) except Exception as e: shared.log.error(f'Processing unapply: {e}') errors.display(e, 'unapply') diff --git a/modules/sd_hijack_freeu.py b/modules/sd_hijack_freeu.py index e56ea02ba..9019301e3 100644 --- a/modules/sd_hijack_freeu.py +++ b/modules/sd_hijack_freeu.py @@ -156,4 +156,4 @@ def apply_freeu(p): p.sd_model.disable_freeu() state_enabled = False if shared.opts.freeu_enabled and state_enabled: - shared.log.info(f'Applying free-u: b1={shared.opts.freeu_b1} b2={shared.opts.freeu_b2} s1={shared.opts.freeu_s1} s2={shared.opts.freeu_s2}') + shared.log.info(f'Applying Free-U: b1={shared.opts.freeu_b1} b2={shared.opts.freeu_b2} s1={shared.opts.freeu_s1} s2={shared.opts.freeu_s2}') diff --git a/modules/sd_hijack_hypertile.py b/modules/sd_hijack_hypertile.py index 1cec39012..ec8f0c64f 100644 --- a/modules/sd_hijack_hypertile.py +++ b/modules/sd_hijack_hypertile.py @@ -198,7 +198,7 @@ def context_hypertile_vae(p): else: tile_size = shared.opts.hypertile_vae_tile if shared.opts.hypertile_vae_tile > 0 else max(128, 64 * min(p.width // 128, p.height // 128)) min_tile_size = shared.opts.hypertile_unet_min_tile if shared.opts.hypertile_unet_min_tile > 0 else 128 - shared.log.info(f'Applying hypertile: vae={min_tile_size}/{tile_size}') + shared.log.info(f'Applying HyperTile: vae={min_tile_size}/{tile_size}') p.extra_generation_params['Hypertile VAE'] = tile_size return split_attention(vae, tile_size=tile_size, min_tile_size=min_tile_size, swap_size=shared.opts.hypertile_vae_swap_size) @@ -227,7 +227,7 @@ def context_hypertile_unet(p): else: tile_size = shared.opts.hypertile_unet_tile if shared.opts.hypertile_unet_tile > 0 else max(128, 64 * min(p.width // 128, p.height // 128)) min_tile_size = shared.opts.hypertile_unet_min_tile if shared.opts.hypertile_unet_min_tile > 0 else 128 - shared.log.info(f'Applying hypertile: unet={min_tile_size}/{tile_size}') + shared.log.info(f'Applying HyperTile: unet={min_tile_size}/{tile_size}') p.extra_generation_params['Hypertile UNet'] = tile_size return split_attention(unet, tile_size=tile_size, min_tile_size=min_tile_size, swap_size=shared.opts.hypertile_unet_swap_size, depth=shared.opts.hypertile_unet_depth) diff --git a/modules/sd_models.py b/modules/sd_models.py index 774b903a5..b9e9cfa4f 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -145,12 +145,6 @@ def set_diffuser_options(sd_model, vae=None, op:str='model', offload:bool=True, shared.log.quiet(quiet, f'Setting {op}: fused-qkv=True') except Exception as e: shared.log.error(f'Setting {op}: fused-qkv=True {e}') - if shared.opts.enable_linfusion: - try: - from modules import linfusion - linfusion.apply(sd_model) - except Exception as e: - shared.log.error(f'Setting {op}: LinFusion=True {e}') if shared.opts.diffusers_eval: def eval_model(model, op=None, sd_model=None): # pylint: disable=unused-argument if hasattr(model, "requires_grad_"): @@ -477,7 +471,7 @@ def load_diffuser_file(model_type, pipeline, checkpoint_info, diffusers_load_con from diffusers.utils import import_utils import_utils._accelerate_available = False # pylint: disable=protected-access if shared.opts.diffusers_to_gpu and model_type.startswith('Stable Diffusion'): - shared.log.debug(f'Setting {op}: component=accelerate: direct={shared.opts.diffusers_to_gpu}') + shared.log.debug(f'Setting {op}: component=accelerate direct={shared.opts.diffusers_to_gpu}') sd_hijack_accelerate.hijack_accelerate() else: sd_hijack_accelerate.restore_accelerate() diff --git a/modules/ui_common.py b/modules/ui_common.py index 454775e1b..dfaad5d38 100644 --- a/modules/ui_common.py +++ b/modules/ui_common.py @@ -30,8 +30,8 @@ def update_generation_info(generation_info, html_info, img_index): return html_info, html_info -def plaintext_to_html(text): - res = '
' + "
\n".join([f"{html.escape(x)}" for x in text.split('\n')]) + '
' + '
\n'.join([f"{html.escape(x)}" for x in text.split('\n')]) + '