snow · 2026.5.24 02:32 · 조회 4
FLUX.1 설치 및 사용 가이드 (Mac)
개요
이 가이드는 Mac Apple Silicon(M1/M2/M3/M4) 환경에서 FLUX.1 이미지 생성 모델을 HuggingFace diffusers 라이브러리를 이용해 설치하고 실행하는 방법을 설명한다. FLUX.1 [schnell](Apache 2.0)과 FLUX.1 dev 모두 로컬에서 실행 가능하다.
관련 페이지: FLUX.1 소개
사전 요구사항
하드웨어
| 항목 | 최소 권장 | 권장 |
|---|---|---|
| RAM (통합 메모리) | 16 GB | 32 GB 이상 |
| 저장공간 | 30 GB (schnell) / 35 GB (dev) | 50 GB 이상 |
| 칩셋 | Apple M1 | Apple M2 이상 |
- 8 GB RAM: FLUX.1 실행 불가. 메모리 부족으로 크래시 발생
- 16 GB RAM: schnell은 GGUF 양자화 버전으로 제한적 실행 가능
- 24 GB RAM 이상: diffusers 기반 전체 파이프라인 안정 실행 가능
- 32 GB RAM 이상: 고해상도(1024×1024 이상) 생성 시 안정적
소프트웨어
- macOS 13 Ventura 이상
- Python 3.10 이상
- Xcode Command Line Tools:
xcode-select --install
설치 방법 (HuggingFace diffusers)
1단계: 가상 환경 생성
python3 -m venv flux-env
source flux-env/bin/activate
2단계: PyTorch 설치
Mac MPS를 지원하는 PyTorch를 설치한다. torch 2.3.1 이상을 권장한다.
pip install torch torchvision torchaudio
설치 확인:
python3 -c "import torch; print(torch.__version__); print('MPS available:', torch.backends.mps.is_available())"
3단계: diffusers 및 의존성 설치
pip install diffusers transformers accelerate sentencepiece protobuf
4단계: HuggingFace 로그인 (dev 모델 사용 시)
FLUX.1 [dev]는 HuggingFace에서 라이선스 동의가 필요하다. HuggingFace 모델 페이지에서 동의 후 토큰으로 로그인한다.
pip install huggingface_hub
huggingface-cli login
FLUX.1 [schnell]은 로그인 없이 사용 가능하다.
Apple Silicon MPS 설정
MPS(Metal Performance Shaders)는 Apple Silicon의 GPU를 PyTorch에서 활용할 수 있게 해주는 백엔드다.
import torch
# MPS 사용 가능 여부 확인
if torch.backends.mps.is_available():
device = torch.device("mps")
print("MPS 사용 가능 — Apple Silicon GPU 가속 활성화")
elif torch.cuda.is_available():
device = torch.device("cuda")
else:
device = torch.device("cpu")
print("CPU 모드로 실행 (느림)")
print(f"사용 디바이스: {device}")
주의: MPS 백엔드는 FP8 데이터 타입을 지원하지 않는다. float16 또는 bfloat16을 사용해야 한다.
기본 이미지 생성 코드
FLUX.1 [schnell] — 빠른 생성 (4 스텝)
import torch
from diffusers import FluxPipeline
# 파이프라인 로드 (최초 실행 시 약 24GB 다운로드)
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16
)
pipe = pipe.to("mps")
prompt = "A serene mountain lake at sunset, photorealistic, golden hour lighting"
image = pipe(
prompt=prompt,
num_inference_steps=4, # schnell은 1~4 스텝 권장
guidance_scale=0.0, # schnell은 guidance_scale=0 사용
height=1024,
width=1024,
max_sequence_length=256,
).images[0]
image.save("output_schnell.png")
print("이미지 저장 완료: output_schnell.png")
FLUX.1 [dev] — 고품질 생성
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
torch_dtype=torch.bfloat16
)
pipe = pipe.to("mps")
prompt = "A majestic snow leopard in the Himalayas, ultra-detailed fur texture, bokeh background"
image = pipe(
prompt=prompt,
num_inference_steps=28, # dev는 20~50 스텝 권장
guidance_scale=3.5, # dev는 3.5~7.0 권장
height=1024,
width=1024,
max_sequence_length=512,
).images[0]
image.save("output_dev.png")
파라미터 조절 가이드
| 파라미터 | 설명 | schnell 권장값 | dev 권장값 |
|---|---|---|---|
num_inference_steps | 노이즈 제거 반복 횟수. 높을수록 품질 향상, 속도 저하 | 1~4 | 20~50 |
guidance_scale | 프롬프트 충실도. 높을수록 프롬프트에 집착 | 0.0 | 3.5~7.0 |
height / width | 출력 이미지 해상도 (64의 배수여야 함) | 512~1024 | 512~1360 |
max_sequence_length | 프롬프트 최대 토큰 길이 | 256 | 512 |
generator | 재현 가능한 결과를 위한 시드 고정 | 아래 참고 | 아래 참고 |
시드(Seed) 고정으로 재현 가능한 결과 생성
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16
).to("mps")
# CPU generator 사용 (MPS에서 generator는 CPU로 생성해야 함)
generator = torch.Generator(device="cpu").manual_seed(42)
image = pipe(
prompt="A futuristic city skyline at night",
num_inference_steps=4,
guidance_scale=0.0,
generator=generator,
).images[0]
image.save("output_seeded.png")
메모리 최적화
방법 1: Sequential CPU Offload (16 GB RAM 환경)
모델의 각 레이어를 순차적으로 GPU에 올렸다 CPU로 내리는 방식. 속도는 느리지만 메모리 사용량을 최소화한다.
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16
)
# CPU Offload 활성화 (pipe.to("mps") 대신 사용)
pipe.enable_sequential_cpu_offload()
# VAE 메모리 절약
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
image = pipe(
prompt="A beautiful waterfall in a lush forest",
num_inference_steps=4,
guidance_scale=0.0,
).images[0]
image.save("output.png")
방법 2: mflux — Mac 전용 MLX 네이티브 구현 (권장)
mflux는 Apple MLX 프레임워크 기반의 FLUX.1 구현체로, Mac에서의 성능과 메모리 효율이 diffusers보다 뛰어나다.
pip install mflux
# schnell — 4 스텝으로 빠르게 생성
mflux-generate \
--model schnell \
--prompt "A cozy cabin in the woods during winter" \
--steps 4 \
--seed 42 \
--height 1024 \
--width 1024
# dev — 고품질 생성
mflux-generate \
--model dev \
--prompt "Portrait of an astronaut on Mars" \
--steps 25 \
--guidance 3.5 \
--seed 42
방법 3: float16 명시 지정
bfloat16 대신 float16을 명시하면 일부 환경에서 메모리 효율이 개선된다.
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.float16 # bfloat16 대신 float16
).to("mps")
ComfyUI 연동 방법
ComfyUI는 노드 기반 GUI로 FLUX.1을 시각적으로 사용할 수 있게 해준다.
설치
# ComfyUI 설치
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
# Mac 전용 PyTorch nightly (MPS 최신 기능 사용 시)
pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
모델 파일 배치
- FLUX.1 [dev] FP8 체크포인트 다운로드 →
ComfyUI/models/checkpoints/에 배치 - VAE 파일(
ae.safetensors) 다운로드 →ComfyUI/models/vae/에 배치 - 텍스트 인코더 CLIP/T5 →
ComfyUI/models/clip/에 배치
실행
python main.py --force-fp16
브라우저에서 http://127.0.0.1:8188 접속 후 FLUX.1 워크플로우를 로드한다.
자주 발생하는 오류 해결
MPS backend out of memory
RuntimeError: MPS backend out of memory (MPS allocated: X.XX GB, other allocations: X.XX GB, max allowed: X.XX GB)
해결 방법:
enable_sequential_cpu_offload()사용- 해상도를 낮춤 (1024 → 768 또는 512)
- 다른 앱을 종료하여 RAM 확보
- mflux 사용으로 전환
float64 not supported on MPS
NotImplementedError: The operator 'aten::_fft_r2c' is not currently implemented for the MPS device
해결 방법: torch_dtype=torch.bfloat16 또는 torch.float16으로 명시 지정. float32/float64는 MPS에서 지원되지 않는 연산이 있다.
slow_tokenizer or sentencepiece 오류
ModuleNotFoundError: No module named 'sentencepiece'
해결 방법:
pip install sentencepiece protobuf
HuggingFace 401 인증 오류 (dev 모델)
OSError: You are trying to access a gated repo ... make sure to have access to it
해결 방법: FLUX.1-dev HuggingFace 페이지에서 라이선스에 동의 후 huggingface-cli login 재실행.
Generator device 오류 (MPS)
RuntimeError: Expected a 'mps' device type for generator but found 'cpu'
해결 방법: MPS 환경에서는 torch.Generator(device="cpu")로 생성해야 한다.
# 잘못된 예
generator = torch.Generator(device="mps").manual_seed(42)
# 올바른 예
generator = torch.Generator(device="cpu").manual_seed(42)
참고 링크
| 리소스 | 링크 |
|---|---|
| diffusers FLUX 공식 문서 | huggingface.co/docs/diffusers/api/pipelines/flux |
| mflux (MLX 네이티브 구현) | github.com/filipstrand/mflux |
| FLUX.1 [schnell] 모델 | huggingface.co/black-forest-labs/FLUX.1-schnell |
| FLUX.1 [dev] 모델 | huggingface.co/black-forest-labs/FLUX.1-dev |
| Black Forest Labs 공식 | bfl.ai |
| ComfyUI GitHub | github.com/comfyanonymous/ComfyUI |
| Mac에서 FLUX 실행 가이드 (DEV.to) | dev.to/nabata/running-the-flux1 |
| Apple MPS 최적화 (HuggingFace 공식) | huggingface.co/docs/diffusers/optimization/mps |
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.