Skip to main content

3장. 디퓨전 모델 작동 원리 30분 요약

ComfyUI를 처음 열면 많은 사람이 비슷한 감정을 느낀다. 노드는 많은데, 대체 무엇이 어디로 흘러가는지 모르겠다는 감정이다. 이때 필요한 것은 노드 이름 암기가 아니다. 더 중요한 것은 지금 이 노드가 어떤 데이터를 받아서, 어떤 형태로 바꾸고, 다음 노드로 넘기는지 이해하는 일이다.

이 장은 그 감각을 만드는 데 집중한다. Latent가 무엇인지, 왜 VAE가 필요한지, UNet은 실제로 무슨 일을 하는지, Sampler는 왜 결과를 좌우하는지, 텍스트 인코더는 프롬프트를 어떻게 숫자로 바꾸는지까지 한 번에 정리해 보자. 목표는 딱 하나다. ComfyUI 그래프를 보면 "아, 지금 이미지가 아니라 잠복 표현(latent)이 흐르고 있구나"라고 읽을 수 있게 되는 것이다.

PART 2 / 3장. 디퓨전 모델 작동 원리 30분 요약

3.1 Latent Space, VAE, UNet, Sampler — 5분 정리

이미지 생성 모델은 우리가 보는 PNG나 JPG를 처음부터 직접 그리지 않는다. 보통은 더 작고 압축된 표현 공간에서 먼저 작업한다. 이 압축된 작업 공간을 Latent Space라고 부른다. 한국어로는 잠복 공간, 잠재 공간이라고 번역하기도 하지만, 실무에서는 그냥 라텐트라고 부르는 편이 자연스럽다.

쉽게 비유하면 원본 이미지가 완성된 요리라면, 라텐트는 주방 안에서 쓰는 조리 메모 같은 것이다. 완성 접시만 보면 화려하지만, 실제 조리는 더 간단한 기호와 중간 상태를 가지고 진행된다. 모델은 바로 그 중간 상태에서 생각하고 움직인다.

ComfyUI에서 이 구조를 이해하면 많은 노드가 갑자기 정리된다. Load Checkpoint가 모델을 불러오고, CLIP Text Encode가 텍스트를 숫자 표현으로 바꾸며, Empty Latent Image가 비어 있는 라텐트 캔버스를 만들고, KSampler가 그 라텐트를 점점 이미지답게 다듬는다. 마지막에 VAE Decode가 라텐트를 사람이 볼 수 있는 픽셀 이미지로 바꾼다. 즉, 그래프의 상당 부분은 사실 픽셀 이미지가 아니라 라텐트 데이터를 다루고 있다.

Latent Space란 무엇인가

라텐트는 이미지의 핵심 구조를 압축해서 담아둔 표현이다. 가로 1024, 세로 1024 크기의 이미지를 픽셀 단위로 직접 계산하려면 엄청난 비용이 든다. 그래서 생성 모델은 더 작은 차원으로 줄인 뒤 그 공간에서 형태, 구도, 질감의 큰 방향을 잡는다.

이 방식의 장점은 명확하다. 계산량이 줄어들고, 모델이 더 효율적으로 학습되고, 생성 속도도 빨라진다. ComfyUI에서 해상도를 바꾸거나 배치를 늘릴 때 VRAM 사용량이 급격히 변하는 이유도 결국 라텐트 텐서의 크기와 관련이 있다.

초보자가 자주 헷갈리는 지점은 이것이다. 화면에는 아직 아무 이미지도 안 보이는데, 워크플로우 안에서는 이미 중요한 생성 과정이 거의 다 끝났을 수 있다. 특히 KSampler 이후 VAE Decode 직전 상태는 "그림의 본체"가 없는 것이 아니라, 사람이 아직 해석하지 못하는 형태로 존재하는 것에 가깝다.

VAE는 왜 필요한가

VAE는 Variational Autoencoder의 약자다. 이름은 어렵지만 역할은 두 가지로 단순하게 기억하면 된다.

  • 이미지를 라텐트로 압축한다

  • 라텐트를 다시 이미지로 복원한다

