Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
Stable Diffusion Webui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
novelai-storage
Stable Diffusion Webui
Commits
99e65ec6
Commit
99e65ec6
authored
Jun 09, 2024
by
AUTOMATIC1111
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
undo some changes from #15823 and fix whitespace
parent
1d0bb397
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
15 deletions
+17
-15
modules/sd_samplers_kdiffusion.py
modules/sd_samplers_kdiffusion.py
+2
-2
modules/sd_schedulers.py
modules/sd_schedulers.py
+15
-13
No files found.
modules/sd_samplers_kdiffusion.py
View file @
99e65ec6
import
torch
import
inspect
import
k_diffusion.sampling
from
modules
import
sd_samplers_common
,
sd_samplers_extra
,
sd_samplers_cfg_denoiser
,
sd_schedulers
from
modules
import
sd_samplers_common
,
sd_samplers_extra
,
sd_samplers_cfg_denoiser
,
sd_schedulers
,
devices
from
modules.sd_samplers_cfg_denoiser
import
CFGDenoiser
# noqa: F401
from
modules.script_callbacks
import
ExtraNoiseParams
,
extra_noise_callback
...
...
@@ -115,7 +115,7 @@ class KDiffusionSampler(sd_samplers_common.Sampler):
if
scheduler
.
need_inner_model
:
sigmas_kwargs
[
'inner_model'
]
=
self
.
model_wrap
sigmas
=
scheduler
.
function
(
n
=
steps
,
**
sigmas_kwargs
)
sigmas
=
scheduler
.
function
(
n
=
steps
,
**
sigmas_kwargs
,
device
=
devices
.
cpu
)
if
discard_next_to_last_sigma
:
sigmas
=
torch
.
cat
([
sigmas
[:
-
2
],
sigmas
[
-
1
:]])
...
...
modules/sd_schedulers.py
View file @
99e65ec6
import
dataclasses
import
torch
import
k_diffusion
import
numpy
as
np
from
modules
import
shared
def
to_d
(
x
,
sigma
,
denoised
):
"""Converts a denoiser output to a Karras ODE derivative."""
return
(
x
-
denoised
)
/
sigma
k_diffusion
.
sampling
.
to_d
=
to_d
@
dataclasses
.
dataclass
class
Scheduler
:
name
:
str
...
...
@@ -25,11 +25,11 @@ class Scheduler:
aliases
:
list
=
None
def
uniform
(
n
,
sigma_min
,
sigma_max
,
inner_model
):
return
inner_model
.
get_sigmas
(
n
)
def
uniform
(
n
,
sigma_min
,
sigma_max
,
inner_model
,
device
):
return
inner_model
.
get_sigmas
(
n
)
.
to
(
device
)
def
sgm_uniform
(
n
,
sigma_min
,
sigma_max
,
inner_model
):
def
sgm_uniform
(
n
,
sigma_min
,
sigma_max
,
inner_model
,
device
):
start
=
inner_model
.
sigma_to_t
(
torch
.
tensor
(
sigma_max
))
end
=
inner_model
.
sigma_to_t
(
torch
.
tensor
(
sigma_min
))
sigs
=
[
...
...
@@ -37,9 +37,10 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model):
for
ts
in
torch
.
linspace
(
start
,
end
,
n
+
1
)[:
-
1
]
]
sigs
+=
[
0.0
]
return
torch
.
FloatTensor
(
sigs
)
return
torch
.
FloatTensor
(
sigs
)
.
to
(
device
)
def
get_align_your_steps_sigmas
(
n
,
sigma_min
,
sigma_max
):
def
get_align_your_steps_sigmas
(
n
,
sigma_min
,
sigma_max
,
device
):
# https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html
def
loglinear_interp
(
t_steps
,
num_steps
):
"""
...
...
@@ -65,12 +66,13 @@ def get_align_your_steps_sigmas(n, sigma_min, sigma_max):
else
:
sigmas
.
append
(
0.0
)
return
torch
.
FloatTensor
(
sigmas
)
return
torch
.
FloatTensor
(
sigmas
)
.
to
(
device
)
def
kl_optimal
(
n
,
sigma_min
,
sigma_max
):
alpha_min
=
torch
.
arctan
(
torch
.
tensor
(
sigma_min
))
alpha_max
=
torch
.
arctan
(
torch
.
tensor
(
sigma_max
))
step_indices
=
torch
.
arange
(
n
+
1
)
def
kl_optimal
(
n
,
sigma_min
,
sigma_max
,
device
):
alpha_min
=
torch
.
arctan
(
torch
.
tensor
(
sigma_min
,
device
=
device
))
alpha_max
=
torch
.
arctan
(
torch
.
tensor
(
sigma_max
,
device
=
device
))
step_indices
=
torch
.
arange
(
n
+
1
,
device
=
device
)
sigmas
=
torch
.
tan
(
step_indices
/
n
*
alpha_min
+
(
1.0
-
step_indices
/
n
)
*
alpha_max
)
return
sigmas
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment