INPUT_TYPES
list[str]
, output value is str
COMBO
it is not specified in INPUT_TYPES
by a str
, but by a list[str]
corresponding to the options in the dropdown list, with the first option selected by default.
COMBO
inputs are often dynamically generated at run time. For instance, in the built-in CheckpointLoaderSimple
node, you find
*
input…)
INPUT_TYPES
:
default
is required
min
and max
are optional
int
INPUT_TYPES
:
default
is required
min
, max
, step
are optional
float
INPUT_TYPES
:
default
is requiredstr
INPUT_TYPES
:
default
is requiredbool
INPUT_TYPES
torch.Tensor
with shape [B,H,W,C]
B
images, height H
, width W
, with C
channels (generally C=3
for RGB
).
INPUT_TYPES
dict
, containing a torch.Tensor
with shape [B,C,H,W]
dict
passed contains the key samples
, which is a torch.Tensor
with shape [B,C,H,W] representing
a batch of B
latents, with C
channels (generally C=4
for existing stable diffusion models), height H
, width W
.
The height and width are 1/8 of the corresponding image size (which is the value you set in the Empty Latent Image node).
Other entries in the dictionary contain things like latent masks.
INPUT_TYPES
torch.Tensor
with shape [H,W] or [B,C,H,W]
INPUT_TYPES
dict
, containing a torch.Tensor
with shape [B, C, T] and a sample rate.
dict
passed contains the key waveform
, which is a torch.Tensor
with shape [B, C, T] representing a batch of B
audio samples, with C
channels (C=2
for stereo and C=1
for mono), and T
time steps (i.e., the number of audio samples).
The dict
contains another key sample_rate
, which indicates the sampling rate of the audio.
NOISE
datatype represents a source of noise (not the actual noise itself). It can be represented by any Python object
that provides a method to generate noise, with the signature generate_noise(self, input_latent:Tensor) -> Tensor
, and a
property, seed:Optional[int]
.
seed
is passed into sample
guider in the SamplerCustomAdvanced
, but does not appear to be used in any of the standard guiders.
It is Optional, so you can generally set it to None.Tensor
of the same shape containing the noise.
See the noise mixing example
SAMPLER
datatype represents a sampler, which is represented as a Python object providing a sample
method.
Stable diffusion sampling is beyond the scope of this guide; see comfy/samplers.py
if you want to dig into this part of the code.
SIGMAS
datatypes represents the values of sigma before and after each step in the sampling process, as produced by a scheduler.
This is represented as a one-dimensional tensor, of length steps+1
, where each element represents the noise expected to be present
before the corresponding step, with the final value representing the noise present after the final step.
A normal
scheduler, with 20 steps and denoise of 1, for an SDXL model, produces:
MODEL
input to produce a SIGMAS outputGUIDER
is a generalisation of the denoising process, as ‘guided’ by a prompt or any other form of conditioning. In Comfy the guider is
represented by a callable
Python object providing a __call__(*args, **kwargs)
method which is called by the sample.
The __call__
method takes (in args[0]
) a batch of noisy latents (tensor [B,C,H,W]
), and returns a prediction of the noise (a tensor of the same shape).
MODEL
, CLIP
, VAE
and CONDITIONING
.
Working with these is (for the time being) beyond the scope of this guide!
Key | Description |
---|---|
default | The default value of the widget |
min | The minimum value of a number (FLOAT or INT ) |
max | The maximum value of a number (FLOAT or INT ) |
step | The amount to increment or decrement a widget |
label_on | The label to use in the UI when the bool is True (BOOL ) |
label_off | The label to use in the UI when the bool is False (BOOL ) |
defaultInput | Defaults to an input socket rather than a supported widget |
forceInput | defaultInput and also don’t allow converting to a widget |
multiline | Use a multiline text box (STRING ) |
placeholder | Placeholder text to display in the UI when empty (STRING ) |
dynamicPrompts | Causes the front-end to evaluate dynamic prompts |
lazy | Declares that this input uses Lazy Evaluation |
rawLink | When a link exists, rather than receiving the evaluated value, you will receive the link (i.e. ["nodeId", <outputIndex>] ). Primarily useful when your node uses Node Expansion. |