즉, VAE는 픽셀 세계와 라텐트 세계 사이를 오가는 통역사다. VAE Encode는 이미지 입력을 라텐트로 바꾸고, VAE Decode는 라텐트를 최종 이미지로 바꾼다.

왜 이런 중간 단계가 필요할까? 모델의 핵심 계산을 더 가벼운 공간에서 하기 위해서다. 만약 모든 샘플링을 픽셀 공간에서 한다면 속도와 메모리 비용이 훨씬 커진다. 그래서 텍스트-투-이미지든 이미지-투-이미지든 대부분의 파이프라인은 VAE를 경유한다.

실무적으로도 VAE는 꽤 중요하다. 체크포인트에 어떤 VAE가 포함되어 있느냐, 또는 별도 VAE를 연결하느냐에 따라 색감, 대비, 세부 표현이 달라질 수 있다. 초보자 입장에서는 우선 "VAE는 화질 보정기"라고 오해하기 쉬운데, 더 정확히는 생성 시스템 전체가 오가는 좌표계 변환기다.

UNet은 모델의 본체에 가깝다

UNet은 생성 과정에서 가장 핵심적으로 일하는 신경망이다. 라텐트에 들어 있는 노이즈를 조금씩 줄여 가면서, 텍스트 조건에 맞는 구조와 디테일로 유도한다. 쉽게 말하면 "지금 이 노이즈 덩어리가 프롬프트에 맞는 이미지가 되려면 어느 방향으로 바뀌어야 하는가?"를 반복적으로 판단하는 엔진이다.

Text-to-Image를 할 때 처음 라텐트는 거의 무작위 노이즈에 가깝다. UNet은 샘플러가 호출할 때마다 현재 상태를 보고, 텍스트 조건과 비교하면서 "이 부분은 더 얼굴처럼, 이 부분은 더 배경처럼, 이 부분은 덜 흐리게" 같은 방향성을 계산한다. 이 과정을 여러 스텝 반복하면 노이즈 속에서 점점 형태가 떠오른다.

여기서 중요한 포인트는 UNet이 혼자 일하지 않는다는 점이다. UNet은 텍스트 인코더가 만든 조건 정보를 참고하고, 샘플러가 정해 주는 규칙에 따라 여러 번 호출된다. 그래서 이미지 품질은 "좋은 모델만 쓰면 끝"이 아니라, UNet + 텍스트 조건 + 샘플러 설정의 합으로 결정된다.

Sampler는 생성의 리듬을 정한다

샘플러는 UNet을 어떤 순서와 방식으로 호출할지 정하는 절차다. 같은 모델, 같은 프롬프트, 같은 시드라도 샘플러나 스케줄러가 달라지면 결과의 질감과 안정감이 바뀔 수 있다.

이 말을 좀 더 쉬운 비유로 바꿔 보자. UNet이 화가의 손이라면, 샘플러는 작업 순서를 정하는 감독이다. "거칠게 큰 형태부터 잡자", "초반엔 빠르게 밀고 후반엔 디테일을 세밀하게 다듬자", "매 단계에서 보수적으로 수정하자" 같은 전략 차이가 결과에 반영된다.

ComfyUI에서 KSampler는 이 역할을 한꺼번에 맡는다. 여기에는 보통 다음과 같은 개념이 함께 들어 있다.

  • Steps: 몇 번 다듬을 것인가

  • CFG: 프롬프트를 얼마나 강하게 따르게 할 것인가

  • Sampler: 어떤 방식으로 업데이트할 것인가

  • Scheduler: 스텝에 따라 노이즈 강도를 어떻게 배분할 것인가

이 네 가지는 다음 장에서 본격적으로 다루겠지만, 지금 단계에서는 "샘플러는 품질, 속도, 질감의 균형을 잡는 조율 장치"로 이해하면 충분하다.

한 줄로 흐름 정리

이미지 생성의 기본 흐름은 다음 한 줄로 요약할 수 있다.

