snow · 2026.5.18 00:00 · 조회 3
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단계: 가상 환경 생성
1python3 -m venv flux-env2source flux-env/bin/activate2단계: PyTorch 설치
Mac MPS를 지원하는 PyTorch를 설치한다. torch 2.3.1 이상을 권장한다.
1pip install torch torchvision torchaudio설치 확인:
1python3 -c "import torch; print(torch.__version__); print('MPS available:', torch.backends.mps.is_available())"3단계: diffusers 및 의존성 설치
1pip install diffusers transformers accelerate sentencepiece protobuf4단계: HuggingFace 로그인 (dev 모델 사용 시)
FLUX.1 [dev]는 HuggingFace에서 라이선스 동의가 필요하다. HuggingFace 모델 페이지에서 동의 후 토큰으로 로그인한다.
1pip install huggingface_hub2huggingface-cli loginFLUX.1 [schnell]은 로그인 없이 사용 가능하다.
Apple Silicon MPS 설정
MPS(Metal Performance Shaders)는 Apple Silicon의 GPU를 PyTorch에서 활용할 수 있게 해주는 백엔드다.
1import torch2 3# MPS 사용 가능 여부 확인4if torch.backends.mps.is_available():5 device = torch.device("mps")6 print("MPS 사용 가능 — Apple Silicon GPU 가속 활성화")7elif torch.cuda.is_available():8 device = torch.device("cuda")9else:10 device = torch.device("cpu")11 print("CPU 모드로 실행 (느림)")12 13print(f"사용 디바이스: {device}")주의: MPS 백엔드는 FP8 데이터 타입을 지원하지 않는다. float16 또는 bfloat16을 사용해야 한다.
기본 이미지 생성 코드
FLUX.1 [schnell] — 빠른 생성 (4 스텝)
1import torch2from diffusers import FluxPipeline3 4# 파이프라인 로드 (최초 실행 시 약 24GB 다운로드)5pipe = FluxPipeline.from_pretrained(6 "black-forest-labs/FLUX.1-schnell",7 torch_dtype=torch.bfloat168)9pipe = pipe.to("mps")10 11prompt = "A serene mountain lake at sunset, photorealistic, golden hour lighting"12 13image = pipe(14 prompt=prompt,15 num_inference_steps=4, # schnell은 1~4 스텝 권장16 guidance_scale=0.0, # schnell은 guidance_scale=0 사용17 height=1024,18 width=1024,19 max_sequence_length=256,20).images[0]21 22image.save("output_schnell.png")23print("이미지 저장 완료: output_schnell.png")FLUX.1 [dev] — 고품질 생성
1import torch2from diffusers import FluxPipeline3 4pipe = FluxPipeline.from_pretrained(5 "black-forest-labs/FLUX.1-dev",6 torch_dtype=torch.bfloat167)8pipe = pipe.to("mps")9 10prompt = "A majestic snow leopard in the Himalayas, ultra-detailed fur texture, bokeh background"11 12image = pipe(13 prompt=prompt,14 num_inference_steps=28, # dev는 20~50 스텝 권장15 guidance_scale=3.5, # dev는 3.5~7.0 권장16 height=1024,17 width=1024,18 max_sequence_length=512,19).images[0]20 21image.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) 고정으로 재현 가능한 결과 생성
1import torch2from diffusers import FluxPipeline3 4pipe = FluxPipeline.from_pretrained(5 "black-forest-labs/FLUX.1-schnell",6 torch_dtype=torch.bfloat167).to("mps")8 9# CPU generator 사용 (MPS에서 generator는 CPU로 생성해야 함)10generator = torch.Generator(device="cpu").manual_seed(42)11 12image = pipe(13 prompt="A futuristic city skyline at night",14 num_inference_steps=4,15 guidance_scale=0.0,16 generator=generator,17).images[0]18 19image.save("output_seeded.png")메모리 최적화
방법 1: Sequential CPU Offload (16 GB RAM 환경)
모델의 각 레이어를 순차적으로 GPU에 올렸다 CPU로 내리는 방식. 속도는 느리지만 메모리 사용량을 최소화한다.
1import torch2from diffusers import FluxPipeline3 4pipe = FluxPipeline.from_pretrained(5 "black-forest-labs/FLUX.1-schnell",6 torch_dtype=torch.bfloat167)8 9# CPU Offload 활성화 (pipe.to("mps") 대신 사용)10pipe.enable_sequential_cpu_offload()11 12# VAE 메모리 절약13pipe.vae.enable_slicing()14pipe.vae.enable_tiling()15 16image = pipe(17 prompt="A beautiful waterfall in a lush forest",18 num_inference_steps=4,19 guidance_scale=0.0,20).images[0]21image.save("output.png")방법 2: mflux — Mac 전용 MLX 네이티브 구현 (권장)
mflux는 Apple MLX 프레임워크 기반의 FLUX.1 구현체로, Mac에서의 성능과 메모리 효율이 diffusers보다 뛰어나다.
1pip install mflux1# schnell — 4 스텝으로 빠르게 생성2mflux-generate \3 --model schnell \4 --prompt "A cozy cabin in the woods during winter" \5 --steps 4 \6 --seed 42 \7 --height 1024 \8 --width 10249 10# dev — 고품질 생성11mflux-generate \12 --model dev \13 --prompt "Portrait of an astronaut on Mars" \14 --steps 25 \15 --guidance 3.5 \16 --seed 42방법 3: float16 명시 지정
bfloat16 대신 float16을 명시하면 일부 환경에서 메모리 효율이 개선된다.
1pipe = FluxPipeline.from_pretrained(2 "black-forest-labs/FLUX.1-schnell",3 torch_dtype=torch.float16 # bfloat16 대신 float164).to("mps")ComfyUI 연동 방법
ComfyUI는 노드 기반 GUI로 FLUX.1을 시각적으로 사용할 수 있게 해준다.
설치
1# ComfyUI 설치2git clone https://github.com/comfyanonymous/ComfyUI.git3cd ComfyUI4pip install -r requirements.txt5 6# Mac 전용 PyTorch nightly (MPS 최신 기능 사용 시)7pip 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/에 배치
실행
1python 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'
해결 방법:
1pip install sentencepiece protobufHuggingFace 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")로 생성해야 한다.
1# 잘못된 예2generator = torch.Generator(device="mps").manual_seed(42)3 4# 올바른 예5generator = 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 |
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.