본문 바로가기
카테고리 없음

ComfyUI VAE 설정, img2img Encode·Decode 연결 기준

by GoingProdo 2026. 8. 22.

ComfyUI에서 text-to-image만 사용할 때는 VAE가 주로 마지막 VAEDecode에 연결된다. 하지만 img2img로 넘어가면 입력 이미지를 latent로 바꾸는 VAEEncode가 추가되기 때문에 VAE 연결을 어디까지 바꿔야 하는지 헷갈릴 수 있다.

핵심은 픽셀 이미지를 latent로 보내는 Encode와 latent를 다시 이미지로 돌려놓는 Decode를 하나의 왕복 과정으로 보는 것이다. 외부 VAE를 사용한다면 VAEDecode만 바꾸기보다 VAEEncode가 어떤 VAE를 받고 있는지도 함께 확인하는 것이 기본 설정 기준이다.

comfyui vae 설정에서 가장 먼저 볼 변화

img2img에서는 VAEEncode가 먼저 사용된다

일반적인 text-to-image에서는 처음부터 latent를 만들기 때문에 입력 이미지를 VAE로 인코딩할 필요가 없다. 반면 img2img는 기존 픽셀 이미지를 생성 과정의 시작점으로 사용한다.

그래서 입력 이미지가 다음 흐름을 거친다.

Load Image → VAEEncode → LATENT → KSampler

VAEEncode에는 두 가지 입력이 필요하다. 하나는 실제 이미지인 pixels, 다른 하나는 해당 이미지를 latent 공간으로 변환할 때 사용할 vae다.

KSampler에는 이미지가 아니라 latent가 들어간다

VAEEncode가 출력하는 것은 IMAGE가 아니라 LATENT다. 이 latent가 KSampler의 입력으로 전달되고, denoise 설정에 따라 원본 이미지의 특징을 어느 정도 유지할지가 결정된다.

즉 img2img에서 VAE는 마지막 출력 단계에서만 등장하는 것이 아니다. 생성이 시작되기 전에 입력 이미지를 latent로 바꾸는 순간부터 이미 사용된다.

따라서 외부 VAE를 적용했는데 VAEDecode 연결만 변경했다면 입력 단계의 VAEEncode가 무엇을 사용하고 있는지도 다시 확인할 필요가 있다.

VAEEncode와 VAEDecode는 반대 방향으로 작동한다

VAEEncode는 image를 latent로 변환하고, VAEDecode는 latent를 다시 image로 변환한다.

comfyui vae 설정가 ComfyUI 워크플로우에 미치는 영향

구조만 놓고 보면 다음과 같다.

기존 방식과 비교해야 할 부분

IMAGE → VAEEncode → LATENT

LATENT → VAEDecode → IMAGE

현재 ComfyUI의 두 기본 노드 모두 VAE 타입의 입력을 별도로 받는다. 즉 Encode와 Decode 각각에 어떤 VAE를 사용할지 워크플로우 연결이 결정한다.

기본 구성에서는 같은 VAE 흐름을 유지한다

img2img를 처음 구성한다면 입력과 출력에서 같은 VAE를 사용하는 흐름을 기준으로 두는 것이 이해하기 쉽다.

체크포인트의 VAE를 사용하는 경우라면 CheckpointLoaderSimple이 출력한 VAE를 Encode와 Decode 양쪽에 연결할 수 있다.

Checkpoint VAE → VAEEncode

Checkpoint VAE → VAEDecode

이렇게 하면 이미지가 같은 VAE의 encode·decode 경로를 중심으로 왕복한다.

성능과 결과 품질에서 확인할 차이

특히 모델과 VAE의 조합을 테스트하는 상황이라면 Encode와 Decode를 각각 다른 조건으로 바꾸기보다 하나의 VAE 연결을 유지한 상태에서 먼저 결과를 확인하는 편이 원인을 분리하기 쉽다.

워크플로우 구성에서 놓치기 쉬운 부분