텍스트를 조건 정보로 바꾼다 → 비어 있거나 노이즈가 있는 라텐트를 준비한다 → UNet이 샘플러의 지시에 따라 여러 번 수정한다 → VAE가 이를 사람이 보는 이미지로 바꾼다

이 한 줄이 머리에 들어오면, 이제부터 ComfyUI 그래프는 복잡한 회로도가 아니라 데이터 가공 공정처럼 보이기 시작한다.

3.2 CLIP, T5, Gemma 텍스트 인코더의 차이

사람은 문장을 읽고 의미를 이해한다. 모델은 그렇지 않다. 모델이 이해할 수 있으려면 텍스트를 숫자 벡터, 즉 수치 표현으로 바꿔야 한다. 이 일을 맡는 것이 텍스트 인코더다.

초보자는 흔히 "프롬프트를 모델에 넣었다"고 말하지만, 엄밀히 말하면 프롬프트는 바로 생성 모델에 들어가지 않는다. 먼저 텍스트 인코더를 거쳐서 모델이 읽을 수 있는 조건 정보로 변환된다. ComfyUI에서 CLIP Text Encode, T5 계열 인코더 노드, 혹은 다른 전용 텍스트 인코더 노드는 바로 이 과정을 담당한다.

CLIP: 익숙하고 빠른 기본 언어 감각

CLIP은 이미지와 텍스트를 연결하는 데 널리 사용된 인코더다. Stable Diffusion 계열을 접해 본 사람에게는 가장 익숙한 이름일 것이다. CLIP은 비교적 짧고 직접적인 프롬프트에서 강점을 보이는 편이며, 스타일 키워드나 시각적 태그에 잘 반응하는 경우가 많다.

실무 감각으로 표현하면 CLIP은 "짧고 효율적인 지시어"에 능하다. 예를 들어 인물, 조명, 렌즈, 구도, 분위기 같은 시각적 키워드를 명확히 던졌을 때 빠르게 그림의 방향을 잡아 준다. 그래서 많은 이미지 모델에서 여전히 중심적인 역할을 한다.

다만 긴 문장, 복잡한 관계, 세밀한 서술을 모두 똑같이 잘 처리하는 것은 아니다. "왼쪽에 앉은 사람과 오른쪽에 서 있는 사람의 관계"처럼 문장 내부 구조가 복잡해질수록 기대한 만큼 정확히 따라오지 않는 경우도 있다. 그래서 모델과 인코더의 궁합을 이해하는 것이 중요하다.

T5: 긴 문장과 구조적 설명에 강한 편

T5 계열 인코더는 보다 언어 중심적인 표현 처리에 강점을 보이는 경우가 많다. 자연어 문장을 풍부하게 해석하고, 길고 설명적인 프롬프트를 다룰 때 장점이 드러난다. 최근 세대의 모델 가운데는 CLIP뿐 아니라 T5 계열 인코더를 함께 쓰거나, 아예 T5 중심으로 동작하는 경우도 있다.

쉽게 말하면 CLIP이 "태그형 프롬프트"에 익숙한 편이라면, T5는 "문장형 프롬프트"를 더 잘 소화하는 쪽에 가깝다. 예를 들어 단순히 "cinematic lighting, ultra detailed, portrait"라고 넣는 방식보다, 장면의 상황과 관계를 문장으로 길게 설명했을 때 더 자연스러운 반응을 끌어내는 모델들이 있다.

물론 이것도 절대 법칙은 아니다. 중요한 것은 내가 쓰는 모델이 어떤 텍스트 인코더를 기반으로 설계되었는지다. 프롬프트 실력이 좋더라도 인코더 특성을 거슬러 쓰면 결과가 기대보다 약할 수 있다.

Gemma: 언어 이해 자원을 생성 조건으로 끌어오는 흐름

Gemma 같은 언어 모델 계열이 텍스트 조건화에 활용되는 흐름은, 이미지 생성이 단순 키워드 반응을 넘어 더 풍부한 의미 이해로 가고 있다는 신호다. 이런 계열은 보다 넓은 언어 표현 능력을 활용해 장면 설명, 의도 해석, 문맥 유지에 도움을 줄 수 있다.

