ComfyUI 사용법: 초보자를 위한 실용적인 단계별 가이드
ComfyUI가 "노드 기반이고 매우 강력하다"는 말을 들었지만, 수많은 상자와 전선 때문에 겁이 났다면 혼자가 아닙니다. 좋은 소식은 체크포인트, 인코더, 샘플러, 디코더와 같은 몇 가지 핵심 개념을 배우고 나면 전문가처럼 이미지 워크플로우를 구축할 수 있다는 것입니다. 이 실용적인 가이드는 설치부터 첫 번째 SDXL 이미지 생성, ControlNet, LoRA 및 품질/성능 튜닝을 위한 워크플로우까지 ComfyUI 사용법을 안내합니다.
결과적으로 추측 없이 일관성 있고 반복 가능하며 유연한 이미지 생성을 위해 ComfyUI를 사용하는 방법을 정확히 알게 될 것입니다.
ComfyUI란 무엇이며 왜 사용해야 할까요?
ComfyUI는 사용자가 이미지 파이프라인을 단계별로 설계할 수 있는 Stable Diffusion용 시각적 노드 기반 인터페이스입니다. 단일 "생성" 버튼 대신 모델 로드, 텍스트 인코딩, 잠재 변수 샘플링 또는 최종 이미지 디코딩과 같은 개별 작업을 처리하는 노드를 연결합니다. 빠르고, 모듈식이며 투명하여 학습, 실험 및 프로덕션 워크플로우에 적합합니다.
빠른 시작: ComfyUI 설치 및 실행
- Windows/macOS/Linux: 공식 저장소 및 커뮤니티 설치 가이드를 따르십시오. 플랫폼 및 GPU에 따라 수동 설치(Python + 종속성) 또는 패키지 방법을 사용할 수 있습니다. ComfyUI wiki는 Windows, macOS(Apple Silicon 포함) 및 Linux에 대한 단계별 설정을 제공합니다.
- 모델: Stable Diffusion 체크포인트(예: SDXL base/refiner 또는 SD 1.5)를
models/checkpoints 폴더에 넣습니다. VAE 파일을 models/vae에, LoRA를 models/loras에, ControlNet 모델을 models/controlnet에 넣습니다.
- 실행: OS에 맞는 시작 스크립트를 실행합니다. ComfyUI가 브라우저에서 열립니다. 캔버스는 노드를 함께 연결하는 곳입니다.
팁: 최상의 성능을 위해 GPU 드라이버와 CUDA 툴킷을 최신 상태로 유지하십시오.
핵심 개념: 최소 텍스트-이미지 워크플로우
ComfyUI의 기본 텍스트-이미지 흐름(SD 1.5 스타일)은 다음과 같습니다.
- 출력: UNet, CLIP 및 VAE 구성 요소
- 노드: CLIP Text Encode (Positive)
- 노드: CLIP Text Encode (Negative)
- 입력: UNet, 긍정적/부정적 조건, 시드, 단계, 샘플러(예: DPM++ 2M Karras) 및 CFG 스케일
이 기본 그래프(Checkpoint → CLIP (pos/neg) → KSampler → VAE Decode → Save)는 ComfyUI에서 수행하는 거의 모든 작업의 기초입니다.
SDXL 워크플로우: Base + (선택 사항) Refiner
SDXL은 듀얼 텍스트 인코더를 사용하며 종종 리파이너 패스의 이점을 얻습니다.
- SDXL Base 로드: SDXL 호환 체크포인트를 사용합니다. 많은 SDXL 템플릿에는 두 개의 CLIP 인코더(대형/소형 컨텍스트용)가 포함되어 있습니다. 긍정적 및 부정적 프롬프트를 모두 제공합니다.
- KSampler (Base): 1024×1024(또는 대상)에서 잠재 변수를 생성합니다. 잠재 변수 또는 디코딩된 이미지를 저장합니다.
- 선택적 Refiner: SDXL Refiner 체크포인트를 로드하고 기본 출력에 따라 조건화된 추가 KSampler 패스를 실행한 다음 VAE로 디코딩합니다.
이 2단계 프로세스는 더 높은 해상도에서 디테일과 일관성을 크게 향상시킬 수 있습니다.
실습: 첫 번째 ComfyUI 그래프 빌드
- 템플릿에서 시작: 사이드바에서 내장된 텍스트-이미지 예제를 로드합니다.
- 체크포인트 교체: SDXL 또는 SD 1.5 모델을 선택합니다.
- 프롬프트 작성: Positive 및 Negative CLIP 노드를 사용합니다. 예:
- 긍정: “영화 같은 인물 사진, 부드러운 스튜디오 조명, 85mm 렌즈, 매우 상세함, 필름 그레인”
- 부정: “흐릿함, 저해상도, 변형됨, 손가락 추가, 워터마크”
- 샘플러: DPM++ 2M Karras (안정적) 또는 Euler a (빠름)
- CFG: 4.5–7.5 (높을수록 프롬프트를 더 강하게 밀어붙이지만 과포화될 수 있음)
- 시드: 재현성을 위해 고정합니다. 탐색을 위해 다양하게 변경합니다.
- 해상도: SD 1.5의 경우 512×512 또는 768×768에서 시작합니다. SDXL의 경우 1024×1024가 잘 작동합니다.
- 디코딩 및 저장: VAE Decode → Save Image를 추가합니다. Queue Prompt를 클릭하여 생성합니다.
주요 노드 이해 (쉬운 설명)
- Checkpoint Loader: 확산 모델(UNet), 텍스트 인코더(CLIP) 및 VAE를 로드합니다. "엔진 + 언어 두뇌 + 이미지 번역기"라고 생각하십시오.
- CLIP Text Encode: 프롬프트를 모델이 이해하는 숫자 임베딩으로 변환합니다. 긍정적 및 부정적 텍스트 인코더를 모두 사용합니다.
- KSampler: 이미지 합성의 핵심입니다. 여러 단계에 걸쳐 프롬프트와 샘플러 방법에 따라 잠재 노이즈를 제거합니다.
- VAE Decode: 최종 잠재 변수를 볼 수 있는 이미지로 변환합니다. VAE를 교체하면 색상/대비 충실도가 변경됩니다.
- Save Image: 결과를 나중에 다시 만들 수 있도록 메타데이터와 함께 출력을 디스크에 씁니다.
이러한 빌딩 블록에 대한 자세한 내용은 초보자 친화적인 분석 및 노드 설명을 참조하십시오.
파워 업: LoRA, ControlNet 및 이미지-이미지
스타일 또는 피사체 제어를 위해 LoRA 사용
- LoRA Loader 노드를 추가하고 모델 분기에 연결합니다.
- 강도: 0.6–0.8에서 시작합니다. 스타일 강도 또는 과적합에 따라 조정합니다.
- 다중 LoRA: 체인 또는 병합하지만 충돌에 주의하십시오. 스태킹할 때 강도를 낮추십시오.
정확한 구성을 위해 ControlNet 추가
- ControlNet 노드를 사용하면 입력 맵(Canny, Depth, OpenPose 등)을 사용하여 구성을 조작할 수 있습니다.
- 일반적인 흐름: ControlNet 모델 로드 → 가이드 이미지 전처리(예: Canny edge) → 텍스트 조건과 함께 ControlNet 조건을 KSampler에 제공합니다.
- 가중치: 0.5–1.2가 좋은 시작입니다. 너무 높으면 프롬프트를 압도할 수 있습니다.
이미지-이미지 또는 Inpainting
- VAE Encode를 통해 초기 노이즈를 이미지 잠재 변수로 바꿉니다.
- KSampler에서 디노이즈 강도를 조정하여 원본 이미지의 양을 제어합니다.
- Inpainting의 경우 마스크 입력 및 inpaint-aware 샘플러 파이프라인을 사용합니다.
품질 튜닝: 프롬프트, CFG, 샘플러 및 시드
- 프롬프트 엔지니어링: 단락이 아닌 간결한 설명자를 사용합니다. 순서는 명확성보다 중요하지 않지만 중요한 속성은 앞에 유지하십시오.
- 낮음 (3–5): 더 창의적이며 프롬프트 준수도가 낮음
- 높음 (9–12): 강력한 준수, 아티팩트 생성 가능
- DPM++ 2M Karras: 깨끗하고 안정적임
- Euler a: 빠르고 표현력이 뛰어나 프리뷰에 적합함
- UniPC / Heun / DDIM: 테스트할 가치가 있음; 결과는 모델에 따라 다름
부드러운 렌더링을 위한 성능 팁
- VRAM 예산 책정: OOM이 발생하면 해상도, 단계 또는 배치 크기를 줄입니다. 1024×1024에서 SDXL은 노드에 따라 8–12GB VRAM이 필요할 수 있습니다.
- Half precision: 지원되는 경우 fp16을 활성화하여 품질 손실은 무시할 수 있으면서 메모리를 크게 절약할 수 있습니다.
- Tiling 및 잠재 업스케일러: 더 작게 생성한 다음 잠재 업스케일러 노드 또는 이미지 업스케일러 모델을 통해 업스케일하여 VRAM을 절약합니다.
- 캐싱: 프롬프트가 변경되지 않을 때 실행 간에 CLIP 인코딩 및 디코딩된 VAE를 재사용합니다.
- 불필요한 분기 피하기: 연결되지 않은 추가 노드는 동일한 대기열에서 실행될 때 여전히 메모리를 소비합니다.
프로처럼 워크플로우 구성
- 노드 그룹화: 프레임/레이블을 사용하여 섹션(프롬프트, 모델, 샘플러, 출력 등)을 구성합니다.
- 매개변수 패널: 쉬운 튜닝을 위해 상단에 "컨트롤" 노드(예: 빈 프롬프트 상자, 슬라이더)를 만듭니다.
- 저장/공유: 워크플로우 JSON을 내보내고 재현성을 위해 사용된
모델 노트를 보관합니다.
- 버전 관리: SD 1.5, SDXL 및 특수 파이프라인(애니메이션, 사진, 깊이-이미지 등)에 대해 별도의 그래프를 유지합니다.
일반적인 문제 해결
- 잘못된 VAE 또는 누락된 VAE Decode
- 디노이즈가 너무 낮음 (예: img2img에서 <0.2)
- 다른 VAE를 사용해 보십시오. 일부 VAE는 대비를 눈에 띄게 향상시킵니다.
- 시드가 고정됨; 무작위화 활성화 또는 새 시드 설정
- 해상도, 단계 또는 배치 크기 줄이기; fp16으로 전환
- 다른 GPU 앱 닫기; ControlNet/LoRA 스택 단순화
- 파일 경로 및 모델 폴더 확인; 파일 확장명 확인
미리 빌드된 워크플로우로 더 빠르게 학습
비디오 연습 및 초보자 시리즈는 일시 중지하고 분석할 수 있는 즉시 실행 가능한 그래프로 학습 곡선을 가속화할 수 있습니다. 작성된 튜토리얼 및 위키는 노드 설명과 업데이트된 설치 단계를 제공하여 최신 상태를 유지할 수 있도록 도와줍니다.
고급: 그래프 모듈화 및 확장
- API/외부 노드: 일부 튜토리얼에서는 특수 노드를 통해 ComfyUI를 외부 AI 서비스에 연결하여 하이브리드 파이프라인을 활성화하고 무거운 작업을 오프로드하는 방법을 다룹니다.
- 노드 라이브러리 및 확장 프로그램: 스케줄러, 업스케일러 및 전처리(포즈, 깊이, 분할)를 위한 커뮤니티 노드를 탐색합니다. 항상 ComfyUI 버전과의 호환성을 확인하십시오.
- SDXL 리파이너 및 체인 샘플러: 스테이징된 디노이징(base → refiner) 또는 스타일 혼합을 위한 여러 샘플러를 실행합니다.
프롬프트, 참조 또는 설명을 자주 반복하는 경우 변형을 브레인스토밍하고 개선하는 데 도움이 되는 사이드킥이 필요할 수 있습니다. 덧붙여서, Sider.AI는 구조화된 프롬프트를 빠르게 초안하고, 부정적인 프롬프트 목록을 생성하고, 워크플로우 실험을 요약하여 실행 간에 추적하지 못하도록 도와줄 수 있습니다. 여기에서 사용해 볼 수 있습니다: 간단한 SDXL 시작 워크플로우 (이 패턴 복사)
- Checkpoint Loader (SDXL Base)
- CLIP Text Encode (Positive) — “초정밀 제품 사진, 소프트박스 조명, 50mm 렌즈, 반사 표면”
- CLIP Text Encode (Negative) — “저해상도, 모션 블러, 워터마크, 배경 혼잡”
- KSampler: 1024×1024, 28 단계, DPM++ 2M Karras, CFG 5.5, 고정 시드
선택적 추가 기능:
- 10–15 단계에서 SDXL Refiner 체크포인트가 있는 리파이너 패스
- 레이아웃을 위한 간단한 객체 실루엣이 있는 ControlNet (Depth)
- 특정 브랜드 또는 아트 스타일의 경우 0.6에서 LoRA
주요 내용
- ComfyUI의 힘은 투명성에서 비롯됩니다. 노드별로 파이프라인을 구축하십시오.
- 핵심 텍스트-이미지 체인은 간단합니다. Checkpoint → CLIP (pos/neg) → KSampler → VAE Decode → Save.
- SDXL은 세부 사항을 위해 듀얼 인코더와 선택적 리파이너 패스의 이점을 얻습니다.
- LoRA와 ControlNet은 스타일 제어 및 구성 정확도를 제공합니다.
- 품질 및 일관성을 위해 CFG, 샘플러 및 시드를 조정합니다. fp16 및 적절한 해상도로 VRAM을 관리합니다.
- 워크플로우를 구성하고 고통 없는 반복을 위해 버전을 관리합니다.
다음 단계
- 저장소/위키 지침에 따라 ComfyUI를 설치하고 샘플 워크플로우를 시작합니다.
- 기본 사항을 굳히기 위해 최소 체인을 처음부터 다시 빌드합니다.
- ControlNet 및 LoRA를 추가한 다음 A/B 테스트 샘플러 및 CFG 설정을 수행합니다.
- 모델, 시드 및 매개변수에 대한 메모와 함께 워크플로우 JSON을 저장하고 공유합니다.
행복한 생성 - 그리고 ComfyUI의 차분하고 제어 가능한 세계에 오신 것을 환영합니다.
FAQ
Q1: Windows, macOS 또는 Linux에 ComfyUI를 설치하고 실행하려면 어떻게 해야 하나요?
플랫폼별 단계, 모델 폴더 위치 및 종속성에 대한 공식 저장소 및 커뮤니티 위키를 따르십시오. 설치 후 로컬 서버를 시작하고 브라우저에서 ComfyUI를 열어 노드 연결을 시작합니다.
Q2: 텍스트-이미지를 위한 가장 간단한 ComfyUI 워크플로우는 무엇인가요?
체크포인트를 로드하고, CLIP으로 긍정적 및 부정적 프롬프트를 인코딩하고, KSampler를 실행하고, VAE로 디코딩한 다음 이미지를 저장합니다. 이 체인은 대부분의 생성에 대해 ComfyUI를 효과적으로 사용하는 방법의 기초입니다.
Q3: ComfyUI에서 SDXL을 사용하려면 어떻게 해야 하나요?
듀얼 텍스트 인코더가 있는 SDXL 체크포인트를 사용한 다음 더 나은 디테일을 위해 선택적으로 리파이너 패스를 추가합니다. 균형 잡힌 CFG(약 5–7)와 DPM++ 2M Karras와 같은 효율적인 샘플러를 사용하여 1024×1024에서 실행합니다.
Q4: 동일한 ComfyUI 워크플로우에 ControlNet과 LoRA를 추가할 수 있나요?
예. LoRA 및 ControlNet 노드를 로드하고 모델 및 KSampler 조건에 연결하고 가중치를 조정합니다(예: LoRA의 경우 0.6–0.8, ControlNet의 경우 ~0.5–1.2). VRAM 사용량을 확인하고 OOM이 발생하면 해상도 또는 단계를 줄입니다.
Q5: ComfyUI 이미지의 대비가 낮거나 흐릿한 이유는 무엇인가요?
다른 VAE를 사용하거나 CFG를 낮추거나 샘플러를 전환해 보십시오. 일부 VAE는 더 충실한 색상과 대비를 생성합니다. 작은 조정으로도 흐릿한 결과를 빠르게 수정할 수 있습니다.