diff --git a/extensions-builtin/sd-dynamic-thresholding b/extensions-builtin/sd-dynamic-thresholding index 5349f0087..c60fe071e 160000 --- a/extensions-builtin/sd-dynamic-thresholding +++ b/extensions-builtin/sd-dynamic-thresholding @@ -1 +1 @@ -Subproject commit 5349f008721480a572ab9a917533afdd0dae7b9e +Subproject commit c60fe071e5938974a52611f87ca2fd1878aa6d15 diff --git a/extensions-builtin/sd-extension-system-info b/extensions-builtin/sd-extension-system-info index 9d3c0ca0f..19d190e71 160000 --- a/extensions-builtin/sd-extension-system-info +++ b/extensions-builtin/sd-extension-system-info @@ -1 +1 @@ -Subproject commit 9d3c0ca0f2dc8f8973b3d08f5ec1fa8bbd726155 +Subproject commit 19d190e71b2f1399623519db741d2a6bf8d2c86c diff --git a/extensions-builtin/sd-webui-controlnet b/extensions-builtin/sd-webui-controlnet index 5ae9b4a1a..af34f5144 160000 --- a/extensions-builtin/sd-webui-controlnet +++ b/extensions-builtin/sd-webui-controlnet @@ -1 +1 @@ -Subproject commit 5ae9b4a1a0c7d9a2938e75aaf052ab078623066f +Subproject commit af34f514499933d5e7e1641a6b13d56411e45e76 diff --git a/html/locale_en.json b/html/locale_en.json index c67068070..cbfd34342 100644 --- a/html/locale_en.json +++ b/html/locale_en.json @@ -575,8 +575,8 @@ {"id":"","label":"Enable VAE tiling","localized":"","hint":"Divide large images into overlapping tiles with limited VRAM. Might result in a minor increase in processing time. Use with Enable Attention Slicing"}, {"id":"","label":"Enable attention slicing","localized":"","hint":"Performs attention computation in steps instead of all at once. 10% slower inference times. Greatly reduces memory usage. Best used, period"}, {"id":"","label":"Diffusers model loading variant","localized":"","hint":""}, - {"id":"","label":"Diffusers VAE loading variant","localized":"","hint":""} - + {"id":"","label":"Diffusers VAE loading variant","localized":"","hint":""}, + {"id":"","label":"Diffusers LoRA loading variant","localized":"","hint":"'sequential apply' loads and applies each LoRA in order of appearance, 'merge and apply' loads all LoRAs and merges them in-memory before applying to model, 'diffusers default' uses single LoRA loading method"} ], "scripts": [ {"id":"","label":"Script","localized":"","hint":""}, diff --git a/modules/lora_diffusers.py b/modules/lora_diffusers.py index 3df991c77..816ff788b 100644 --- a/modules/lora_diffusers.py +++ b/modules/lora_diffusers.py @@ -13,7 +13,7 @@ lora_state = { # TODO Lora state for Diffusers def unload_diffusers_lora(): try: pipe = shared.sd_model - if shared.opts.diffusers_lora_loader == "Diffusers": + if shared.opts.diffusers_lora_loader == "diffusers default": pipe.unload_lora_weights() pipe._remove_text_encoder_monkey_patch() # pylint: disable=W0212 proc_cls_name = next(iter(pipe.unet.attn_processors.values())).__class__.__name__ @@ -24,9 +24,9 @@ def unload_diffusers_lora(): lora_state['all_loras'].reverse() lora_state['multiplier'].reverse() for i, lora_network in enumerate(lora_state['all_loras']): - if shared.opts.diffusers_lora_loader == "kohya-merge": + if shared.opts.diffusers_lora_loader == "merge and apply": lora_network.restore_from(multiplier=lora_state['multiplier'][i]) - if shared.opts.diffusers_lora_loader == "kohya-apply": + if shared.opts.diffusers_lora_loader == "sequential apply": lora_network.unapply_to() lora_state['active'] = False lora_state['loaded'] = 0 @@ -43,7 +43,7 @@ def load_diffusers_lora(name, lora, strength = 1.0): lora_state['active'] = True lora_state['loaded'] += 1 lora_state['multiplier'].append(strength) - if shared.opts.diffusers_lora_loader == "Diffusers": + if shared.opts.diffusers_lora_loader == "diffusers default": pipe.load_lora_weights(lora.filename, cache_dir=shared.opts.diffusers_dir, local_files_only=True, lora_scale=strength) shared.log.info(f"Diffusers LoRA loaded: {name} {lora_state['multiplier']}") else: @@ -55,9 +55,9 @@ def load_diffusers_lora(name, lora, strength = 1.0): text_encoders = pipe.text_encoder lora_network: LoRANetwork = create_network_from_weights(text_encoders, pipe.unet, lora_sd, multiplier=strength) lora_network.load_state_dict(lora_sd) - if shared.opts.diffusers_lora_loader == "kohya-merge": + if shared.opts.diffusers_lora_loader == "merge and apply": lora_network.merge_to(multiplier=strength) - if shared.opts.diffusers_lora_loader == "kohya-apply": + if shared.opts.diffusers_lora_loader == "sequential apply": lora_network.to(pipe.device, dtype=pipe.unet.dtype) lora_network.apply_to(multiplier=strength) lora_state['all_loras'].append(lora_network) diff --git a/modules/processing_diffusers.py b/modules/processing_diffusers.py index f159bb91b..bf40fa9d0 100644 --- a/modules/processing_diffusers.py +++ b/modules/processing_diffusers.py @@ -93,7 +93,7 @@ def process_diffusers(p: StableDiffusionProcessing, seeds, prompts, negative_pro args['callback_steps'] = 1 if 'callback' in possible: args['callback'] = diffusers_callback - if 'cross_attention_kwargs' in possible and lora_state['active'] and shared.opts.diffusers_lora_loader == "Diffusers": + if 'cross_attention_kwargs' in possible and lora_state['active'] and shared.opts.diffusers_lora_loader == "diffusers default": args['cross_attention_kwargs'] = { 'scale': lora_state['multiplier'][0]} for arg in kwargs: if arg in possible: diff --git a/modules/shared.py b/modules/shared.py index fe1bb9c15..bd5444336 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -409,7 +409,7 @@ options_templates.update(options_section(('diffusers', "Diffusers Settings"), { "diffusers_attention_slicing": OptionInfo(True if devices.backend == "ipex" else False, "Enable attention slicing"), "diffusers_model_load_variant": OptionInfo("default", "Diffusers model loading variant", gr.Radio, lambda: {"choices": ['default', 'fp32', 'fp16']}), "diffusers_vae_load_variant": OptionInfo("default", "Diffusers VAE loading variant", gr.Radio, lambda: {"choices": ['default', 'fp32', 'fp16']}), - "diffusers_lora_loader": OptionInfo("default", "Diffusers LoRA loading variant", gr.Radio, lambda: {"choices": ['kohya-apply', 'kohya-merge', 'Diffusers']}), + "diffusers_lora_loader": OptionInfo("sequential apply", "Diffusers LoRA loading variant", gr.Radio, lambda: {"choices": ['sequential apply', 'merge and apply', 'diffusers default']}), # "diffusers_force_zeros": OptionInfo(False, "Force zeros for prompts when empty"), # "diffusers_aesthetics_score": OptionInfo(6.0, "Require aesthetic score", gr.Slider, {"minimum": 0, "maximum": 10, "step": 0.1}), })) diff --git a/wiki b/wiki index f76cc3a9a..35142f02a 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit f76cc3a9ac124882f58f35ba3dfe930744109456 +Subproject commit 35142f02aee984aac261d1e1f563768d008398f6