초보자 입장에서는 "그럼 무조건 최신 언어 모델 계열이 더 좋은가?"라는 질문이 떠오른다. 꼭 그렇지는 않다. 텍스트 인코더는 모델 전체 설계 안에서 맞물려야 성능이 난다. 즉, Gemma 기반 텍스트 인코딩이 강한 모델도 있겠지만, 어떤 모델은 여전히 CLIP 또는 T5 기반 설정에서 가장 안정적일 수 있다.

핵심은 텍스트 인코더를 "프롬프트 번역기" 정도로 생각하는 것이다. 내가 한국어로 쓴 문장을, 혹은 영어로 쓴 키워드를, 모델이 이해할 수 있는 좌표로 변환해 주는 역할이다. 이 번역기의 성격에 따라 같은 의도라도 전달 방식이 달라진다.

텍스트 인코더가 다르면 왜 결과도 달라질까

같은 프롬프트라도 텍스트 인코더가 다르면 숫자 표현이 달라진다. 숫자 표현이 달라지면 UNet이 받는 조건도 달라지고, 결국 생성 결과가 달라진다. 즉, 결과물 차이는 단지 모델의 그림체 차이만이 아니라 언어를 수치로 바꾸는 방식의 차이에서도 온다.

이것은 ComfyUI에서 매우 실전적인 의미가 있다. 어떤 워크플로우는 긍정 프롬프트와 부정 프롬프트를 각각 인코딩해 conditioning으로 합치고, 어떤 워크플로우는 여러 인코더를 조합한다. 또 어떤 모델은 프롬프트 길이에 민감하고, 어떤 모델은 긴 설명을 훨씬 잘 활용한다. 이 차이를 이해하면 "왜 어떤 프롬프트는 먹히고 어떤 프롬프트는 안 먹히는가"를 더 정확히 설명할 수 있다.

초보자를 위한 기억법

너무 복잡하게 외울 필요는 없다. 우선은 이렇게 기억하면 된다.

  • CLIP은 시각 키워드 중심의 익숙한 번역기

  • T5는 더 문장형이고 설명적인 번역기

  • Gemma 계열은 넓은 언어 이해를 끌어오려는 흐름

중요한 것은 우열이 아니라 궁합이다. 프롬프트를 잘 쓰는 사람은 멋진 문장을 쓰는 사람이 아니라, 지금 사용하는 모델과 인코더가 이해하기 쉬운 방식으로 지시하는 사람이다.

3.3 Checkpoint, LoRA, ControlNet, IP-Adapter의 역할

이제 ComfyUI 그래프에서 자주 보는 구성요소들을 정리해 보자. 많은 입문자가 이들을 전부 "모델"이라고 뭉뚱그려 부르지만, 실제 역할은 꽤 다르다. 이 차이를 알아야 그래프를 읽을 때 길을 잃지 않는다.

Checkpoint: 기본 세계관과 화풍의 바탕

체크포인트는 가장 큰 덩어리의 기본 모델이다. 인물 위주인지, 일러스트에 강한지, 사실주의가 좋은지, 문장 이해가 안정적인지 같은 전반적 성향이 여기서 정해진다. 쉽게 말해 체크포인트는 기본 작가다.

다른 구성요소를 아무리 붙여도 체크포인트의 바탕 성격은 꽤 강하게 남는다. 그래서 초보자가 품질 문제를 겪을 때 가장 먼저 점검해야 할 것은 프롬프트보다 체크포인트인 경우가 많다. 모델이 애초에 잘 못 그리는 영역을 프롬프트만으로 억지로 밀어붙이기는 어렵기 때문이다.

ComfyUI에서 Load Checkpoint 노드는 보통 세 가지를 함께 꺼내 준다. 모델 본체, CLIP, VAE다. 즉 체크포인트 하나를 불러오는 순간, 실제로는 여러 부품 세트가 한 번에 준비되는 셈이다.

