메인 콘텐츠로 건너뛰기
다음은 가장 중요한 내장 데이터 타입입니다. 또한 자신만의 데이터 타입을 정의할 수도 있습니다. 데이터 타입은 클라이언트 측에서 워크플로우가 잘못된 형태의 데이터를 노드에 전달하는 것을 방지하는 데 사용됩니다—강력한 타이핑과 비슷합니다. JavaScript 클라이언트 측 코드는 일반적으로 노드 출력을 다른 데이터 타입의 입력에 연결하지 못하도록 합니다. 다만 아래에 몇 가지 예외 사항이 나와 있습니다.

Comfy 데이터 타입

COMBO

  • INPUT_TYPES에 추가적인 파라미터 없음
  • Python 데이터 타입: list[str]로 정의되며, 출력 값은 str입니다.
드롭다운 메뉴 위젯을 나타냅니다. 다른 데이터 타입과 달리, COMBOINPUT_TYPES에서 str로 지정되지 않고 드롭다운 목록의 옵션에 해당하는 list[str]로 지정되며, 기본적으로 첫 번째 옵션이 선택됩니다. COMBO 입력은 종종 런타임에 동적으로 생성됩니다. 예를 들어 내장된 CheckpointLoaderSimple 노드에서는 다음과 같이 찾을 수 있습니다:
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), )
또는 고정된 옵션 목록일 수도 있습니다:
"play_sound": (["no","yes"], {}),

프리미티브 및 리루트

프리미티브 및 리루트 노드는 클라이언트 측에만 존재합니다. 이들은 본질적인 데이터 타입을 갖지 않지만, 연결될 때 연결된 입력이나 출력의 데이터 타입을 따릅니다(그래서 * 입력에 연결할 수 없는 것입니다…).

Python 데이터 타입

INT

  • INPUT_TYPES에 추가적인 파라미터:
    • default는 필수입니다.
    • minmax는 선택적입니다.
  • Python 데이터 타입 int

FLOAT

  • INPUT_TYPES에 추가적인 파라미터:
    • default는 필수입니다.
    • min, max, step는 선택적입니다.
  • Python 데이터 타입 float

STRING

  • INPUT_TYPES에 추가적인 파라미터:
    • default는 필수입니다.
  • Python 데이터 타입 str

BOOLEAN

  • INPUT_TYPES에 추가적인 파라미터:
    • default는 필수입니다.
  • Python 데이터 타입 bool

텐서 데이터 타입

IMAGE

  • INPUT_TYPES에 추가적인 파라미터 없음
  • Python 데이터 타입 torch.Tensor이며, shape는 [B,H,W,C]입니다.
B개의 이미지, 높이 H, 너비 W, 채널 수 C(일반적으로 RGB의 경우 C=3)의 배치입니다.

LATENT

  • INPUT_TYPES에 추가적인 파라미터 없음
  • Python 데이터 타입 dict이며, shape는 [B,C,H,W]인 torch.Tensor를 포함합니다.
전달되는 dict에는 samples라는 키가 있으며, 이는 shape [B,C,H,W]인 torch.Tensor로, B개의 잠재 변수 배치를 나타내며, 채널 수는 C(일반적으로 기존 안정적 확산 모델의 경우 C=4), 높이 H, 너비 W입니다. 높이와 너비는 해당 이미지 크기의 1/8입니다(이는 Empty Latent Image 노드에서 설정한 값입니다). dict의 다른 항목에는 잠재 마스크 같은 것이 포함됩니다.

MASK

  • INPUT_TYPES에 추가적인 파라미터 없음
  • Python 데이터 타입 torch.Tensor이며, shape는 [H,W] 또는 [B,C,H,W]입니다.

AUDIO

  • INPUT_TYPES에 추가적인 파라미터 없음
  • Python 데이터 타입 dict이며, shape는 [B, C, T]인 torch.Tensor와 샘플 속도를 포함합니다.
전달되는 dict에는 waveform이라는 키가 있으며, 이는 shape [B, C, T]인 torch.Tensor로, B개의 오디오 샘플 배치를 나타내며, 채널 수는 C(C=2 스테레오, C=1 모노), 시간 단계 수는 T입니다(즉, 오디오 샘플의 개수). dict에는 또 다른 키인 sample_rate가 있으며, 이는 오디오의 샘플링 속도를 나타냅니다.

맞춤형 샘플링 데이터 타입

Noise

