Change the default SDXL sampler to Euler A + Linear and set Guidence scale value to 4

pull/4314/head
Disty0 2025-10-24 19:58:59 +03:00
parent 2a348908f2
commit 181369b792
4 changed files with 23 additions and 12 deletions

View File

@ -1,18 +1,19 @@
{
"_class_name": "EulerDiscreteScheduler",
"_diffusers_version": "0.19.0.dev0",
"_class_name": "EulerAncestralDiscreteScheduler",
"_diffusers_version": "0.35.1",
"beta_end": 0.012,
"beta_schedule": "scaled_linear",
"beta_schedule": "linear",
"beta_start": 0.00085,
"clip_sample": false,
"interpolation_type": "linear",
"num_train_timesteps": 1000,
"prediction_type": "epsilon",
"rescale_betas_zero_snr": false,
"sample_max_value": 1.0,
"set_alpha_to_one": false,
"skip_prk_steps": true,
"steps_offset": 1,
"timestep_spacing": "leading",
"timestep_spacing": "trailing",
"trained_betas": null,
"use_karras_sigmas": false
}

View File

@ -1287,7 +1287,7 @@ def install_optional():
install('hf_xet', ignore=True, quiet=True)
install('nvidia-ml-py', ignore=True, quiet=True)
install('optimum-quanto==0.2.7', ignore=True, quiet=True)
install('pillow-jxl-plugin==1.3.4', ignore=True, quiet=True)
install('pillow-jxl-plugin==1.3.5', ignore=True, quiet=True)
install('torchao==0.10.0', ignore=True, quiet=True)
install('ultralytics==8.3.40', ignore=True, quiet=True)
try:

View File

@ -567,18 +567,30 @@ def load_sdnq_model(checkpoint_info, pipeline, diffusers_load_config, op):
return sd_model
def set_overrides(sd_model, checkpoint_info):
def set_overrides(sd_model, checkpoint_info, model_type):
checkpoint_info_name = checkpoint_info.name.lower()
if "Kandinsky" in sd_model.__class__.__name__:
sd_model.scheduler.name = 'DDIM'
elif (
checkpoint_info.path.lower().endswith('.safetensors')
and model_type.startswith("Stable Diffusion") and model_type != "Stable Diffusion 3"
): # SDXL and SD 1.5
scheduler_config = sd_model.scheduler.config
scheduler_config['beta_schedule'] = 'linear'
scheduler_config['timestep_spacing'] = 'trailing'
sd_model.scheduler = diffusers.EulerAncestralDiscreteScheduler.from_config(scheduler_config)
if 'bigaspv25' in checkpoint_info_name or ('flow' in checkpoint_info_name and 'flower' not in checkpoint_info_name):
scheduler_config = sd_model.scheduler.config
scheduler_config['prediction_type'] = 'flow_prediction'
scheduler_config['use_flow_sigmas'] = True
scheduler_config['beta_schedule'] = 'linear'
scheduler_config['use_flow_sigmas'] = True
sd_model.scheduler = diffusers.UniPCMultistepScheduler.from_config(scheduler_config)
shared.log.info(f'Setting override: model="{checkpoint_info.name}" component=scheduler prediction="flow-prediction"')
elif 'vpred' in checkpoint_info_name or 'v-pred' in checkpoint_info_name or 'v_pred' in checkpoint_info_name:
scheduler_config = sd_model.scheduler.config
scheduler_config['prediction_type'] = 'v_prediction'
scheduler_config['beta_schedule'] = 'scaled_linear'
scheduler_config['rescale_betas_zero_snr'] = True
sd_model.scheduler = diffusers.EulerDiscreteScheduler.from_config(scheduler_config)
shared.log.info(f'Setting override: model="{checkpoint_info.name}" component=scheduler prediction="v-prediction" rescale=True')
@ -590,6 +602,7 @@ def set_overrides(sd_model, checkpoint_info):
if 'v_pred' in keys: # NoobAI VPred models added empty v_pred and ztsnr keys
scheduler_config = sd_model.scheduler.config
scheduler_config['prediction_type'] = 'v_prediction'
scheduler_config['beta_schedule'] = 'scaled_linear'
if 'ztsnr' in keys:
scheduler_config['rescale_betas_zero_snr'] = True
sd_model.scheduler = diffusers.EulerDiscreteScheduler.from_config(scheduler_config)
@ -713,12 +726,9 @@ def load_diffuser(checkpoint_info=None, op='model', revision=None): # pylint: di
shared.log.error(f'Load {op}: name="{checkpoint_info.name if checkpoint_info is not None else None}" not loaded')
return
set_overrides(sd_model, checkpoint_info)
set_overrides(sd_model, checkpoint_info, model_type)
set_defaults(sd_model, checkpoint_info)
if "Kandinsky" in sd_model.__class__.__name__: # need a special case
sd_model.scheduler.name = 'DDIM'
if hasattr(sd_model, "unet") and model_type not in ['Stable Cascade']: # others calls load_diffuser again
sd_unet.load_unet(sd_model, checkpoint_info.path)

View File

@ -15,7 +15,7 @@ def create_guidance_inputs(tab):
guidance_btn = ui_components.ToolButton(value=ui_symbols.book, elem_id=f"{tab}_guider_docs")
guidance_btn.click(fn=None, _js='getGuidanceDocs', inputs=[guidance_name], outputs=[])
with gr.Row(visible=shared.opts.model_modular_enable):
guidance_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.1, label='_Guidance scale', value=6.0, elem_id=f"{tab}_guidance_scale")
guidance_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.1, label='_Guidance scale', value=4.0, elem_id=f"{tab}_guidance_scale")
guidance_rescale = gr.Slider(minimum=0.0, maximum=1.0, step=0.05, label='_Guidance rescale', value=0.0, elem_id=f"{tab}_guidance_rescale")
with gr.Row(visible=shared.opts.model_modular_enable):
guidance_start = gr.Slider(minimum=0.0, maximum=1.0, step=0.05, label='_Guidance start', value=0.0, elem_id=f"{tab}_guidance_start")