AI 이미지/Flux AI

ComfyUI에서 Flux GGUF 사용하기

하늘이푸른오늘 2025. 2. 1. 00:32
GGUF(GGML Universal File) 파일 형식은 텐서와 메타데이터를 단일 파일에 저장하는 바이너리 형식 포맷으로서, 모델 데이터를 빠르게 저장하고 로드할 수 있도록 설계되었다....(중략).... GGUF 파일은 일반적으로 PyTorch나 Tensor와 같은 다른 머신 러닝 라이브러리로 개발된 모델을 변환하여 생성된다.(출처: GGUF-wiki)

저는 머신러닝에 대해선 거의 모르지만, GGUF는 그냥 공통 파일 포맷 정도로 생각하면 되고, 무엇보다 대형모델을 빠르게 돌릴 수 있는 장점이 있다고 합니다.

사실 제가 GGUF까지 관심을 둘만한 일은 아닙니다. 그런데... Stable Diffusion 보다 성능이 좋다는 Flux 모델을 사용하고 싶은데, SD-Forge에서는 소형모델이나마 지원해주는데, ComfyUI에서는 소형모델(NF4)를 지원해주는 커스톰 노드를 찾았으나 현재는 오류가 발생하고, 이 커스톰 노드 대신 ComfyUI_GGUF 커스톰 노드를 사용하라고 되어 있어, 어쩔 수 없이 뒤적거리기 시작했습니다.

아무튼 이 글에서는 GGUF를 사용하면 Flux AI 모델을 돌릴 수 있는 방법을 설명드립니다.

====

Flux 는 Black Forest Labs에서 개발한 텍스트-이미지 디퓨전 모델입니다. 2024년 현재 자신의 PC에서 돌릴 수 있는 오픈 소스 이미지 모델중 최고라고 알려져 있습니다. StabilityAI에서 공개한 SDXL이나 Stable Diffusion 3 medium 에 비해 품질이 월등하다고 합니다.

특히 Flux.1 dev 모델은 프롬프트를 아주 잘 이해하고, 손가락 등이 잘못 생성되는 등의 문제가 없으며, 텍스트도 매우 잘 생성합니다.

이 글에서는 Flux 모델 자체가 아니라, Flux를 변환한 GGUF 파일을 돌리는 방법을 설명합니다.

Flux AI 모델의 종류

Flux AI 모델은 아래와 같은 종류가 있습니다.

  1. Single-file FP8 버전 - 모든 내용이 하나의 파일로 포함된 중간정도 정밀도의 모델. 사용하기 쉽다.(16GB)
  2. Flux Schnell 버전 - 농축된 4단계 모델. 샘플링 시간이 줄어든 만큼 품질도 저하된다.(16GB)
  3. Regular FP16  풀버전 - 완전한 정밀도 버전으로 품질이 약간 더 좋다.(24GB)

이상에서 보는 것처럼 정상적인?? Flux AI 모델은 상당히 높은 수준의 VRAM을 요구합니다. 제가 사용하는 3070은 8GB로 어떤 것도 돌리기가 힘들죠.

이 이외에도 Flux1 dev NF4 모델도 있습니다. 이 모델은 훨씬 더 크기를 줄인 모델로서 최소 6GB VRAM에서도 돌릴 수 있습니다. 하지만, 이 모델은 현재 Forge 만 지원하고 ComfyUI에서는 지원을 하지 않습니다.

제가 이 글에서 사용하는 Flux GUFF 모델은 다음과 같은 종류가 있습니다. 그리고 이 링크를 들어가면 보시겠지만, 2bit ~ 16bit까지 다양한 종류의 파일이 존재합니다. 어떤게 어떻게 좋은지는 잘 모릅니다. 그냥 파일의 크기가 큰 게(bit 수가 높은 게) 품질이 좋겠다고 합니다.

소프트웨어

이 글에서는 스테이블 디퓨전용 GUI중에서도 제가 제일 좋아하는 ComfyUI를 사용합니다. ComfyUI가 처음이시라면, 설치 및 기본 사용방법초보가이드를 확인하시기 바랍니다.

따라하기

1단계: 모델 다운로드

GGUF unet 모델

저는 Flux dev GGUF 모델을 사용합니다(참고 Schnell 모델). 링크에 들어가면 아래와 같이 여러개의 파일이 보이는데, 원하는 것만 골라서 다운로드 받으시면 됩니다. 저는 이중에서 F16, Q8_0, Q3_K_S 등 세가지를 받았습니다. F16은 23.8GB 나 되어서 3070에서 절대 안돌아갈 것 같았지만 돌아가더군요. 어떻게 가능한지는 모르겠지만요.

