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

ComfyUI VAE 설정, fp16·bf16·fp32 차이와 선택 기준

by GoingProdo 2026. 8. 22.

ComfyUI에서 VAE를 설치하고 연결했는데도 결과가 검게 나오거나 VAE 처리 과정에서 메모리 부담이 크다면 파일 자체보다 VAE가 어떤 정밀도로 실행되고 있는지를 확인할 필요가 있다.

현재 ComfyUI에는 VAE 전용 실행 옵션으로 --fp16-vae, --bf16-vae, --fp32-vae가 있다. 여기에 VAE 연산을 GPU가 아닌 CPU에서 처리하는 --cpu-vae도 제공된다. 이번 글에서는 VAE 파일 선택이나 설치가 아니라 이 실행 설정만 다룬다.

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

ComfyUI VAE 정밀도 옵션은 무엇인가

VAE도 다른 신경망과 마찬가지로 연산에 사용하는 숫자의 정밀도를 선택할 수 있다. 현재 ComfyUI의 실행 옵션에는 VAE를 FP16, BF16, FP32로 구동하는 각각의 플래그가 따로 존재한다.

구분하면 다음과 같다.

--fp16-vae : VAE를 FP16으로 실행

--bf16-vae : VAE를 BF16으로 실행

--fp32-vae : VAE를 FP32 전체 정밀도로 실행

이 세 옵션은 같은 VAE precision 그룹에 속하므로 동시에 여러 개를 지정하는 방식이 아니라 하나를 선택하는 구조다.

VAE 파일의 종류를 바꾸는 설정은 아니다

이 옵션을 사용한다고 VAELoader에서 선택한 VAE 파일 자체가 다른 모델로 바뀌는 것은 아니다.

같은 VAE를 어떤 데이터 타입으로 연산할 것인지 지정하는 실행 설정이다. 따라서 ae.safetensors, wan_2.1_vae.safetensors처럼 어떤 파일을 사용할 것인지를 선택하는 문제와는 분리해서 봐야 한다.

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

먼저 모델과 맞는 VAE를 선택한 상태에서, 정밀도 때문에 문제가 발생한다고 의심될 때 이 옵션을 조정하는 순서가 자연스럽다.

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

fp16 VAE는 메모리만 보고 선택하면 안 된다

FP16은 FP32보다 낮은 정밀도를 사용하는 방식이다. 다만 현재 ComfyUI 자체도 --fp16-vae 옵션 설명에 블랙 이미지가 발생할 수 있다는 경고를 명시하고 있다.

따라서 VAE에서 FP16을 강제로 사용하는 것을 단순한 품질 향상이나 필수 최적화로 보면 안 된다. 특정 VAE나 하드웨어 조합에서는 정상적으로 동작할 수 있지만, 다른 구성에서는 수치적인 문제가 결과 이미지에 직접 나타날 가능성이 있다.

검은 이미지가 나오면 fp32를 비교한다

VAE Decode까지 진행됐는데 최종 이미지가 검게 나오는 상황이라면 원인을 하나로 단정할 수는 없다. 하지만 VAE 정밀도를 강제로 낮춰 사용하고 있다면 해당 설정을 먼저 의심해볼 수 있다.

이 경우 --fp16-vae를 사용 중인지 확인하고, 비교 테스트에서는 --fp32-vae로 실행해 같은 워크플로우의 결과가 달라지는지 보는 방법이 있다.

다만 블랙 이미지가 발생한다고 해서 항상 VAE precision이 원인이라는 뜻은 아니다. 최근 ComfyUI 이슈에서도 정밀도 옵션을 fp16·bf16·fp32로 변경해도 동일한 블랙 출력이 발생한 사례가 보고된 만큼, 정밀도 변경은 원인 분리를 위한 하나의 테스트로 보는 편이 정확하다.

bf16 VAE와 모델별 dtype을 구분해서 본다

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

현재 ComfyUI는 --bf16-vae도 제공한다. BF16은 FP16과 같은 16비트 계열이지만 표현 방식이 다르기 때문에 지원 하드웨어와 모델의 연산 특성에 따라 사용할 수 있는 또 하나의 선택지다.

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

