fix check-schedulers

Signed-off-by: vladmandic <mandic00@live.com>
This commit is contained in:
vladmandic
2026-04-10 13:08:53 +02:00
parent 4349479eab
commit 9e6ce8a261
4 changed files with 17 additions and 14 deletions
+2 -1
View File
@@ -1,6 +1,6 @@
# Change Log for SD.Next
## Update for 2026-04-10
## Update for 2026-04-12
- **Models**
- [AiArtLab SDXS-1B](https://huggingface.co/AiArtLab/sdxs-1b) Simple Diffusion XS *(training still in progress)*
@@ -54,6 +54,7 @@
- fix prompt weighted lists and internal wildcards
- improve `path_to_repo` handling for custom paths
- eliminate `api` auth security bypass
- multiple `schedulers` signature corrections
## Update for 2026-04-01
@@ -141,7 +141,8 @@ class LangevinDynamicsScheduler(SchedulerMixin, ConfigMixin):
sigmas = np.array(trajectory)
# Force monotonicity to prevent negative h in step()
sigmas = np.sort(sigmas)[::-1]
# Reverse creates a negative-stride view; copy to keep torch.from_numpy compatible.
sigmas = np.sort(sigmas)[::-1].copy()
sigmas[-1] = end_sigma
if self.config.use_karras_sigmas:
+12 -11
View File
@@ -11,6 +11,7 @@ from modules.sd_samplers_common import SamplerData, flow_models
debug = os.environ.get('SD_SAMPLER_DEBUG', None) is not None
debug_log = log.trace if debug else lambda *args, **kwargs: None
scheduler_overrides = {} # set by sd_samplers.create_sampler() before constructor call
flow_exclude = ['PeRFlow']
# Diffusers schedulers
try:
@@ -91,9 +92,6 @@ try:
RungeKutta57Scheduler,
RungeKutta67Scheduler,
SpecializedRKScheduler,
# RESMultistepSDEScheduler,
# BongTangentScheduler,
# SimpleExponentialScheduler,
)
except Exception as e:
log.error(f'Sampler import: version={diffusers.__version__} error: {e}')
@@ -169,6 +167,7 @@ config.update({
'KDPM2': { 'use_karras_sigmas': False, 'use_exponential_sigmas': False, 'use_beta_sigmas': False, 'steps_offset': 0, 'timestep_spacing': 'linspace' },
'KDPM2 a': { 'use_karras_sigmas': False, 'use_exponential_sigmas': False, 'use_beta_sigmas': False, 'steps_offset': 0, 'timestep_spacing': 'linspace' },
'CMSI': { },
'LCM': { },
'CogX DDIM': { 'beta_schedule': "scaled_linear", 'beta_start': 0.00085, 'beta_end': 0.012, 'set_alpha_to_one': True, 'rescale_betas_zero_snr': False },
'DDIM Parallel': {},
'DDPM Parallel': {},
@@ -221,6 +220,7 @@ config.update({
'Lobatto 4': { 'variant': 'lobatto_iiia_4s', **config['Res4Lyf'] },
'Radau IIA 2': { 'variant': 'radau_iia_2s', **config['Res4Lyf'] },
'Radau IIA 3': { 'variant': 'radau_iia_3s', **config['Res4Lyf'] },
'Radau IIA 4': { 'variant': 'radau_iia_5s', **config['Res4Lyf'] },
'Gauss-Legendre 2S': { 'variant': 'gauss-legendre_2s', **config['Res4Lyf'] },
'Gauss-Legendre 3S': { 'variant': 'gauss-legendre_3s', **config['Res4Lyf'] },
'Gauss-Legendre 4S': { 'variant': 'gauss-legendre_4s', **config['Res4Lyf'] },
@@ -249,7 +249,7 @@ samplers_data_diffusers = [
SamplerData('DPM++ SDE', lambda model: DiffusionSampler('DPM++ SDE', DPMSolverMultistepScheduler, model), [], {}),
SamplerData('DPM++ 2M SDE', lambda model: DiffusionSampler('DPM++ 2M SDE', DPMSolverMultistepScheduler, model), [], {}),
SamplerData('DPM++ 2M EDM', lambda model: DiffusionSampler('DPM++ 2M EDM', EDMDPMSolverMultistepScheduler, model), [], {}),
SamplerData('DPM++ Cosine', lambda model: DiffusionSampler('DPM++ 2M EDM', CosineDPMSolverMultistepScheduler, model), [], {}),
SamplerData('DPM++ Cosine', lambda model: DiffusionSampler('DPM++ Cosine', CosineDPMSolverMultistepScheduler, model), [], {}),
SamplerData('DPM SDE', lambda model: DiffusionSampler('DPM SDE', DPMSolverSDEScheduler, model), [], {}),
SamplerData('DPM++ Inverse', lambda model: DiffusionSampler('DPM++ Inverse', DPMSolverMultistepInverseScheduler, model), [], {}),
@@ -284,13 +284,14 @@ samplers_data_diffusers = [
SamplerData('CMSI', lambda model: DiffusionSampler('CMSI', CMStochasticIterativeScheduler, model), [], {}),
SamplerData('VDM Solver', lambda model: DiffusionSampler('VDM Solver', VDMScheduler, model), [], {}),
SamplerData('BDIA DDIM', lambda model: DiffusionSampler('BDIA DDIM g=0', BDIA_DDIMScheduler, model), [], {}),
SamplerData('BDIA DDIM', lambda model: DiffusionSampler('BDIA DDIM', BDIA_DDIMScheduler, model), [], {}),
SamplerData('ER-SDE', lambda model: DiffusionSampler('ER-SDE', ERSDEScheduler, model), [], {}),
SamplerData('ER-SDE 2M', lambda model: DiffusionSampler('ER-SDE 2M', ERSDEScheduler, model), [], {}),
SamplerData('ER-SDE 3M', lambda model: DiffusionSampler('ER-SDE 3M', ERSDEScheduler, model), [], {}),
SamplerData('ER-SDE FlowMatch', lambda model: DiffusionSampler('ER-SDE FlowMatch', ERSDEScheduler, model), [], {}),
SamplerData('ER-SDE 2M FlowMatch', lambda model: DiffusionSampler('ER-SDE 2M FlowMatch', ERSDEScheduler, model), [], {}),
SamplerData('ER-SDE 3M FlowMatch', lambda model: DiffusionSampler('ER-SDE 3M FlowMatch', ERSDEScheduler, model), [], {}),
SamplerData('BDIA DDIM', lambda model: DiffusionSampler('BDIA DDIM', BDIA_DDIMScheduler, model), [], {}),
SamplerData('LCM', lambda model: DiffusionSampler('LCM', LCMScheduler, model), [], {}),
SamplerData('LCM FlowMatch', lambda model: DiffusionSampler('LCM FlowMatch', FlowMatchLCMScheduler, model), [], {}),
SamplerData('TCD', lambda model: DiffusionSampler('TCD', TCDScheduler, model), [], {}),
@@ -322,7 +323,7 @@ samplers_data_diffusers = [
SamplerData('RES-Multistep 3M', lambda model: DiffusionSampler('RES-Multistep 3M', RESMultistepScheduler, model), [], {}),
SamplerData('RES-SDE 2S', lambda model: DiffusionSampler('RES-SDE 2S', RESSinglestepSDEScheduler, model), [], {}),
SamplerData('RES-SDE 3S', lambda model: DiffusionSampler('RES-SDE 3S', RESSinglestepSDEScheduler, model), [], {}),
SamplerData('DEIS-Multistep', lambda model: DiffusionSampler('DEIS Multistep', RESDEISMultistepScheduler, model), [], {}),
SamplerData('DEIS-Multistep', lambda model: DiffusionSampler('DEIS-Multistep', RESDEISMultistepScheduler, model), [], {}),
SamplerData('DEIS-Unified 1S', lambda model: DiffusionSampler('DEIS-Unified 1S', RESUnifiedScheduler, model), [], {}),
SamplerData('DEIS-Unified 2M', lambda model: DiffusionSampler('DEIS-Unified 2M', RESUnifiedScheduler, model), [], {}),
SamplerData('Sigmoid Sigma', lambda model: DiffusionSampler('Sigmoid Sigma', CommonSigmaScheduler, model), [], {}),
@@ -345,8 +346,8 @@ samplers_data_diffusers = [
SamplerData('Lobatto 3', lambda model: DiffusionSampler('Lobatto 3', LobattoScheduler, model), [], {}),
SamplerData('Lobatto 4', lambda model: DiffusionSampler('Lobatto 4', LobattoScheduler, model), [], {}),
SamplerData('Radau IIA 2', lambda model: DiffusionSampler('Radau IIA 2', RadauIIAScheduler, model), [], {}),
SamplerData('Radau IIA 3', lambda model: DiffusionSampler('Radau IIA 2', RadauIIAScheduler, model), [], {}),
SamplerData('Radau IIA 4', lambda model: DiffusionSampler('Radau IIA 2', RadauIIAScheduler, model), [], {}),
SamplerData('Radau IIA 3', lambda model: DiffusionSampler('Radau IIA 3', RadauIIAScheduler, model), [], {}),
SamplerData('Radau IIA 4', lambda model: DiffusionSampler('Radau IIA 4', RadauIIAScheduler, model), [], {}),
SamplerData('Gauss-Legendre 2S', lambda model: DiffusionSampler('Gauss-Legendre 2S', GaussLegendreScheduler, model), [], {}),
SamplerData('Gauss-Legendre 3S', lambda model: DiffusionSampler('Gauss-Legendre 3S', GaussLegendreScheduler, model), [], {}),
SamplerData('Gauss-Legendre 4S', lambda model: DiffusionSampler('Gauss-Legendre 4S', GaussLegendreScheduler, model), [], {}),
@@ -422,8 +423,8 @@ class DiffusionSampler:
timesteps = [int(x) for x in timesteps if x.isdigit()]
sched_sigma = get_override('schedulers_sigma')
if len(timesteps) == 0:
if 'sigma_schedule' in self.config:
self.config['sigma_schedule'] = sched_sigma if sched_sigma != 'default' else None
if 'sigma_schedule' in self.config and sched_sigma != 'default':
self.config['sigma_schedule'] = sched_sigma
if sched_sigma == 'default' and shared.sd_model_type in flow_models and 'use_flow_sigmas' in self.config:
self.config['use_flow_sigmas'] = True
elif sched_sigma == 'betas' and 'use_beta_sigmas' in self.config:
@@ -480,7 +481,7 @@ class DiffusionSampler:
del self.config['beta_end']
del self.config['beta_schedule']
del self.config['prediction_type']
if 'prediction_type' in self.config and 'Flow' in name:
if ('prediction_type' in self.config) and ('Flow' in name) and (name not in flow_exclude):
self.config['prediction_type'] = 'flow_prediction'
if 'SGM' in name:
self.config['timestep_spacing'] = 'trailing'
+1 -1
Submodule wiki updated: cbbbfc73af...ec043ac173