MFLUX: Huggingface Diffusers 기반 FLUX 모델의 MLX 포팅 버전

MFLUX 소개

MFLUX는 Black Forest Labs에서 개발한 강력한 FLUX 모델의 MLX 포팅 버전으로, Mac에서 이 모델을 로컬로 실행할 수 있게 해줍니다.

관련 링크

주요 기능

  • Huggingface Diffusers 구현과 완전 호환
  • 3/4/6/8비트 양자화 실행 지원
  • LoRA 어댑터 지원
  • ControlNet 제어 생성 지원
  • 이미지-이미지 변환 지원
  • Dreambooth 미세조정 지원
  • Flux 도구 세트(채우기, 깊이, Redux) 제공
  • 제3자 HuggingFace 모델 지원

설치 방법

시스템 요구사항

  • macOS 운영체제
  • Python 3.9+

설치 옵션

uv 도구로 설치 (권장)
uv tool install --upgrade mflux
가상 환경으로 설치
mkdir -p mflux && cd mflux && python3 -m venv .venv && source .venv/bin/activate
pip install -U mflux
Python 3.13 개발 프리뷰 버전 설치
uv venv --python 3.13
python -V  # 예: Python 3.13.0rc2
source .venv/bin/activate
uv pip install https://github.com/anthonywu/sentencepiece/releases/download/0.2.1-py13dev/sentencepiece-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
uv pip install --pre --extra-index-url https://download.pytorch.org/whl/nightly -e .
개발자용 설치
git clone git@github.com/filipstrand/mflux.git
make install
make test

사용 가이드

1. 이미지 생성

기본 생성 예제
mflux-generate --model schnell --prompt "고급 음식 사진 촬영" --steps 2 --seed 2 -q 8
mflux-generate --model dev --prompt "고급 음식 사진 촬영" --steps 25 --seed 2 -q 8
전체 명령줄 인자
  • --prompt (필수): 이미지 설명 텍스트
  • --model (필수): 사용할 모델("schnell" 또는 "dev")
  • --output: 출력 파일명 (기본값: "image.png")
  • --seed: 랜덤 시드 (여러 개 가능)
  • --height/--width: 이미지 크기 (기본값 1024x1024)
  • --steps: 추론 단계 수 (기본값 4)
  • --guidance: 안내 비율 (dev 모델만 해당)
  • --quantize/-q: 양자화 비트 수 (3/4/6/8)
  • --lora-paths: LoRA 가중치 경로
  • --lora-scales: LoRA 스케일 비율
  • --image-path: 이미지-이미지 변환을 위한 원본 이미지
  • --image-strength: 원본 이미지 영향 강도 (0.0-1.0)
  • --low-ram: 저 메모리 모드

2. 양자화 실행

실행 시 양자화
mflux-generate \
    --model schnell \
    --steps 2 \
    --seed 2 \
    --quantize 8 \
    --height 1920 \
    --width 1024 \
    --prompt "대나무 숲 연못의 새베 풍경"
양자화 모델 크기 비교
3비트 4비트 6비트 8비트 원본(16비트)
7.52GB 9.61GB 13.81GB 18.01GB 33.73GB
양자화 모델 저장
mflux-save \
    --path "/Users/username/Desktop/schnell_8bit" \
    --model schnell \
    --quantize 8
양자화 모델 로드
mflux-generate \
    --path "/Users/username/Desktop/schnell_8bit" \
    --model schnell \
    --steps 2 \
    --seed 2 \
    --prompt "고급 음식 사진 촬영"

3. 이미지-이미지 변환

mflux-generate \
--prompt "에펠탑 건축 스케치" \
--image-path "reference.png" \
--image-strength 0.3 \
--lora-paths Architectural_Sketching.safetensors \
--lora-scales 1.0 \
--model dev \
--steps 20 \
--seed 43 \
--guidance 4.0 \
--quantize 8 \
--height 1024 \
--width 1024

4. LoRA 어댑터

