From fa74a0c7fe6bc8cc0dec2d6d4f706f635fbcbdbe Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Fri, 26 Apr 2024 22:22:09 +0200 Subject: [PATCH 1/4] feat: add performance hyper-sd based on 4step LoRA --- modules/async_worker.py | 19 +++++++++++++++++++ modules/config.py | 12 +++++++++++- modules/flags.py | 5 ++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/modules/async_worker.py b/modules/async_worker.py index d8a1e072..a8f857b0 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -263,6 +263,25 @@ def worker(): adm_scaler_negative = 1.0 adm_scaler_end = 0.0 + elif performance_selection == Performance.HYPER_SD: + print('Enter Hyper-SD mode.') + progressbar(async_task, 1, 'Downloading Hyper-SD components ...') + loras += [(modules.config.downloading_sdxl_hyper_sd_lora(), 1.0)] + + if refiner_model_name != 'None': + print(f'Refiner disabled in Hyper-SD mode.') + + refiner_model_name = 'None' + sampler_name = 'ddim' + scheduler_name = 'sgm_uniform' + sharpness = 0.0 + guidance_scale = 1.0 + adaptive_cfg = 1.0 + refiner_switch = 1.0 + adm_scaler_positive = 1.0 + adm_scaler_negative = 1.0 + adm_scaler_end = 0.0 + print(f'[Parameters] Adaptive CFG = {adaptive_cfg}') print(f'[Parameters] Sharpness = {sharpness}') print(f'[Parameters] ControlNet Softness = {controlnet_softness}') diff --git a/modules/config.py b/modules/config.py index b81e218a..e6b66f1c 100644 --- a/modules/config.py +++ b/modules/config.py @@ -539,7 +539,8 @@ wildcard_filenames = [] sdxl_lcm_lora = 'sdxl_lcm_lora.safetensors' sdxl_lightning_lora = 'sdxl_lightning_4step_lora.safetensors' -loras_metadata_remove = [sdxl_lcm_lora, sdxl_lightning_lora] +sdxl_hyper_sd_lora = 'sdxl_hyper_sd_4step_lora.safetensors' +loras_metadata_remove = [sdxl_lcm_lora, sdxl_lightning_lora, sdxl_hyper_sd_lora] def get_model_filenames(folder_paths, extensions=None, name_filter=None): @@ -615,6 +616,15 @@ def downloading_sdxl_lightning_lora(): return sdxl_lightning_lora +def downloading_sdxl_hyper_sd_lora(): + load_file_from_url( + url='https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-4steps-lora.safetensors', + model_dir=paths_loras[0], + file_name=sdxl_hyper_sd_lora + ) + return sdxl_hyper_sd_lora + + def downloading_controlnet_canny(): load_file_from_url( url='https://huggingface.co/lllyasviel/misc/resolve/main/control-lora-canny-rank128.safetensors', diff --git a/modules/flags.py b/modules/flags.py index c9d13fd8..3dc7a021 100644 --- a/modules/flags.py +++ b/modules/flags.py @@ -107,6 +107,7 @@ class Steps(IntEnum): SPEED = 30 EXTREME_SPEED = 8 LIGHTNING = 4 + HYPER_SD = 4 class StepsUOV(IntEnum): @@ -114,6 +115,7 @@ class StepsUOV(IntEnum): SPEED = 18 EXTREME_SPEED = 8 LIGHTNING = 4 + HYPER_SD = 4 class Performance(Enum): @@ -121,6 +123,7 @@ class Performance(Enum): SPEED = 'Speed' EXTREME_SPEED = 'Extreme Speed' LIGHTNING = 'Lightning' + HYPER_SD = 'Hyper-SD' @classmethod def list(cls) -> list: @@ -130,7 +133,7 @@ class Performance(Enum): def has_restricted_features(cls, x) -> bool: if isinstance(x, Performance): x = x.value - return x in [cls.EXTREME_SPEED.value, cls.LIGHTNING.value] + return x in [cls.EXTREME_SPEED.value, cls.LIGHTNING.value, cls.HYPER_SD.value] def steps(self) -> int | None: return Steps[self.name].value if Steps[self.name] else None From 27df5df20bee3c9e2c5e30f59334462bf741a8af Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Tue, 30 Apr 2024 15:06:33 +0200 Subject: [PATCH 2/4] feat: use LoRA weight 0.8, sampler dpmpp_sde_gpu and scheduler_name karras suggested in https://github.com/lllyasviel/Fooocus/discussions/2813#discussioncomment-9245251 results see https://github.com/lllyasviel/Fooocus/discussions/2813#discussioncomment-9275251 --- modules/async_worker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/async_worker.py b/modules/async_worker.py index a8f857b0..a549a5a3 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -266,14 +266,14 @@ def worker(): elif performance_selection == Performance.HYPER_SD: print('Enter Hyper-SD mode.') progressbar(async_task, 1, 'Downloading Hyper-SD components ...') - loras += [(modules.config.downloading_sdxl_hyper_sd_lora(), 1.0)] + loras += [(modules.config.downloading_sdxl_hyper_sd_lora(), 0.8)] if refiner_model_name != 'None': print(f'Refiner disabled in Hyper-SD mode.') refiner_model_name = 'None' - sampler_name = 'ddim' - scheduler_name = 'sgm_uniform' + sampler_name = 'dpmpp_sde_gpu' + scheduler_name = 'karras' sharpness = 0.0 guidance_scale = 1.0 adaptive_cfg = 1.0 From 1a9faf4d1bed0af009b5b56810ce85b40ca72097 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Thu, 2 May 2024 21:19:22 +0200 Subject: [PATCH 3/4] feat: change ByteDance huggingface profile with mashb1t --- modules/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/config.py b/modules/config.py index e6b66f1c..b61cdec4 100644 --- a/modules/config.py +++ b/modules/config.py @@ -609,7 +609,7 @@ def downloading_sdxl_lcm_lora(): def downloading_sdxl_lightning_lora(): load_file_from_url( - url='https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_4step_lora.safetensors', + url='https://huggingface.co/mashb1t/misc/resolve/main/sdxl_lightning_4step_lora.safetensors', model_dir=paths_loras[0], file_name=sdxl_lightning_lora ) @@ -618,7 +618,7 @@ def downloading_sdxl_lightning_lora(): def downloading_sdxl_hyper_sd_lora(): load_file_from_url( - url='https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-4steps-lora.safetensors', + url='https://huggingface.co/mashb1t/misc/resolve/main/sdxl_hyper_sd_4step_lora.safetensors', model_dir=paths_loras[0], file_name=sdxl_hyper_sd_lora ) From 8ef1a2119c79de18c0e296088b2f2c1d6b6d36da Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sat, 4 May 2024 16:18:25 +0200 Subject: [PATCH 4/4] wip: add hyper-sd 8 step cfg lora with negative prompt support --- modules/async_worker.py | 8 ++++++++ modules/config.py | 12 +++++++++++- modules/flags.py | 3 +++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/modules/async_worker.py b/modules/async_worker.py index a549a5a3..b856851d 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -282,6 +282,14 @@ def worker(): adm_scaler_negative = 1.0 adm_scaler_end = 0.0 + elif performance_selection == Performance.HYPER_SD8: + print('Enter Hyper-SD8 mode.') + progressbar(async_task, 1, 'Downloading Hyper-SD components ...') + loras += [(modules.config.downloading_sdxl_hyper_sd_cfg_lora(), 0.3)] + + sampler_name = 'dpmpp_sde_gpu' + scheduler_name = 'normal' + print(f'[Parameters] Adaptive CFG = {adaptive_cfg}') print(f'[Parameters] Sharpness = {sharpness}') print(f'[Parameters] ControlNet Softness = {controlnet_softness}') diff --git a/modules/config.py b/modules/config.py index b61cdec4..0647c3e7 100644 --- a/modules/config.py +++ b/modules/config.py @@ -539,8 +539,9 @@ wildcard_filenames = [] sdxl_lcm_lora = 'sdxl_lcm_lora.safetensors' sdxl_lightning_lora = 'sdxl_lightning_4step_lora.safetensors' +sdxl_hyper_sd_cfg_lora = 'sdxl_hyper_sd_8step_cfg_lora.safetensors' sdxl_hyper_sd_lora = 'sdxl_hyper_sd_4step_lora.safetensors' -loras_metadata_remove = [sdxl_lcm_lora, sdxl_lightning_lora, sdxl_hyper_sd_lora] +loras_metadata_remove = [sdxl_lcm_lora, sdxl_lightning_lora, sdxl_hyper_sd_cfg_lora, sdxl_hyper_sd_lora] def get_model_filenames(folder_paths, extensions=None, name_filter=None): @@ -625,6 +626,15 @@ def downloading_sdxl_hyper_sd_lora(): return sdxl_hyper_sd_lora +def downloading_sdxl_hyper_sd_cfg_lora(): + load_file_from_url( + url='https://huggingface.co/mashb1t/misc/resolve/main/sdxl_hyper_sd_8step_cfg_lora.safetensors', + model_dir=paths_loras[0], + file_name=sdxl_hyper_sd_cfg_lora + ) + return sdxl_hyper_sd_lora + + def downloading_controlnet_canny(): load_file_from_url( url='https://huggingface.co/lllyasviel/misc/resolve/main/control-lora-canny-rank128.safetensors', diff --git a/modules/flags.py b/modules/flags.py index 3dc7a021..e31a0f5a 100644 --- a/modules/flags.py +++ b/modules/flags.py @@ -107,6 +107,7 @@ class Steps(IntEnum): SPEED = 30 EXTREME_SPEED = 8 LIGHTNING = 4 + HYPER_SD8 = 8 HYPER_SD = 4 @@ -115,6 +116,7 @@ class StepsUOV(IntEnum): SPEED = 18 EXTREME_SPEED = 8 LIGHTNING = 4 + HYPER_SD8 = 8 HYPER_SD = 4 @@ -123,6 +125,7 @@ class Performance(Enum): SPEED = 'Speed' EXTREME_SPEED = 'Extreme Speed' LIGHTNING = 'Lightning' + HYPER_SD8 = 'Hyper-SD8' HYPER_SD = 'Hyper-SD' @classmethod