From 71631b7a368083507ed7cba3bb438df887dc422d Mon Sep 17 00:00:00 2001 From: Disty0 Date: Sat, 16 Sep 2023 13:48:22 +0300 Subject: [PATCH] Diffusers add DPM SDE sampler --- modules/paths.py | 2 +- modules/sd_models.py | 2 +- modules/sd_samplers_diffusers.py | 3 +++ modules/shared.py | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/paths.py b/modules/paths.py index a502be0cf..ee9e9d194 100644 --- a/modules/paths.py +++ b/modules/paths.py @@ -71,7 +71,7 @@ def create_paths(opts, log=None): try: relpath = os.path.relpath(fullpath, script_path) opts.data[folder] = relpath - except: + except Exception: opts.data[folder] = fullpath return opts.data[folder] diff --git a/modules/sd_models.py b/modules/sd_models.py index 951c1217a..b9acd87a4 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -1211,7 +1211,7 @@ def apply_token_merging(sd_model, token_merging_ratio=0): ) shared.log.debug(f'Applying token merging: ratio={token_merging_ratio}') sd_model.applied_token_merged_ratio = token_merging_ratio - except: + except Exception: shared.log.warning(f'Token merging not supported: pipeline={sd_model.__class__.__name__}') else: sd_model.applied_token_merged_ratio = 0 diff --git a/modules/sd_samplers_diffusers.py b/modules/sd_samplers_diffusers.py index 7e34b30ed..ec9388588 100644 --- a/modules/sd_samplers_diffusers.py +++ b/modules/sd_samplers_diffusers.py @@ -8,6 +8,7 @@ try: DEISMultistepScheduler, DPMSolverMultistepScheduler, DPMSolverSinglestepScheduler, + DPMSolverSDEScheduler, EulerAncestralDiscreteScheduler, EulerDiscreteScheduler, HeunDiscreteScheduler, @@ -30,6 +31,7 @@ config = { 'DEIS': { 'solver_order': 2, 'thresholding': False, 'sample_max_value': 1.0, 'algorithm_type': "deis", 'solver_type': "logrho", 'lower_order_final': True }, 'DPM 1S': { 'solver_order': 2, 'thresholding': False, 'sample_max_value': 1.0, 'algorithm_type': "dpmsolver++", 'solver_type': "midpoint", 'lower_order_final': True, 'use_karras_sigmas': False }, 'DPM 2M': { 'thresholding': False, 'sample_max_value': 1.0, 'algorithm_type': "dpmsolver++", 'solver_type': "midpoint", 'lower_order_final': True, 'use_karras_sigmas': False }, + 'DPM SDE': { 'use_karras_sigmas': False }, 'Euler a': { }, 'Euler': { 'interpolation_type': "linear", 'use_karras_sigmas': False }, 'Heun': { 'use_karras_sigmas': False }, @@ -52,6 +54,7 @@ samplers_data_diffusers = [ sd_samplers_common.SamplerData('KDPM2 a', lambda model: DiffusionSampler('KDPM2 a', KDPM2AncestralDiscreteScheduler, model), [], {}), sd_samplers_common.SamplerData('DPM 1S', lambda model: DiffusionSampler('DPM++ 1S', DPMSolverSinglestepScheduler, model), [], {}), sd_samplers_common.SamplerData('DPM 2M', lambda model: DiffusionSampler('DPM++ 2M', DPMSolverMultistepScheduler, model), [], {}), + sd_samplers_common.SamplerData('DPM SDE', lambda model: DiffusionSampler('DPM SDE', DPMSolverSDEScheduler, model), [], {}), sd_samplers_common.SamplerData('Euler', lambda model: DiffusionSampler('Euler', EulerDiscreteScheduler, model), [], {}), sd_samplers_common.SamplerData('Euler a', lambda model: DiffusionSampler('Euler a', EulerAncestralDiscreteScheduler, model), [], {}), sd_samplers_common.SamplerData('Heun', lambda model: DiffusionSampler('Heun', HeunDiscreteScheduler, model), [], {}), diff --git a/modules/shared.py b/modules/shared.py index 252baa251..bc8f896b5 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -558,7 +558,7 @@ options_templates.update(options_section(('live-preview', "Live Previews"), { })) options_templates.update(options_section(('sampler-params', "Sampler Settings"), { - "show_samplers": OptionInfo(["Default", "Euler a", "UniPC", "DEIS", "DDIM", "DPM 1S", "DPM 2M", "DPM++ 2M SDE", "DPM++ 2M SDE Karras", "DPM2 Karras", "DPM++ 2M Karras"], "Show samplers in user interface", gr.CheckboxGroup, lambda: {"choices": [x.name for x in list_samplers() if x.name != "PLMS"]}), + "show_samplers": OptionInfo(["Default", "Euler a", "UniPC", "DEIS", "DDIM", "DPM 1S", "DPM 2M", "DPM SDE", "DPM++ 2M SDE", "DPM++ 2M SDE Karras", "DPM2 Karras", "DPM++ 2M Karras"], "Show samplers in user interface", gr.CheckboxGroup, lambda: {"choices": [x.name for x in list_samplers() if x.name != "PLMS"]}), 'uni_pc_variant': OptionInfo("bh1", "UniPC variant", gr.Radio, {"choices": ["bh1", "bh2", "vary_coeff"]}), 'uni_pc_skip_type': OptionInfo("time_uniform", "UniPC skip type", gr.Radio, {"choices": ["time_uniform", "time_quadratic", "logSNR"]}), 'eta_noise_seed_delta': OptionInfo(0, "Noise seed delta (eta)", gr.Number, {"precision": 0}), @@ -570,7 +570,7 @@ options_templates.update(options_section(('sampler-params', "Sampler Settings"), "schedulers_use_karras": OptionInfo(True, "Samplers use Karras sigmas where applicable"), "schedulers_use_loworder": OptionInfo(True, "Samplers use simplified solvers in final steps where applicable"), "schedulers_use_thresholding": OptionInfo(False, "Samplers use dynamic thresholding where applicable"), - "schedulers_dpm_solver": OptionInfo("sde-dpmsolver++", "Samplers DPM solver algorithm", gr.Radio, lambda: {"choices": ['dpmsolver', 'dpmsolver++', 'sde-dpmsolver++']}), + "schedulers_dpm_solver": OptionInfo("sde-dpmsolver++", "Samplers DPM solver algorithm", gr.Radio, lambda: {"choices": ['dpmsolver', 'dpmsolver++', 'sde-dpmsolver', 'sde-dpmsolver++']}), "schedulers_beta_schedule": OptionInfo("default", "Samplers override beta schedule", gr.Radio, lambda: {"choices": ['default', 'linear', 'scaled_linear', 'squaredcos_cap_v2']}), 'schedulers_beta_start': OptionInfo(0, "Samplers override beta start", gr.Number, {}), 'schedulers_beta_end': OptionInfo(0, "Samplers override beta end", gr.Number, {}),