NOISE 데이터 타입은 노이즈의 소스를 나타냅니다(실제 노이즈 자체가 아님). 이는 generate_noise(self, input_latent:Tensor) -> Tensor 시그니처를 가진 노이즈 생성 메서드와 seed:Optional[int] 속성을 제공하는 모든 Python 객체로 표현될 수 있습니다.
seedSamplerCustomAdvancedsample 가이더에 전달되지만, 표준 가이더에서는 사용되지 않는 것으로 보입니다. 이는 선택적이므로 일반적으로 None으로 설정할 수 있습니다.
노이즈를 추가할 때, 잠재 변수가 이 메서드에 전달되며, 이는 동일한 shape의 노이즈를 포함한 Tensor를 반환해야 합니다. 노이즈 혼합 예시 참조

Sampler

SAMPLER 데이터 타입은 샘플러를 나타내며, 이는 sample 메서드를 제공하는 Python 객체로 표현됩니다. 안정적 확산 샘플링은 이 가이드의 범위를 벗어납니다; 이 코드 부분을 자세히 살펴보려면 comfy/samplers.py를 참고하세요.

Sigmas

SIGMAS 데이터 타입은 스케줄러가 생성한 샘플링 과정의 각 단계 전후의 시그마 값을 나타냅니다. 이는 길이가 steps+1인 1차원 텐서로, 각 요소는 해당 단계 전에 존재할 것으로 예상되는 노이즈를 나타내며, 마지막 값은 최종 단계 이후의 노이즈를 나타냅니다. 20단계와 1의 디노이즈를 가진 normal 스케줄러는 SDXL 모델에서 다음과 같은 값을 생성합니다:
tensor([14.6146, 10.7468,  8.0815,  6.2049,  4.8557,  
         3.8654,  3.1238,  2.5572,  2.1157,  1.7648,  
         1.4806,  1.2458,  1.0481,  0.8784,  0.7297,  
         0.5964,  0.4736,  0.3555,  0.2322,  0.0292,  0.0000])
시그마의 시작값은 모델에 따라 다르므로, 스케줄러 노드는 SIGMAS 출력을 생성하려면 MODEL 입력이 필요합니다

Guider

GUIDER는 ‘안내’된 프롬프트나 기타 조건부 형태에 의해 ‘유도’된 디노이징 과정의 일반화입니다. Comfy에서 가이더는 callable Python 객체로 표현되며, __call__(*args, **kwargs) 메서드를 제공하고 이 메서드는 샘플에 의해 호출됩니다. __call__ 메서드는 (args[0]에) 노이즈가 있는 잠재 변수 배치(tensor [B,C,H,W])를 받아들여, 동일한 shape의 노이즈 예측값(Tensor`)을 반환합니다.

모델 데이터 타입

안정적 확산 모델을 위한 더 많은 기술적 데이터 타입이 있습니다. 가장 중요한 것은 MODEL, CLIP, VAE, 그리고 CONDITIONING입니다. 이들과 함께 작업하는 것은 (당분간) 이 가이드의 범위를 벗어납니다!

추가 파라미터

아래는 입력 정의의 ‘추가 옵션’ 부분에서 사용할 수 있는 공식 지원 키들의 목록입니다.
자신만의 맞춤 위젯을 위해 추가 키를 사용할 수 있지만, 아래 키들을 다른 용도로 재사용해서는 안 됩니다.
설명
default위젯의 기본값
min숫자(FLOAT 또는 INT)의 최소값
max숫자(FLOAT 또는 INT)의 최대값
step위젯을 증가하거나 감소시키는 양
label_onbool이 True일 때 UI에 사용할 라벨(BOOL)
label_offbool이 False일 때 UI에 사용할 라벨(BOOL)
defaultInput지원되는 위젯 대신 입력 소켓을 기본값으로 사용합니다
forceInputdefaultInput와 동시에 위젯으로 변환하는 것을 허용하지 않습니다
multiline다중행 텍스트 박스(STRING)를 사용합니다
placeholder비어 있을 때 UI에 표시할 자리표시 텍스트(STRING)
dynamicPrompts프론트엔드가 동적 프롬프트를 평가하도록 만듭니다
lazy이 입력이 지연 평가를 사용한다고 선언합니다
rawLink링크가 존재할 때, 평가된 값을 받는 대신 링크를 받게 됩니다(예: ["nodeId", <outputIndex>]). 주로 노드가 노드 확장을 사용할 때 유용합니다.