LoRA: 기본 작가에게 특정 습관을 입히는 보조 학습

LoRA는 큰 모델 전체를 다시 학습하는 대신, 적은 용량으로 특정 스타일이나 개념을 덧입히는 방식이다. 특정 캐릭터, 의상, 화풍, 포즈 경향, 제품 비주얼, 얼굴 특징 같은 것을 빠르게 주입하는 데 널리 쓰인다.

비유하자면 체크포인트가 기본 작가라면 LoRA는 "이번 작업에서는 이런 붓질 습관을 써 주세요"라고 덧붙이는 보조 지시다. 기본 작가를 갈아치우는 것은 아니지만, 결과물의 성향을 꽤 강하게 바꿀 수 있다.

LoRA의 중요한 실전 포인트는 가중치다. 너무 약하면 효과가 안 보이고, 너무 강하면 이미지가 뭉개지거나 과장되거나 본래 모델의 안정성을 해칠 수 있다. 그래서 ComfyUI에서는 LoRA를 하나만 쓰기보다 여러 개를 스택해 미세 조정하는 경우가 많다. 이때는 "많이 넣을수록 좋다"가 아니라 "서로 충돌하지 않게 조율하라"가 정답이다.

ControlNet: 구도와 구조를 붙잡는 강한 손잡이

텍스트 프롬프트만으로는 구도 통제가 생각보다 어렵다. "팔은 이렇게, 몸은 저렇게, 배경은 이런 원근으로"라고 써도 결과가 흔들리기 쉽다. ControlNet은 이 문제를 해결하기 위한 강력한 도구다.

ControlNet은 입력 이미지에서 추출한 선, 깊이, 포즈, 윤곽 같은 구조 정보를 바탕으로 생성 과정을 유도한다. 즉, "그림체는 바뀌어도 이 골격은 유지해 줘"라고 말하는 장치다.

예를 들어 Canny는 외곽선 중심, Depth는 거리감 중심, OpenPose는 사람 자세 중심의 제어에 유리하다. 프롬프트가 내용과 분위기를 말해 준다면, ControlNet은 화면의 뼈대를 붙잡아 준다. 그래서 제품 광고, 캐릭터 일관성, 레이아웃 유지, 포즈 재현 같은 실무에서 특히 강력하다.

IP-Adapter: 이미지를 말 대신 참고하게 만드는 장치

IP-Adapter는 텍스트가 아니라 참고 이미지를 조건으로 활용하는 방식이다. 스타일 참조, 얼굴 유사도 유지, 색감 계승, 이미지 기반 변주에 매우 유용하다.

텍스트는 "이런 느낌"을 설명하는 데 좋지만, 실제 얼굴 특징이나 미묘한 스타일 뉘앙스를 정확히 전달하기는 어렵다. IP-Adapter는 이 간극을 메운다. 말로 설명하기 어려운 시각 정보를 직접 조건으로 넘겨주기 때문이다.

실무에서는 종종 이런 식으로 역할을 나눈다. 체크포인트가 기본 화풍을 정하고, LoRA가 특정 스타일 또는 캐릭터 특성을 강화하고, ControlNet이 구도를 잡고, IP-Adapter가 참조 이미지의 시각 인상을 유지한다. 이 조합이 익숙해지면 ComfyUI 그래프가 훨씬 논리적으로 보인다.

넷의 관계를 한 번에 이해하기

이 네 가지를 혼동하지 않으려면 역할별로 나눠 기억하면 좋다.

  • Checkpoint: 기본 모델, 기본 성향

  • LoRA: 특정 스타일이나 개념을 덧입히는 미세 조정

  • ControlNet: 구조와 구도를 제어

  • IP-Adapter: 참고 이미지의 시각 정보를 조건으로 사용

즉, 체크포인트는 바탕, LoRA는 성향 보정, ControlNet은 구조 제어, IP-Adapter는 시각 참조다. 이 구분만 명확해도 복잡한 워크플로우를 볼 때 "왜 여기에 이 노드가 들어갔는지"가 빠르게 이해된다.

