추가적인 번거로움 없이 FLUX를 온라인으로 사용해 보시겠습니까?
Anakin AI에서 FLUX.1 Pro, Schnell 및 Dev를 실행할 수 있습니다!



Flux Schnell은 텍스트 프롬프트에서 고품질 이미지를 생성할 수 있는 강력한 텍스트-이미지 생성 모델입니다. 이 튜토리얼에서는 M3 Max MacBook Pro에서 Flux Schnell을 로컬로 설정하고 실행하는 단계를 안내합니다. 이 구성은 최대 40GB의 RAM을 활용하여 효율적인 이미지 생성을 가능하게 하며, 각 이미지를 생성하는 데 약 30초가 소요됩니다.
Mac에서 Flux.1 Pro를 로컬로 실행하기 위한 요구 사항
시작하기에 앞서, 시스템이 다음 요구 사항을 충족하는지 확인하세요:
- M3 Max 칩이 탑재된 MacBook Pro
- macOS(최신 버전 권장)
- 최소 40GB의 사용 가능한 RAM
- Anaconda 또는 Miniconda 설치
- 종속성 다운로드를 위한 인터넷 연결
Mac에서 Flux.1 Pro를 로컬로 실행하기 위한 단계별 튜토리얼
Mac에서 Flux.1 Pro를 로컬로 실행하기 위한 단계별 튜토리얼
단계 1: 환경 설정
먼저, 새로운 Conda 환경을 만들고 활성화 하겠습니다:
conda create -n flux python=3.11
conda activate flux
단계 2: 종속성 설치
이제 필요한 패키지를 설치하겠습니다:
pip install torch==2.3.1
pip install git+https://github.com/huggingface/diffusers.git
pip install transformers==4.43.3 sentencepiece==0.2.0 accelerate==0.33.0 protobuf==5.27.3
단계 3: 파이썬 스크립트 준비
flux_schnell.py
라는 이름의 새로운 파이썬 파일을 만들고 다음 코드를 추가합니다:
import torch
from diffusers import FluxPipeline
import diffusers# MPS 장치에서 처리할 수 있도록 rope 함수를 수정합니다
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "차원은 짝수여야 합니다."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)
diffusers.models.transformers.transformer_flux.rope = new_flux_rope
# Flux Schnell 모델 로드
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
# 프롬프트 정의
prompt = "인사를 전하는 표지를 들고 있는 고양이"
# 이미지 생성
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
# 생성된 이미지 저장
out.save("flux_image.png")
단계 4: 스크립트 실행
파이썬 스크립트를 실행하세요:
python flux_schnell.py
이렇게 하면 "인사를 전하는 표지를 들고 있는 고양이"라는 프롬프트에 기반하여 이미지가 생성되고, 생성된 이미지는 "flux_image.png" 라는 이름으로 같은 디렉토리에 저장됩니다.
코드 이해하기
스크립트의 주요 구성 요소를 살펴보겠습니다:
종속성 가져오기
import torch
from diffusers import FluxPipeline
import diffusers
이 줄들은 필요한 모듈을 가져옵니다: 텐서 작업을 위한 PyTorch, Flux Schnell 모델을 사용하기 위한 diffusers 라이브러리의 FluxPipeline, 그리고 추가 유틸리티를 위한 diffusers 모듈입니다.
Rope 함수 수정
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "차원은 짝수여야 합니다."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)diffusers.models.transformers.transformer_flux.rope = new_flux_rope
이 섹션은 Apple Silicon 칩에서 사용되는 MPS(메탈 성능 셰이더) 장치를 처리하기 위해 rope(회전 위치 임베딩) 함수를 수정합니다. 필요할 때 텐서를 CPU로 이동시켜 M3 Max 칩과의 호환성을 보장합니다.
모델 로드
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
이 코드는 Hugging Face 모델 허브에서 Flux Schnell 모델을 로드합니다. 모델 버전을 지정하고, 효율성을 위해 데이터 유형을 bfloat16으로 설정하며, 모델을 MPS 장치로 이동합니다.
이미지 생성
prompt = "인사를 전하는 표지를 들고 있는 고양이"out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
여기서 우리는 프롬프트를 정의하고 로드된 모델을 사용하여 이미지를 생성합니다. 매개변수는 생성 과정의 다양한 측면을 조정합니다:
guidance_scale
: 조건 없는 생성을 위해 0으로 설정합니다.height
및width
: 출력 이미지의 크기를 1024x1024 픽셀로 설정합니다.num_inference_steps
: 잡음 제거 단계의 수를 조절합니다(이번에는 빠른 생성을 위해 4로 설정됨).max_sequence_length
: 입력 시퀀스의 최대 길이를 제한합니다.
이미지 저장
out.save("flux_image.png")
마지막으로, 이 줄은 생성된 이미지를 "flux_image.png"라는 이름의 PNG 파일로 현재 디렉토리에 저장합니다.
성능 최적화
M3 Max MacBook Pro를 최대한 활용하고 약 30초 생성 시간과 최대 40GB RAM 사용을 달성하기 위해 다음 팁을 고려하세요:
- 불필요한 애플리케이션 종료: 리소스를 많이 사용하는 다른 애플리케이션을 종료하여 RAM 및 CPU 리소스를 확보하세요.
- 이미지 크기 조정: 더 빠른 생성 시간이 필요하면
height
및width
매개변수를 줄일 수 있습니다. 반대로, 더 높은 품질을 원한다면 크기를 늘리지만 생성 시간이 더 길어질 수 있습니다. num_inference_steps
실험: 이 값을 증가시키면 더 높은 품질의 이미지를 얻을 수 있지만 생성 시간이 늘어납니다. 이 값을 줄이면 과정을 가속화할 수 있지만 이미지 품질이 감소할 수 있습니다.- bfloat16 정밀도 사용: 이미 스크립트에 구현된 것처럼
torch.bfloat16
데이터 타입을 사용하는 것은 메모리 사용을 줄이고 품질 손실 없이 속도를 높이는 데 도움이 됩니다. - 배치 처리: 여러 이미지를 생성해야 하는 경우 GPU의 효율적인 사용을 위해 배치 처리를 구현하는 것을 고려하세요.
문제 해결
M3 Max MacBook Pro에서 Flux Schnell을 실행할 때 문제가 발생하면 다음을 시도하세요:
- 종속성 업데이트: 모든 패키지가 최신인지 확인하세요, 특히 PyTorch 및 diffusers.
- CUDA 호환성 확인: M3 Max는 MPS를 사용하지만, CUDA 관련 오류가 발생할 수 있습니다. 시스템에 맞는 PyTorch 및 관련 라이브러리를 올바른 버전으로 사용하고 있는지 확인하세요.
- 리소스 사용 모니터링: 활동 모니터를 사용하여 RAM 및 CPU 사용량을 확인하세요. 한계에 자주 도달하는 경우 모델 매개변수를 조정하거나 시스템 리소스를 더 확보해야 할 수 있습니다.
- 캐시 지우기: 메모리 관련 오류가 발생하면 PyTorch 캐시를 지워보세요:
torch.cuda.empty_cache()
5. 커널 재시작: Jupyter 노트북이나 유사한 환경을 사용하는 경우 지속적인 오류가 발생하면 커널을 재시작해 보세요.
결론
M3 Max MacBook Pro에서 로컬로 Flux Schnell을 실행하면 강력한 텍스트-이미지 생성 기능을 제공합니다. 이 튜토리얼에 설명된 설정을 통해 약 30초 만에 텍스트 설명으로부터 고품질 이미지를 생성할 수 있으며, 최대 40GB의 RAM을 활용할 수 있습니다. 성능은 하드웨어 및 프롬프트의 복잡도에 따라 다를 수 있습니다.
빠르기와 이미지 품질의 균형을 맞추기 위해 다양한 매개변수를 실험해 보세요. AI 모델과 하드웨어가 계속 발전함에 따라 더욱 인상적인 결과가 다가오고 있습니다. 생성이 즐거우시길 바랍니다!