중요한 것은 모든 VAE가 어떤 dtype에서도 동일하게 동작한다고 가정하지 않는 것이다. ComfyUI의 VAE 구현 자체도 모델별로 실제로 사용할 수 있는 working dtype을 제한할 수 있도록 구성되어 있다.

특정 VAE가 FP32 연산을 필요로 하는 경우도 존재한다. 따라서 BF16이나 FP16을 강제로 적용하기 전에 해당 모델의 공식 워크플로우와 현재 ComfyUI 지원 상태를 먼저 보는 것이 좋다.

새로운 이미지·영상 모델은 자체 VAE 구조를 사용하는 경우가 많다. 예를 들어 현재 ComfyUI 공식 워크플로우에서도 Flux 계열은 ae.safetensors, Wan 계열은 wan_2.1_vae.safetensors 또는 wan2.2_vae.safetensors처럼 모델에 맞는 VAE를 명시해서 사용한다.

VRAM이 부족하면 cpu-vae도 확인한다

VAE 정밀도와 별도로 현재 ComfyUI에는 --cpu-vae 옵션이 존재한다. 이 설정은 VAE를 GPU가 아니라 CPU에서 실행하도록 한다.

즉 VRAM 사용을 줄이기 위해 VAE 처리 장치를 GPU 밖으로 옮기는 선택지다. VAE precision 플래그와 달리 --cpu-vae는 정밀도 그룹과 별도로 사용할 수 있도록 정의되어 있다.

속도와 VRAM은 같은 문제가 아니다

CPU VAE를 사용하면 GPU VRAM 부담을 줄이는 방향으로 접근할 수 있지만, GPU에서 처리하는 것과 동일한 실행 속도를 기대하는 설정은 아니다.

실제로 적용할 때 체크할 점

따라서 단순히 “VAE 설정은 낮을수록 좋다”거나 “CPU로 보내면 더 좋다”는 방식으로 접근하는 것보다 현재 문제가 VRAM 부족인지, 수치 정밀도인지 먼저 구분해야 한다.

고해상도 VAE Decode에서만 메모리가 부족하다면 앞서 다룬 VAEDecodeTiled처럼 디코딩 방식을 나누는 방법도 별도로 존재한다. precision 변경과 tiled decode는 서로 다른 해결책이다.

VAE 실행 옵션은 시작 단계에서 적용한다

--fp16-vae, --bf16-vae, --fp32-vae, --cpu-vae는 VAELoader 노드 내부에서 선택하는 값이 아니다. ComfyUI를 시작할 때 전달하는 실행 옵션이다.

따라서 워크플로우 JSON에서 VAELoader만 열어봐서는 현재 어떤 VAE precision 옵션으로 실행 중인지 확인할 수 없다. 자신이 ComfyUI를 실행하는 배치 파일, 터미널 명령 또는 실행 환경에 추가된 인자를 확인해야 한다.

기본 설정에서 문제가 없다면 굳이 VAE precision을 강제로 지정할 필요도 없다. 특정 옵션을 적용한 뒤 문제가 생겼다면 우선 강제 설정을 제거한 상태와 비교하는 것이 문제 원인을 좁히기 쉽다.

VAE 설정은 증상에 맞춰 바꾼다

ComfyUI에서 VAE 설정을 조정할 때는 먼저 어떤 문제를 해결하려는지 구분해야 한다. 블랙 이미지나 수치 안정성이 의심되면 FP16 강제 사용 여부를 확인하고 FP32와 비교할 수 있다.

BF16은 지원되는 모델과 환경에서 별도의 선택지로 사용할 수 있고, GPU VRAM이 문제라면 --cpu-vae를 검토할 수 있다. 다만 정밀도 옵션 하나가 모든 VAE 오류를 해결하는 것은 아니다.

정상적으로 동작하는 기본 환경이라면 불필요하게 precision을 강제하지 않는 것이 출발점이다. 문제가 생겼을 때 현재 실행 인자를 확인한 뒤 fp16 → fp32 비교, 또는 GPU → CPU VAE 비교처럼 한 조건씩 바꿔 테스트하는 편이 원인을 찾기 쉽다.