외부 VAELoader를 쓸 때는 두 연결을 확인한다

VAELoader에서 별도 VAE를 불러오는 경우도 원리는 같다.

text-to-image라면 외부 VAE를 VAEDecode에 연결하는 것만으로 출력 디코딩을 바꿀 수 있다. 하지만 img2img에는 VAEEncode가 추가되기 때문에 외부 VAE 적용 범위를 명확히 정해야 한다.

입력과 출력에 같은 외부 VAE를 사용하려는 구성이라면 다음처럼 연결할 수 있다.

VAELoader VAE → VAEEncode

VAELoader VAE → VAEDecode

MODEL과 CLIP까지 외부 VAE 쪽으로 바꾸는 것은 아니다. VAE 타입을 입력받는 Encode·Decode 연결을 확인하면 된다.

따라서 “VAELoader를 추가했으니 외부 VAE가 적용됐다”고 판단하기보다 실제 선이 어디까지 연결돼 있는지를 보는 것이 중요하다.

서로 다른 VAE를 섞기 전 호환성을 확인한다

ComfyUI는 VAEEncode와 VAEDecode가 각각 VAE 입력을 받기 때문에 기술적으로 워크플로우에서 연결을 다르게 구성할 여지는 있다. 하지만 어떤 VAE든 자유롭게 조합해도 된다는 의미는 아니다.

실제로 적용할 때 체크할 점

VAE는 특정 latent 표현을 encode하고 decode한다. 현재 ComfyUI에서도 VAE와 latent의 구조가 맞지 않는 경우 채널 수나 형태가 맞지 않아 Decode 단계에서 오류가 발생하는 사례가 보고된다.

모델 계열이 다르면 latent 구조부터 달라질 수 있다

최근 이미지·영상 모델은 모두 동일한 VAE 구조를 사용하는 것이 아니다. 특정 VAE가 기대하는 latent 채널과 실제 생성 모델이 내보내는 latent 구성이 다르면 정상적인 디코딩 자체가 불가능할 수 있다.

따라서 외부 VAE를 설정할 때는 먼저 현재 체크포인트 또는 모델과 호환되는 VAE인지 확인해야 한다. Encode와 Decode를 다른 VAE로 나누는 실험은 기본 구성이 정상적으로 동작한다는 것을 확인한 뒤 진행하는 편이 안전하다.

inpaint에서는 VAEEncodeForInpaint를 구분한다

img2img와 비슷하게 기존 이미지를 입력하지만 마스크를 사용하는 inpaint 워크플로우에서는 일반 VAEEncode 대신 VAEEncodeForInpaint가 사용될 수 있다.

이 노드 역시 pixels와 VAE를 입력받지만 mask와 grow_mask_by도 함께 처리한다. 따라서 인페인팅 워크플로우에서 외부 VAE를 적용한다면 일반 VAEEncode만 찾을 것이 아니라 실제 사용 중인 Encode 노드의 VAE 입력을 확인해야 한다.

결국 노드 이름보다 중요한 것은 현재 워크플로우에서 어떤 노드가 IMAGE를 LATENT로 바꾸고 있는가다. 그 Encode 단계와 마지막 Decode 단계의 VAE 연결을 함께 보면 설정 구조가 훨씬 명확해진다.

img2img VAE 설정은 양쪽 연결부터 확인한다

ComfyUI img2img에서 VAE 설정을 확인할 때는 VAEEncode → KSampler → VAEDecode 흐름을 하나로 보면 된다. 체크포인트 VAE를 사용한다면 Encode와 Decode 양쪽에서 그 VAE가 연결돼 있는지 먼저 확인한다.

외부 VAELoader를 사용할 때도 같은 기준으로 두 VAE 입력을 확인하는 것이 좋다. 결과가 이상하거나 오류가 난다면 sampler 설정을 먼저 바꾸기보다 현재 모델과 VAE의 호환성, VAEEncode와 VAEDecode의 실제 연결부터 확인하자.