ComfyUI
노드 기반 Stable Diffusion 인터페이스
노드 기반 Stable Diffusion 인터페이스
ComfyUI는 Stable Diffusion을 위한 노드 기반 GUI 인터페이스로, 복잡한 이미지 생성 워크플로우를 시각적으로 설계할 수 있습니다. 각 기능이 독립적인 노드로 구성되어 있어 드래그 앤 드롭으로 연결하며, 프롬프트 입력부터 후처리까지 전체 파이프라인을 세밀하게 제어할 수 있습니다.
2023년 초 GitHub에 공개된 ComfyUI는 오픈소스 프로젝트로 시작해 빠르게 성장했습니다. AUTOMATIC1111 WebUI가 간편한 사용성에 집중한 반면, ComfyUI는 고급 사용자를 위한 유연성과 확장성에 초점을 맞췄습니다. 현재 GitHub 스타 5만 개 이상을 기록하며 활발한 커뮤니티를 형성하고 있습니다.
ComfyUI의 핵심 원리는 Dataflow 프로그래밍으로, 데이터가 노드 간 연결을 따라 흐르며 변환됩니다. 체크포인트 로딩, 프롬프트 인코딩, 샘플링, VAE 디코딩 등 각 단계가 독립적 노드로 분리되어 있어 중간 결과를 저장하거나, 여러 모델을 병렬로 실행하거나, 조건부 분기를 설정할 수 있습니다.
실무에서 ComfyUI는 배치 생성 자동화, ControlNet/LoRA 조합 실험, img2img 파이프라인 구축, 영상 프레임 일괄 처리 등에 활용됩니다. 워크플로우를 JSON으로 저장하고 공유할 수 있어 팀 협업에 유리하며, API 서버 모드로 실행하면 외부 시스템과 연동도 가능합니다.
import json
import urllib.request
import urllib.parse
# ComfyUI API 서버 주소
COMFY_API = "http://127.0.0.1:8188"
def queue_prompt(workflow: dict) -> dict:
"""ComfyUI에 워크플로우 실행 요청"""
data = json.dumps({"prompt": workflow}).encode('utf-8')
req = urllib.request.Request(
f"{COMFY_API}/prompt",
data=data,
headers={'Content-Type': 'application/json'}
)
return json.loads(urllib.request.urlopen(req).read())
# 간단한 txt2img 워크플로우 예시
workflow = {
"3": { # KSampler 노드
"class_type": "KSampler",
"inputs": {
"seed": 42,
"steps": 20,
"cfg": 7.5,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1.0,
"model": ["4", 0], # CheckpointLoader 연결
"positive": ["6", 0], # CLIP 인코딩 연결
"negative": ["7", 0],
"latent_image": ["5", 0]
}
},
"4": { # 체크포인트 로더
"class_type": "CheckpointLoaderSimple",
"inputs": {"ckpt_name": "v1-5-pruned.safetensors"}
},
"5": { # 빈 latent 이미지
"class_type": "EmptyLatentImage",
"inputs": {"width": 512, "height": 512, "batch_size": 1}
},
"6": { # 긍정 프롬프트 인코딩
"class_type": "CLIPTextEncode",
"inputs": {
"text": "a beautiful sunset over mountains, highly detailed",
"clip": ["4", 1]
}
}
}
result = queue_prompt(workflow)
print(f"Prompt ID: {result['prompt_id']}")
"A1111보다 ComfyUI가 배치 작업에 훨씬 좋아요. 워크플로우 한번 만들어두면 프롬프트만 바꿔가며 수백 장 자동 생성할 수 있고, ControlNet 여러 개 조합하는 것도 노드 연결만 하면 끝이에요."
"ComfyUI의 장점은 워크플로우 재사용성입니다. JSON으로 내보내서 팀원들과 공유하면 동일한 결과를 재현할 수 있어요. 버전 관리도 가능하고, API 모드로 서비스에 통합하기도 수월합니다."
"ComfyUI Manager 설치하면 커스텀 노드 관리가 엄청 편해져요. 원클릭으로 노드팩 설치되고, 의존성 충돌도 자동으로 해결해줍니다. 이거 없이 ComfyUI 쓰는 건 비추해요."
복잡한 워크플로우는 VRAM을 빠르게 소진합니다. 모델 언로딩 노드를 적절히 배치하고, 8GB 이하 GPU에서는 --lowvram 옵션으로 실행하세요.
커스텀 노드 업데이트 시 기존 워크플로우가 깨질 수 있습니다. 중요한 프로젝트는 노드 버전을 고정하고, 업데이트 전 백업을 권장합니다.
모델, LoRA, VAE 파일 경로가 정확해야 합니다. extra_model_paths.yaml에서 경로를 설정하고, A1111과 모델 폴더를 공유하면 저장공간을 절약할 수 있습니다.