로컬 이미지 생성(SDXL·Flux), 흔한 함정과 해결법
요약: 로컬 이미지 생성에서 SD에서 Flux로 넘어온 사람들이 겪는 2026년 #1 실수는 Flux를 SDXL처럼 다루는 것이다. 결과가 번쩍이고(과포화) 흐릿하며 손이 이상하다면, 십중팔구 모델 탓이 아니라 세팅 탓이다: Flux는 distilled(증류) 모델이라 guidance가 내장돼 있어 CFG를 1.0으로 둬야 하고, 네거티브 프롬프트를 무시한다. 높은 CFG와 네거티브 프롬프트라는 SDXL 습관이 결과를 망친다.
로컬 이미지 생성에서 SD에서 Flux로 넘어온 사람들이 겪는 2026년 #1 실수는 Flux를 SDXL처럼 다루는 것이다. 결과가 번쩍이고(과포화) 흐릿하며 손이 이상하다면, 십중팔구 모델 탓이 아니라 세팅 탓이다: Flux는 distilled(증류) 모델이라 guidance가 내장돼 있어 CFG를 1.0으로 둬야 하고, 네거티브 프롬프트를 무시한다. 높은 CFG와 네거티브 프롬프트라는 SDXL 습관이 결과를 망친다. 또 하나 흔한 오해: SDXL엔 양자화가 필요 없다 — 이미 FP16으로 소비자 GPU에 맞기 때문이다(양자화 수혜자는 Flux뿐). 이 글은 로컬 이미지 생성의 고유 함정을 증상 → 원인 → 해결 순으로 수치와 함께 정리한다.
| 모델(콜드, 1024px) | 실측 생성시간 |
|---|---|
| z-image-turbo (8스텝) | 6초 |
| qwen-image (50스텝) | 73초 |
- 표본
- 실측 지표 2개 (Hax /data 큐레이션)
- 측정 환경
- RTX PRO 6000 Blackwell ×4 풀; ComfyUI 0.24.0
- 수집일
- 2026-06-30
- 방법
- 1장 콜드 스타트(모델 로드 포함); 1장 콜드 스타트
쉽게 말하면: SDXL과 Flux는 운전 방식이 다른 두 차다. SDXL은 액셀(CFG)을 세게 밟고 "이건 하지 마"(네거티브)를 일일이 말해야 하지만, Flux는 이미 자동 주행이 켜진 차(guidance 내장)라 액셀을 세게 밟으면(CFG↑) 오히려 타이어가 헛돈다(과포화). SDXL 운전 습관 그대로 Flux에 타면 사고가 난다.
Flux 결과가 왜 번쩍이고 흐릿한가?#
SDXL 기본값을 그대로 썼기 때문이다 — Flux는 다른 모델이다. 세 가지를 고쳐라. (1) CFG(guidance)를 1.0~1.5로 — Flux dev/schnell은 distilled라 guidance가 baked-in이라, 높은 CFG는 과포화·번쩍임(blown-out)만 만든다. (2) 네거티브 프롬프트를 비워라 — Flux는 무시한다. (3) 해상도는 1024×1024가 스윗스팟 — 훈련 해상도 아래로 작게 뽑으면 뭉개진다(최대 4MP 지원). 샘플러는 euler + simple이 안전 기준선, 스텝은 dev 20~30, schnell/Klein 4B는 4스텝이다. 참고로 손은 Flux의 강점이지 약점이 아니다 — 나쁜 손이 나오면 그건 과양자화·잘못된 CFG·저해상도의 증상이지 모델 결함이 아니다.
| 항목 | 올바른 값·VRAM(측정) | 대표 함정 |
|---|---|---|
| Flux CFG/guidance | 1.0 (distilled·내장 guidance) | 높이면 과포화·번쩍임 |
| Flux 네거티브 프롬프트 | 비움 (무시됨) | SDXL 습관으로 채움 |
| Flux.1 Dev VRAM | FP16 ~33GB / FP8 ~13GB / GGUF Q4 ~7GB | 33GB는 소비자 GPU 초과 |
| SDXL(FP16) | ~8GB (양자화 불필요) | 굳이 FP8/GGUF 적용 |
| GGUF 로드 | unet/ 폴더 + Unet Loader(GGUF) 노드 | 표준 로더에 물림 → 실패 |
양자화와 텍스트 인코더는 어떻게 맞추나?#
Flux만 양자화하고, 이중 양자화와 잘못된 인코더를 피하라. SDXL/SD1.5는 FP16으로 이미 맞으니 양자화하지 마라(이득 없음). Flux는 다르다: FP16 ~33GB(모든 소비자 GPU 초과) → FP8 ~13GB(4070 Ti Super/4080) → GGUF Q4 ~7GB(4060 8GB). GGUF는 Q4/Q5/Q6/Q8로 세분화돼 8GB 카드엔 FP8보다 낫고, Q8은 풀 정밀에 근접·Q5는 밸런스다. 절대 금지: FP8 체크포인트(flux1-dev-fp8)를 NF4 옵션으로 로드하지 마라 — 30초 de-quant + 60초 re-quant를 낭비하고 두 번 양자화돼 품질이 떨어진다. 텍스트 인코더(T5-XXL)도 함정이다: 8GB에서 풀 정밀 T5는 크래시·쓰레기 출력이니 t5xxl_fp8이 필요하다(여유되면 t5xxl_fp16이 품질↑). 그리고 GGUF는 models/unet/에 두고 'Unet Loader (GGUF)' 노드로 불러야 한다 — 표준 Load Diffusion Model 노드에 물리는 게 흔한 실패다. 확장 설치 후 ComfyUI 재시작을 잊지 마라(안 하면 "작동 안 함"의 태반).
VRAM이 터지거나 생성이 10분 걸린다면?#
대개 병렬 로드·VAE 디코드·무심코 켜진 CPU 오프로드 때문이다. 총 VRAM은 체크포인트 크기가 아니라 가중치+VAE+텍스트인코더+워킹메모리의 합이다. (1) 모델을 순차 로드하라 — SDXL+ControlNet+IP-Adapter를 동시에 올리면 ~14GB지만, 필요할 때 로드/언로드하면 피크가 ~8GB로 준다. (2) VAE 디코드가 피크 메모리 순간이다 — tiled VAE 디코딩을 켜거나 VAE를 CPU로(--cpu-vae, +1~2GB), 최종 디코드는 단일 배치로. 2패스(저해상도 후 업스케일)도 12GB에선 "생성 vs 크래시"를 가른다. (3) 이미지당 10분+면 CPU 오프로드를 의심하라 — nvidia-smi/작업관리자로 GPU 사용률을 보고, 0에 가까우면 CPU로 도는 것이다. --novram 대신 --lowvram(20~30% 느림)을 쓰고, 어텐션 최적화(+1~2GB)를 켜라. 윈도우는 PyTorch 2.4를 피하고 2.3.1/nightly를 써라.
그래서 안전한 로컬 이미지 생성 세팅은?#
핵심은 "Flux는 SDXL이 아니다"를 먼저 받아들이고, 포맷을 하드웨어에 맞추는 것이다.
- Flux 세팅: CFG 1.0·네거티브 비움·1024 해상도·euler/simple·dev 20~30스텝. 번쩍임·나쁜 손은 세팅 문제지 모델 문제가 아니다.
- 양자화: SDXL은 그대로(FP16), Flux만 FP8(13GB)/GGUF Q5~Q8(8GB). 이중 양자화 금지, T5는 fp8(여유되면 fp16), GGUF는 전용 노드로.
- OOM·속도: 순차 로드 + tiled VAE + CPU offload 플래그. 10분+는 CPU 폴백 신호. 모든 세팅은 자기 GPU·프롬프트로 A/B 후 고정.
함께 읽기: ComfyUI로 이미지·영상 만들기: 우리가 직접 굴리며 잰 운영 회고, ComfyUI란? 노드로 조립하는 이미지·영상 생성 파이프라인
함께 읽기: 로컬 이미지 생성(SDXL·Flux), 5분 시작 가이드, 로컬 이미지 생성 SDXL vs Flux, 직접 돌려본 속도·품질
참고 링크
- Flux(Black Forest Labs)
- ComfyUI(로컬 이미지 생성 UI)
- ComfyUI-GGUF(city96·Flux GGUF 로더)
- Stable Diffusion(Stability AI·SDXL)
- ComfyUI Flux 공식 튜토리얼
참고: VRAM(Flux 33/13/7GB·SDXL 8GB)·스텝(dev 20~30·schnell 4)·CFG(1.0)·순차로드 절감(14→8GB)·속도 페널티(20~30%) 같은 수치는 2026년 공개·커뮤니티 실측이며 GPU·해상도·워크플로·확장에 따라 달라진다(영구 수치 아님, 블로그 벤치 다수). 노드·플래그·최적 샘플러는 모델·ComfyUI 버전마다 바뀌고(예: 새 모델은 새 샘플러 노드 필요), NF4는 FP8보다 정밀할 수도 있으니 자기 GPU에서 검증하라. 이미지 생성 관행은 빠르게 바뀌니 분기별로 다시 본다.
Responses
No responses yet. Be the first to respond.