단일 LoRA 사용
mflux-generate --prompt "샌더 클레인" --model dev --steps 20 --seed 43 -q 8 --lora-paths "sandor_clegane_single_layer.safetensors"
다중 LoRA 조합
mflux-generate \
   --prompt "대나무 숲 속의 샌더 클레인, 종이예술 스타일" \
   --model dev \
   --steps 20 \
   --seed 43 \
   --lora-paths sandor_clegane_single_layer.safetensors Flux_1_Dev_LoRA_Paper-Cutout-Style.safetensors \
   --lora-scales 1.0 1.0 \
   -q 8

5. ControlNet 제어 생성

mflux-generate-controlnet \
  --prompt "보라색 정장을 입은 광대 만화 스타일" \
  --model dev \
  --steps 20 \
  --seed 1727047657 \
  --height 1066 \
  --width 692 \
  -q 8 \
  --lora-paths "Dark Comic - s0_8 g4.safetensors" \
  --controlnet-image-path "reference.png" \
  --controlnet-strength 0.5 \
  --controlnet-save-canny

6. Dreambooth 미세조정

학습 예제
mflux-train --train-config src/mflux/dreambooth/_example/train.json
학습 복원
mflux-train --train-checkpoint 0001000_checkpoint.zip

Flux 도구 세트

1. 채우기 도구 (Inpainting/Outpainting)

마스크 생성
python -m tools.fill_mask_tool /path/to/your/image.jpg
사용 예제
mflux-generate-fill \
  --prompt "빨간 모자와 스노우글라스를 쓴 강아지" \
  --steps 20 \
  --seed 42 \
  --height 1280 \
  --width 851 \
  --guidance 30 \
  -q 8 \
  --image-path "dog.png" \
  --masked-image-path "dog_mask.png"

2. 깊이 도구

깊이맵 생성
mflux-save-depth --image-path "your_image.jpg" -q 8
깊이맵 사용 생성
mflux-generate-depth \
  --prompt "하얀 칼라라 대리석 복도" \
  -q 8 \
  --height 1680 \
  --width 1200 \
  --image-path "original_image.png" \
  --steps 20 \
  --seed 7102725

3. Redux 도구

mflux-generate-redux \
  --prompt "흰색 플랫폼 위의 회색 고양이 조각상" \
  --redux-image-paths "original.png" \
  --steps 20 \
  --height 1654 \
  --width 1154 \
  -q 8

성능 및 호환성

이미지 생성 속도 참고

장치 사용자 보고 시간 비고
Mac Studio M2 Ultra @awni <15초
Macbook Pro M4 Max @ivanfioravanti ~19초 128GB 메모리
Macbook Pro M3 Max @karpathy ~20초
Mac Mini M4 Pro @Stoobs ~34초 64GB 메모리
Macbook Air M1 @mbvillaverde ~335초 8GB 메모리, 512x512

현재 제한사항

  • 배치 생성 미지원
  • 부정 프롬프트 미지원
  • LoRA는 transformer 부분만 지원
  • 일부 LoRA 어댑터 호환되지 않음
  • ControlNet은 canny 버전만 지원
  • Dreambooth 학습 매개변수는 구성 파일을 통해 설정 필요

작업 흐름 제안

  • HF_HUB_DISABLE_PROGRESS_BARS=1로 다운로드 진행 표시 숨기기
  • 복잡한 매개변수를 저장하기 위해 구성 파일 사용
  • 셸 별칭으로 일반 명령 단순화
  • 저 메모리 장치에서 --low-ram 옵션 사용
  • 다중 시드 생성을 위해 --seed 다중 값 또는 --auto-seeds 사용
  • --stepwise-image-output-dir로 중간 단계 이미지 저장

감사의 말

MFLUX 구현은 다음 프로젝트의 기여 없이는 불가능했습니다:

  • MLX 팀이 개발한 MLX
  • Black Forest Labs의 FLUX
  • Hugging Face의 Diffusers
  • Depth Pro 팀의 깊이 모델
  • 모든 기여자 및 테스터

태그: MLX FLUX Hugging Face Diffusers macOS

6월 30일 16:56에 게시됨