Skip to content

Commit 86a92bb

Browse files
committed
Add more karras schedulers
1 parent daa5a88 commit 86a92bb

File tree

5 files changed

+29
-9
lines changed

5 files changed

+29
-9
lines changed

invokeai/backend/stable_diffusion/schedulers/schedulers.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"ddim",
2525
"ddpm",
2626
"deis",
27+
"deis_k",
2728
"lms",
2829
"lms_k",
2930
"pndm",
@@ -33,7 +34,9 @@
3334
"euler_k",
3435
"euler_a",
3536
"kdpm_2",
37+
"kdpm_2_k",
3638
"kdpm_2_a",
39+
"kdpm_2_a_k",
3740
"dpmpp_2s",
3841
"dpmpp_2s_k",
3942
"dpmpp_2m",
@@ -43,14 +46,16 @@
4346
"dpmpp_sde",
4447
"dpmpp_sde_k",
4548
"unipc",
49+
"unipc_k",
4650
"lcm",
4751
"tcd",
4852
]
4953

5054
SCHEDULER_MAP: dict[SCHEDULER_NAME_VALUES, tuple[Type[SchedulerMixin], dict[str, Any]]] = {
5155
"ddim": (DDIMScheduler, {}),
5256
"ddpm": (DDPMScheduler, {}),
53-
"deis": (DEISMultistepScheduler, {}),
57+
"deis": (DEISMultistepScheduler, {"use_karras_sigmas": False}),
58+
"deis_k": (DEISMultistepScheduler, {"use_karras_sigmas": True}),
5459
"lms": (LMSDiscreteScheduler, {"use_karras_sigmas": False}),
5560
"lms_k": (LMSDiscreteScheduler, {"use_karras_sigmas": True}),
5661
"pndm": (PNDMScheduler, {}),
@@ -59,8 +64,10 @@
5964
"euler": (EulerDiscreteScheduler, {"use_karras_sigmas": False}),
6065
"euler_k": (EulerDiscreteScheduler, {"use_karras_sigmas": True}),
6166
"euler_a": (EulerAncestralDiscreteScheduler, {}),
62-
"kdpm_2": (KDPM2DiscreteScheduler, {}),
63-
"kdpm_2_a": (KDPM2AncestralDiscreteScheduler, {}),
67+
"kdpm_2": (KDPM2DiscreteScheduler, {"use_karras_sigmas": False}),
68+
"kdpm_2_k": (KDPM2DiscreteScheduler, {"use_karras_sigmas": True}),
69+
"kdpm_2_a": (KDPM2AncestralDiscreteScheduler, {"use_karras_sigmas": False}),
70+
"kdpm_2_a_k": (KDPM2AncestralDiscreteScheduler, {"use_karras_sigmas": True}),
6471
"dpmpp_2s": (DPMSolverSinglestepScheduler, {"use_karras_sigmas": False}),
6572
"dpmpp_2s_k": (DPMSolverSinglestepScheduler, {"use_karras_sigmas": True}),
6673
"dpmpp_2m": (DPMSolverMultistepScheduler, {"use_karras_sigmas": False}),
@@ -69,7 +76,8 @@
6976
"dpmpp_2m_sde_k": (DPMSolverMultistepScheduler, {"use_karras_sigmas": True, "algorithm_type": "sde-dpmsolver++"}),
7077
"dpmpp_sde": (DPMSolverSDEScheduler, {"use_karras_sigmas": False, "noise_sampler_seed": 0}),
7178
"dpmpp_sde_k": (DPMSolverSDEScheduler, {"use_karras_sigmas": True, "noise_sampler_seed": 0}),
72-
"unipc": (UniPCMultistepScheduler, {"cpu_only": True}),
79+
"unipc": (UniPCMultistepScheduler, {"use_karras_sigmas": False, "cpu_only": True}),
80+
"unipc_k": (UniPCMultistepScheduler, {"use_karras_sigmas": True, "cpu_only": True}),
7381
"lcm": (LCMScheduler, {}),
7482
"tcd": (TCDScheduler, {}),
7583
}