3.4 노드를 이해하는 정신모델: 데이터의 흐름

이 장에서 가장 중요한 파트다. ComfyUI를 잘 쓰는 사람은 노드를 많이 외운 사람이 아니라, 데이터가 어떤 형태로 흐르는지 머릿속에 그릴 수 있는 사람이다.

노드 기반 도구를 처음 접하면 화면에 보이는 박스에 집중하기 쉽다. 하지만 실제로는 박스보다 선이 더 중요하다. 선은 단순 연결선이 아니라, 데이터의 타입과 의미가 흘러가는 통로다. 그리고 ComfyUI는 이 통로를 눈으로 볼 수 있게 만든 도구다.

ComfyUI를 공장으로 생각하자

ComfyUI를 하나의 공장이라고 상상해 보자. 원재료가 들어오고, 중간 가공이 일어나고, 최종 제품이 나온다. 중요한 것은 각 공정이 무엇을 받아서 무엇으로 바꾸는지다.

예를 들어 가장 기본적인 Text-to-Image 그래프는 이렇게 읽을 수 있다.

  1. 체크포인트를 불러온다.

  2. 프롬프트를 텍스트 인코더로 보내 조건 정보로 바꾼다.

  3. 빈 라텐트를 만든다.

  4. 샘플러가 모델과 조건 정보를 이용해 라텐트를 반복 수정한다.

  5. 수정된 라텐트를 VAE로 디코드해 이미지로 바꾼다.

  6. 이미지를 저장한다.

이 흐름을 말로 설명할 수 있으면, 이미 ComfyUI의 절반은 이해한 것이다. 반대로 노드 이름만 외우고 이 변환 과정을 말하지 못하면, 워크플로우가 조금만 복잡해져도 금방 막힌다.

핵심 데이터 타입을 구분하라

ComfyUI 그래프를 읽을 때 가장 먼저 봐야 하는 것은 "지금 무엇이 흐르는가"다. 자주 만나는 데이터는 대체로 다음과 같다.

  • Model: UNet 등 생성 계산에 쓰이는 모델 정보

  • CLIP / Text Encoder output: 텍스트를 해석하는 데 필요한 구성요소

  • Conditioning: 텍스트나 이미지에서 뽑아낸 조건 정보

  • Latent: 아직 픽셀로 보이지 않는 중간 표현

  • Image: 사람이 보는 실제 이미지 데이터

  • Mask: 수정할 영역을 지정하는 흑백 정보

  • VAE: 이미지와 라텐트를 오가게 하는 인코더/디코더

이 구분을 알면 연결선이 왜 안 이어지는지도 이해된다. 이미지는 이미지끼리, 라텐트는 라텐트끼리, 조건 정보는 조건 정보끼리 연결되어야 한다. 초보자가 흔히 겪는 "왜 이 노드가 연결이 안 되지?" 문제는 대부분 데이터 타입 불일치 때문이다.

그래프를 읽는 기본 질문 네 가지

낯선 워크플로우를 만났을 때는 다음 네 가지 질문을 순서대로 던져 보자.

첫째, 입력은 무엇인가? 텍스트만 받는가, 이미지도 받는가, 마스크가 있는가, 포즈나 깊이 맵이 있는가.

둘째, 중간 상태는 무엇인가? 라텐트에서 작업하는가, 이미지 상태에서 편집하는가, 조건 정보를 여러 갈래로 합치는가.

셋째, 제어 장치는 무엇인가? LoRA, ControlNet, IP-Adapter, 업스케일러, 디테일러 가운데 어떤 것이 끼어드는가.

넷째, 최종 출력은 무엇인가? 단일 이미지인가, 배치인가, 비디오 프레임인가, 메타데이터를 포함한 저장물인가.

이 질문만 습관화해도 복잡한 그래프가 훨씬 덜 무섭다. 결국 어떤 워크플로우든 "입력 → 변환 → 제어 → 출력"의 조합일 뿐이다.

