Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
ComfyUI
Commits
c50208a7
"git@developer.sourcefind.cn:modelzoo/mamba_pytorch.git" did not exist on "25991f98947bda948f0d59bff563a71247722699"
Commit
c50208a7
authored
Apr 24, 2023
by
comfyanonymous
Browse files
Refactor more code to sample.py
parent
7983b3a9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
35 deletions
+40
-35
comfy/sample.py
comfy/sample.py
+36
-11
nodes.py
nodes.py
+4
-24
No files found.
comfy/sample.py
View file @
c50208a7
import
torch
import
torch
import
comfy.model_management
import
comfy.model_management
import
comfy.samplers
def
prepare_noise
(
latent_image
,
seed
,
skip
=
0
):
def
prepare_noise
(
latent_image
,
seed
,
skip
=
0
):
...
@@ -13,24 +14,22 @@ def prepare_noise(latent_image, seed, skip=0):
...
@@ -13,24 +14,22 @@ def prepare_noise(latent_image, seed, skip=0):
noise
=
torch
.
randn
(
latent_image
.
size
(),
dtype
=
latent_image
.
dtype
,
layout
=
latent_image
.
layout
,
generator
=
generator
,
device
=
"cpu"
)
noise
=
torch
.
randn
(
latent_image
.
size
(),
dtype
=
latent_image
.
dtype
,
layout
=
latent_image
.
layout
,
generator
=
generator
,
device
=
"cpu"
)
return
noise
return
noise
def
prepare_mask
(
noise_mask
,
nois
e
):
def
prepare_mask
(
noise_mask
,
shape
,
devic
e
):
"""ensures noise mask is of proper dimensions"""
"""ensures noise mask is of proper dimensions"""
device
=
comfy
.
model_management
.
get_torch_device
()
noise_mask
=
torch
.
nn
.
functional
.
interpolate
(
noise_mask
[
None
,
None
,],
size
=
(
shape
[
2
],
shape
[
3
]),
mode
=
"bilinear"
)
noise_mask
=
torch
.
nn
.
functional
.
interpolate
(
noise_mask
[
None
,
None
,],
size
=
(
noise
.
shape
[
2
],
noise
.
shape
[
3
]),
mode
=
"bilinear"
)
noise_mask
=
noise_mask
.
round
()
noise_mask
=
noise_mask
.
round
()
noise_mask
=
torch
.
cat
([
noise_mask
]
*
noise
.
shape
[
1
],
dim
=
1
)
noise_mask
=
torch
.
cat
([
noise_mask
]
*
shape
[
1
],
dim
=
1
)
noise_mask
=
torch
.
cat
([
noise_mask
]
*
noise
.
shape
[
0
])
noise_mask
=
torch
.
cat
([
noise_mask
]
*
shape
[
0
])
noise_mask
=
noise_mask
.
to
(
device
)
noise_mask
=
noise_mask
.
to
(
device
)
return
noise_mask
return
noise_mask
def
broadcast_cond
(
cond
,
noise
):
def
broadcast_cond
(
cond
,
batch
,
device
):
"""broadcasts conditioning to the noise batch size"""
"""broadcasts conditioning to the batch size"""
device
=
comfy
.
model_management
.
get_torch_device
()
copy
=
[]
copy
=
[]
for
p
in
cond
:
for
p
in
cond
:
t
=
p
[
0
]
t
=
p
[
0
]
if
t
.
shape
[
0
]
<
noise
.
shape
[
0
]
:
if
t
.
shape
[
0
]
<
batch
:
t
=
torch
.
cat
([
t
]
*
noise
.
shape
[
0
]
)
t
=
torch
.
cat
([
t
]
*
batch
)
t
=
t
.
to
(
device
)
t
=
t
.
to
(
device
)
copy
+=
[[
t
]
+
p
[
1
:]]
copy
+=
[[
t
]
+
p
[
1
:]]
return
copy
return
copy
...
@@ -54,4 +53,30 @@ def load_additional_models(positive, negative):
...
@@ -54,4 +53,30 @@ def load_additional_models(positive, negative):
def
cleanup_additional_models
(
models
):
def
cleanup_additional_models
(
models
):
"""cleanup additional models that were loaded"""
"""cleanup additional models that were loaded"""
for
m
in
models
:
for
m
in
models
:
m
.
cleanup
()
m
.
cleanup
()
\ No newline at end of file
def
sample
(
model
,
noise
,
steps
,
cfg
,
sampler_name
,
scheduler
,
positive
,
negative
,
latent_image
,
denoise
=
1.0
,
disable_noise
=
False
,
start_step
=
None
,
last_step
=
None
,
force_full_denoise
=
False
,
noise_mask
=
None
,
sigmas
=
None
):
device
=
comfy
.
model_management
.
get_torch_device
()
if
noise_mask
is
not
None
:
noise_mask
=
prepare_mask
(
noise_mask
,
noise
.
shape
,
device
)
real_model
=
None
comfy
.
model_management
.
load_model_gpu
(
model
)
real_model
=
model
.
model
noise
=
noise
.
to
(
device
)
latent_image
=
latent_image
.
to
(
device
)
positive_copy
=
broadcast_cond
(
positive
,
noise
.
shape
[
0
],
device
)
negative_copy
=
broadcast_cond
(
negative
,
noise
.
shape
[
0
],
device
)
models
=
load_additional_models
(
positive
,
negative
)
sampler
=
comfy
.
samplers
.
KSampler
(
real_model
,
steps
=
steps
,
device
=
device
,
sampler
=
sampler_name
,
scheduler
=
scheduler
,
denoise
=
denoise
,
model_options
=
model
.
model_options
)
samples
=
sampler
.
sample
(
noise
,
positive_copy
,
negative_copy
,
cfg
=
cfg
,
latent_image
=
latent_image
,
start_step
=
start_step
,
last_step
=
last_step
,
force_full_denoise
=
force_full_denoise
,
denoise_mask
=
noise_mask
,
sigmas
=
sigmas
)
samples
=
samples
.
cpu
()
cleanup_additional_models
(
models
)
return
samples
nodes.py
View file @
c50208a7
...
@@ -752,31 +752,11 @@ def common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive,
...
@@ -752,31 +752,11 @@ def common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive,
noise_mask
=
None
noise_mask
=
None
if
"noise_mask"
in
latent
:
if
"noise_mask"
in
latent
:
noise_mask
=
comfy
.
sample
.
prepare_mask
(
latent
[
"noise_mask"
],
noise
)
noise_mask
=
latent
[
"noise_mask"
]
real_model
=
None
comfy
.
model_management
.
load_model_gpu
(
model
)
real_model
=
model
.
model
noise
=
noise
.
to
(
device
)
latent_image
=
latent_image
.
to
(
device
)
positive_copy
=
comfy
.
sample
.
broadcast_cond
(
positive
,
noise
)
negative_copy
=
comfy
.
sample
.
broadcast_cond
(
negative
,
noise
)
models
=
comfy
.
sample
.
load_additional_models
(
positive
,
negative
)
if
sampler_name
in
comfy
.
samplers
.
KSampler
.
SAMPLERS
:
sampler
=
comfy
.
samplers
.
KSampler
(
real_model
,
steps
=
steps
,
device
=
device
,
sampler
=
sampler_name
,
scheduler
=
scheduler
,
denoise
=
denoise
,
model_options
=
model
.
model_options
)
else
:
#other samplers
pass
samples
=
sampler
.
sample
(
noise
,
positive_copy
,
negative_copy
,
cfg
=
cfg
,
latent_image
=
latent_image
,
start_step
=
start_step
,
last_step
=
last_step
,
force_full_denoise
=
force_full_denoise
,
denoise_mask
=
noise_mask
)
samples
=
samples
.
cpu
()
comfy
.
sample
.
cleanup_additional_models
(
models
)
samples
=
comfy
.
sample
.
sample
(
model
,
noise
,
steps
,
cfg
,
sampler_name
,
scheduler
,
positive
,
negative
,
latent_image
,
denoise
=
denoise
,
disable_noise
=
disable_noise
,
start_step
=
start_step
,
last_step
=
last_step
,
force_full_denoise
=
force_full_denoise
,
noise_mask
=
noise_mask
)
out
=
latent
.
copy
()
out
=
latent
.
copy
()
out
[
"samples"
]
=
samples
out
[
"samples"
]
=
samples
return
(
out
,
)
return
(
out
,
)
...
...
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