add k_dpmpp_2_a and k_dpmpp_2 solvers options (#1389)

* add k_dpmpp_2_a and k_dpmpp_2 solvers options

* update frontend

Co-authored-by: Victor <victorca25@users.noreply.github.com>
Co-authored-by: Lincoln Stein <lincoln.stein@gmail.com>
This commit is contained in:
victorca25 2022-11-30 14:32:52 +01:00 committed by GitHub
parent a9aa4e45aa
commit 2443e5dc01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 21 additions and 1127 deletions

View File

@ -5,6 +5,8 @@ SAMPLER_CHOICES = [
"ddim", "ddim",
"k_dpm_2_a", "k_dpm_2_a",
"k_dpm_2", "k_dpm_2",
"k_dpmpp_2_a",
"k_dpmpp_2",
"k_euler_a", "k_euler_a",
"k_euler", "k_euler",
"k_heun", "k_heun",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>InvokeAI - A Stable Diffusion Toolkit</title> <title>InvokeAI - A Stable Diffusion Toolkit</title>
<link rel="shortcut icon" type="icon" href="./assets/favicon.0d253ced.ico" /> <link rel="shortcut icon" type="icon" href="./assets/favicon.0d253ced.ico" />
<script type="module" crossorigin src="./assets/index.2b7cd976.js"></script> <script type="module" crossorigin src="./assets/index.f1b8da92.js"></script>
<link rel="stylesheet" href="./assets/index.f999e69e.css"> <link rel="stylesheet" href="./assets/index.f999e69e.css">
</head> </head>

View File

@ -9,6 +9,8 @@ export const SAMPLERS: Array<string> = [
'k_lms', 'k_lms',
'k_dpm_2', 'k_dpm_2',
'k_dpm_2_a', 'k_dpm_2_a',
'k_dpmpp_2',
'k_dpmpp_2_a',
'k_euler', 'k_euler',
'k_euler_a', 'k_euler_a',
'k_heun', 'k_heun',

View File

@ -46,6 +46,8 @@ export declare type CommonGeneratedImageMetadata = {
| 'ddim' | 'ddim'
| 'k_dpm_2_a' | 'k_dpm_2_a'
| 'k_dpm_2' | 'k_dpm_2'
| 'k_dpmpp_2_a'
| 'k_dpmpp_2'
| 'k_euler_a' | 'k_euler_a'
| 'k_euler' | 'k_euler'
| 'k_heun' | 'k_heun'

View File

@ -120,7 +120,7 @@ gr = Generate(
safety_checker:bool = activate safety checker [False] safety_checker:bool = activate safety checker [False]
# this value is sticky and maintained between generation calls # this value is sticky and maintained between generation calls
sampler_name:str = ['ddim', 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms', 'plms'] // k_lms sampler_name:str = ['ddim', 'k_dpm_2_a', 'k_dpm_2', 'k_dpmpp_2', 'k_dpmpp_2_a', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms', 'plms'] // k_lms
# these are deprecated - use conf and model instead # these are deprecated - use conf and model instead
weights = path to model weights ('models/ldm/stable-diffusion-v1/model.ckpt') weights = path to model weights ('models/ldm/stable-diffusion-v1/model.ckpt')
@ -974,6 +974,10 @@ class Generate:
self.sampler = KSampler(self.model, 'dpm_2_ancestral', device=self.device) self.sampler = KSampler(self.model, 'dpm_2_ancestral', device=self.device)
elif self.sampler_name == 'k_dpm_2': elif self.sampler_name == 'k_dpm_2':
self.sampler = KSampler(self.model, 'dpm_2', device=self.device) self.sampler = KSampler(self.model, 'dpm_2', device=self.device)
elif self.sampler_name == 'k_dpmpp_2_a':
self.sampler = KSampler(self.model, 'dpmpp_2s_ancestral', device=self.device)
elif self.sampler_name == 'k_dpmpp_2':
self.sampler = KSampler(self.model, 'dpmpp_2m', device=self.device)
elif self.sampler_name == 'k_euler_a': elif self.sampler_name == 'k_euler_a':
self.sampler = KSampler(self.model, 'euler_ancestral', device=self.device) self.sampler = KSampler(self.model, 'euler_ancestral', device=self.device)
elif self.sampler_name == 'k_euler': elif self.sampler_name == 'k_euler':

View File

@ -101,6 +101,8 @@ SAMPLER_CHOICES = [
'ddim', 'ddim',
'k_dpm_2_a', 'k_dpm_2_a',
'k_dpm_2', 'k_dpm_2',
'k_dpmpp_2_a',
'k_dpmpp_2',
'k_euler_a', 'k_euler_a',
'k_euler', 'k_euler',
'k_heun', 'k_heun',

View File

@ -1490,7 +1490,7 @@ class LatentDiffusion(DDPM):
) )
loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()}) loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()})
logvar_t = self.logvar[t].to(self.device) logvar_t = self.logvar[t.item()].to(self.device)
loss = loss_simple / torch.exp(logvar_t) + logvar_t loss = loss_simple / torch.exp(logvar_t) + logvar_t
# loss = loss_simple / torch.exp(self.logvar) + self.logvar # loss = loss_simple / torch.exp(self.logvar) + self.logvar
if self.learn_logvar: if self.learn_logvar:

View File

@ -385,6 +385,8 @@ SAMPLER_CHOICES = [
'ddim', 'ddim',
'k_dpm_2_a', 'k_dpm_2_a',
'k_dpm_2', 'k_dpm_2',
'k_dpmpp_2_a',
'k_dpmpp_2',
'k_euler_a', 'k_euler_a',
'k_euler', 'k_euler',
'k_heun', 'k_heun',

View File

@ -50,6 +50,8 @@
<option value="k_lms" selected>KLMS</option> <option value="k_lms" selected>KLMS</option>
<option value="k_dpm_2">KDPM_2</option> <option value="k_dpm_2">KDPM_2</option>
<option value="k_dpm_2_a">KDPM_2A</option> <option value="k_dpm_2_a">KDPM_2A</option>
<option value="k_dpmpp_2">KDPMPP_2</option>
<option value="k_dpmpp_2_a">KDPMPP_2A</option>
<option value="k_euler">KEULER</option> <option value="k_euler">KEULER</option>
<option value="k_euler_a">KEULER_A</option> <option value="k_euler_a">KEULER_A</option>
<option value="k_heun">KHEUN</option> <option value="k_heun">KHEUN</option>

View File

@ -39,6 +39,8 @@
<option value="k_lms" selected>KLMS</option> <option value="k_lms" selected>KLMS</option>
<option value="k_dpm_2">KDPM_2</option> <option value="k_dpm_2">KDPM_2</option>
<option value="k_dpm_2_a">KDPM_2A</option> <option value="k_dpm_2_a">KDPM_2A</option>
<option value="k_dpmpp_2">KDPMPP_2</option>
<option value="k_dpmpp_2_a">KDPMPP_2A</option>
<option value="k_euler">KEULER</option> <option value="k_euler">KEULER</option>
<option value="k_euler_a">KEULER_A</option> <option value="k_euler_a">KEULER_A</option>
<option value="k_heun">KHEUN</option> <option value="k_heun">KHEUN</option>