invokeai/frontend/web/src/features/nodes/types/common.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,16 @@ export const zSchedulerField = z.enum([
4040
'pndm',
4141
'unipc',
4242
'euler_k',
43+
'deis_k',
4344
'dpmpp_2s_k',
4445
'dpmpp_2m_k',
4546
'dpmpp_2m_sde_k',
4647
'dpmpp_sde_k',
4748
'heun_k',
49+
'kdpm_2_k',
50+
'kdpm_2_a_k',
4851
'lms_k',
52+
'unipc_k',
4953
'euler_a',
5054
'kdpm_2_a',
5155
'lcm',

invokeai/frontend/web/src/features/nodes/types/v2/common.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,16 @@ export const zSchedulerField = z.enum([
3131
'pndm',
3232
'unipc',
3333
'euler_k',
34+
'deis_k',
3435
'dpmpp_2s_k',
3536
'dpmpp_2m_k',
3637
'dpmpp_2m_sde_k',
3738
'dpmpp_sde_k',
3839
'heun_k',
40+
'kdpm_2_k',
41+
'kdpm_2_a_k',
3942
'lms_k',
43+
'unipc_k',
4044
'euler_a',
4145
'kdpm_2_a',
4246
'lcm',

invokeai/frontend/web/src/features/parameters/types/constants.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,16 @@ export const SCHEDULER_OPTIONS: ComboboxOption[] = [
6666
{ value: 'pndm', label: 'PNDM' },
6767
{ value: 'unipc', label: 'UniPC' },
6868
{ value: 'euler_k', label: 'Euler Karras' },
69+
{ value: 'deis_k', label: 'DEIS Karras' },
6970
{ value: 'dpmpp_sde_k', label: 'DPM++ SDE Karras' },
7071
{ value: 'dpmpp_2s_k', label: 'DPM++ 2S Karras' },
7172
{ value: 'dpmpp_2m_k', label: 'DPM++ 2M Karras' },
7273
{ value: 'dpmpp_2m_sde_k', label: 'DPM++ 2M SDE Karras' },
7374
{ value: 'heun_k', label: 'Heun Karras' },
75+
{ value: 'kdpm_2_k', label: 'KDPM 2 Karras' },
76+
{ value: 'kdpm_2_a_k', label: 'KDPM 2 Ancestral Karras' },
7477
{ value: 'lms_k', label: 'LMS Karras' },
78+
{ value: 'unipc_k', label: 'UniPC Karras' },
7579
{ value: 'euler_a', label: 'Euler Ancestral' },
7680
{ value: 'kdpm_2_a', label: 'KDPM 2 Ancestral' },
7781
{ value: 'lcm', label: 'LCM' },

invokeai/frontend/web/src/services/api/schema.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3553,7 +3553,7 @@ export type components = {
35533553
* @default euler
35543554
* @enum {string}
35553555
*/
3556-
scheduler?: "ddim" | "ddpm" | "deis" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_a" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "lcm" | "tcd";
3556+
scheduler?: "ddim" | "ddpm" | "deis" | "deis_k" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_k" | "kdpm_2_a" | "kdpm_2_a_k" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "unipc_k" | "lcm" | "tcd";
35573557
/**
35583558
* UNet
35593559
* @description UNet (scheduler, LoRAs)
@@ -8553,7 +8553,7 @@ export type components = {
85538553
* Scheduler
85548554
* @description Default scheduler for this model
85558555
*/
8556-
scheduler?: ("ddim" | "ddpm" | "deis" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_a" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "lcm" | "tcd") | null;
8556+
scheduler?: ("ddim" | "ddpm" | "deis" | "deis_k" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_k" | "kdpm_2_a" | "kdpm_2_a_k" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "unipc_k" | "lcm" | "tcd") | null;
85578557
/**
85588558
* Steps
85598559
* @description Default number of steps for this model
@@ -11467,7 +11467,7 @@ export type components = {
1146711467
* @default euler
1146811468
* @enum {string}
1146911469
*/
11470-
scheduler?: "ddim" | "ddpm" | "deis" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_a" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "lcm" | "tcd";
11470+
scheduler?: "ddim" | "ddpm" | "deis" | "deis_k" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_k" | "kdpm_2_a" | "kdpm_2_a_k" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "unipc_k" | "lcm" | "tcd";
1147111471
/**
1147211472
* type
1147311473
* @default scheduler
@@ -11483,7 +11483,7 @@ export type components = {
1148311483
* @description Scheduler to use during inference
1148411484
* @enum {string}
1148511485
*/
11486-
scheduler: "ddim" | "ddpm" | "deis" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_a" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "lcm" | "tcd";
11486+
scheduler: "ddim" | "ddpm" | "deis" | "deis_k" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_k" | "kdpm_2_a" | "kdpm_2_a_k" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "unipc_k" | "lcm" | "tcd";
1148711487
/**
1148811488
* type
1148911489
* @default scheduler_output
@@ -13261,7 +13261,7 @@ export type components = {
1326113261
* @default euler
1326213262
* @enum {string}
1326313263
*/
13264-
scheduler?: "ddim" | "ddpm" | "deis" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_a" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "lcm" | "tcd";
13264+
scheduler?: "ddim" | "ddpm" | "deis" | "deis_k" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_k" | "kdpm_2_a" | "kdpm_2_a_k" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc" | "unipc_k" | "lcm" | "tcd";
1326513265
/**
1326613266
* UNet
1326713267
* @description UNet (scheduler, LoRAs)

0 commit comments

Comments
 (0)