어쨌든 다운로드 받은 파일은 ComfyUI_windows_portable\ComfyUI\models\unet 속에 넣어주시면 됩니다.

CLIP 모델

다음은 CLIP 모델입니다. 먼저 여기에 들어가서 t5 clip encoder GGUF 파일을 다운로드 받아, ComfyUI_windows_portable\ComfyUI\models\clip 에 넣어줍니다.  마찬가지로 아래와 같이 많은 파일이 보이는데, 저는 여기도 마찬가지로 같은 버전으로 받았습니다. 

다음으로 일반적인 클립인 clip-l 모델을 다운로드 받아서 동일한 폴더에 넣어줍니다.

아래가 제가 다운로드 받은 결과입니다.

vae 모델

마지막으로 vae 모델이 필요합니다. 여기에 들어가서 다운로드 받은뒤, ComfyUI_windows_portable\ComfyUI\models\vae 폴더에 넣어주시면 됩니다. 원하시면 구분하기 쉽도록 파일명을 flux-dev-gguf.safetensors 로 변경해주시면 좋습니다.

2단계: 워크플로 불러오기

아래의 JSON 파일을 ComfyUI에 불러옵니다. 좌측위의 Workflow->Open 메뉴를 사용하면 됩니다. 참고로 이 워크플로는 ComfyUI Example 사이트에 있는 FLUX 샘플에서 Loader 부분만 GGUF 용으로 변경한 것입니다.

flux_dev_gguf.json
0.02MB

이 워크플로를 불러오면 대부분 오류가 발생할 것입니다. 그러한 경우, 다음과 같은 작업이 필요합니다.

3단계: 프롬프트 검토

이 워크플로에서는 다음과 같은 프롬프트를 사용했습니다. 왼손은 머리를 가다듬고, 오른손은 칼을 들고 칠면조 요리를 자르려는 모습입니다. 또 뒷쪽 벽에 " Flux GUFF"라는 텍스트가 나타나도록 했습니다. 

프롬프트: Photo of a cute woman, in kitchen cooking turkey, looking at viewer, holding a kitchen knife on the right hand and cut the turkey, left hand fixing her beatuiful hair. "Flux GUFF" is written on the back wall.

4 단계: 이미지 생성

이제 QUEUE 버튼을 누르면 이미지가 생성됩니다. 보시는 것처럼 텍스트가 약간 이상하긴 해도 원하는 이미지가 잘 뽑혔습니다.

저 bit 모델 테스트

8 bit 모델

위의 설정으로 생성했을 경우, 대략 이미지 생성에 1분 15초 정도 소요되었습니다. 아.. 이건 모델을 불러오고 CLIP encode하는 시간은 제외한 단순 샘플링 시간입니다.

여기에서 Flux GGUF와 CLIP을 모두 Q8_0 버전으로 바꾸고 실행시키면 생성시간이 1분 1초 정도 소요되네요. 아래는 실행 결과입니다. 이미지 자체는 문제가 없는데, 글씨나 자세등이 원하는대로 나오지 않네요.

3비트 모델

3비트 모델로 실행하면 시간이 1분 3초정도 걸리네요. 비트수가 낮으면 모델 크기도 작은데 8비트 모델보다 시간이 더 걸리는 건 이상하네요.  아래가 결과인데... 흠... 그냥 16비트로 돌리는 게 제일 나을 것 같네요.

워크플로 설명

좌측 위에는 모델 불러오는 노드들이 있습니다. 아래처럼 세가지 모델을 각기 지정해주면 됩니다. 

이 오른쪽에 프롬프트와 관련된 노드들이 모여 있습니다. [CLIP Text Encode] 에서 [FluxGuidance] 그 다음 [Basic Guider] 를 거쳐 샘플러로 들어갑니다.

이 아래쪽에는 샘플러 관련 노드들이 모여 있습니다. KSampler의 경우엔 모든 기능이 포함되어 있지만, 여기에서는 여러가진 노드를 조합해서 만들어줘야 한다는 점이 다릅니다. 그런데... 왼쪽 위에 있는 [ModelSamplingFlux]노드는 무슨 역할을 하는지 모르겠네요.ㅠㅠ

간편 워크플로

아래는 [SamplerCustomAdvanced] 노드를 사용하지 않고, [KSampler]노드를 사용한 버전입니다. 워크플로는 완전히 다르게 생겼지만, 결과는 비슷합니다.

flux1-dev-guff-simple.json
0.01MB

이상입니다.

이 글은 stable-diffusion-art.com의 글 등 여러가지 글을 참조로 해서 작성하였습니다.