Text-to-Image, Img2Img, Inpaint의 차이도 결국 데이터 흐름 차이다

세 작업은 겉보기엔 다르지만, 실제 차이는 입력과 중간 데이터 처리 방식에 있다.

Text-to-Image는 빈 라텐트에서 시작한다. 말 그대로 아무 그림도 없는 상태에서 프롬프트만으로 출발한다.

Img2Img는 기존 이미지를 먼저 VAE로 인코드해 라텐트로 바꾼 다음, 여기에 노이즈를 섞고 다시 샘플링한다. 그래서 원본 구도와 형태를 어느 정도 유지하면서 변형이 가능하다.

Inpaint는 이미지와 마스크를 함께 사용한다. 수정할 영역만 선택적으로 다시 생성하므로, 전체를 다시 뽑지 않고 필요한 부분만 손볼 수 있다.

즉, 세 방식 모두 샘플링을 하지만 출발점이 다르다. 빈 라텐트에서 시작하느냐, 기존 이미지 라텐트에서 시작하느냐, 마스크로 국소 영역만 다루느냐의 차이다. 이 관점이 잡히면 새 워크플로우를 볼 때도 훨씬 빠르게 구조가 읽힌다.

좋은 정신모델은 문제 해결 속도를 높인다

데이터 흐름 관점은 단지 이해를 돕는 데서 끝나지 않는다. 문제 해결에도 강력하다.

예를 들어 결과가 흐리다면, 프롬프트 탓만 할 것이 아니라 "라텐트 단계의 샘플링 문제인가, VAE 디코드 문제인가, 업스케일 단계 문제인가"를 나눠 생각할 수 있다. 얼굴 일관성이 무너지면 "체크포인트 성향 문제인가, LoRA 과적용인가, IP-Adapter가 부족한가"를 구분할 수 있다. 구도가 흔들리면 "텍스트 한계인가, ControlNet 부재인가"를 떠올릴 수 있다.

이것이 바로 노드 기반 도구의 장점이다. 파이프라인이 블랙박스가 아니라 투명한 공정도로 보이기 때문에, 어느 지점에서 무엇을 고쳐야 하는지 추적할 수 있다.

이 장의 핵심 정리

이제 3장을 마무리해 보자. 여기서 꼭 가져가야 할 것은 개별 용어 암기가 아니라, 생성 시스템을 보는 눈이다.

이미지 생성 모델은 보통 픽셀에서 바로 작업하지 않고 라텐트 공간에서 계산한다. VAE는 픽셀과 라텐트 사이를 오가는 변환기다. UNet은 노이즈를 점점 의미 있는 구조로 바꾸는 핵심 엔진이다. Sampler는 그 과정을 어떤 리듬과 규칙으로 진행할지 정한다. 텍스트 인코더는 프롬프트를 모델이 읽을 수 있는 조건 정보로 번역한다.

그리고 체크포인트, LoRA, ControlNet, IP-Adapter는 모두 역할이 다르다. 기본 모델, 성향 보정, 구조 제어, 이미지 참조라는 식으로 나눠 이해해야 한다. 마지막으로 ComfyUI 그래프는 노드 이름의 집합이 아니라 데이터 변환의 지도다. 무엇이 들어와서 무엇으로 바뀌고, 어떤 제어를 거쳐 무엇이 나가는지 읽을 수 있어야 한다.

다음 장부터는 이 이론을 실제 캔버스 위에 올려놓는다. 노드 연결이 더 이상 추상적으로 보이지 않을 것이다. Empty Latent Image는 왜 필요한지, KSampler는 무엇을 다루는지, VAE Decode는 왜 마지막에 오는지, 이제는 이름이 아니라 흐름으로 이해할 준비가 되었다.

이제 ComfyUI는 복잡한 상자가 아니라, 생각보다 질서 있는 생성 공장으로 보이기 시작할 것이다.

책 목록

프로덕션 ComfyUI: 이미지에서 영상까지, 노드로 완성하는 AI 콘텐츠 파이프라인

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기