M3 Max MacBook Pro에서 Flux Schnell을 로컬로 사용하는 방법

추가적인 번거로움 없이 FLUX를 온라인으로 사용해 보시겠습니까? Anakin AI에서 FLUX.1 Pro, Schnell 및 Dev를 실행할 수 있습니다! Flux Schnell은 텍스트 프롬프트에서 고품질 이미지를 생성할 수 있는 강력한 텍스트-이미지 생성 모델입니다. 이 튜토리얼에서는 M3 Max MacBook Pro에서 Flux Schnell을 로컬로 설정하고 실행하는 단계를 안내합니다. 이 구성은 최대 40GB의 RAM을 활용하여

TRY NSFW AI (NO RESTRICTIONS)

M3 Max MacBook Pro에서 Flux Schnell을 로컬로 사용하는 방법

TRY NSFW AI (NO RESTRICTIONS)
Contents
추가적인 번거로움 없이 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으로 설정합니다.
  • heightwidth: 출력 이미지의 크기를 1024x1024 픽셀로 설정합니다.
  • num_inference_steps: 잡음 제거 단계의 수를 조절합니다(이번에는 빠른 생성을 위해 4로 설정됨).
  • max_sequence_length: 입력 시퀀스의 최대 길이를 제한합니다.

이미지 저장

out.save("flux_image.png")

마지막으로, 이 줄은 생성된 이미지를 "flux_image.png"라는 이름의 PNG 파일로 현재 디렉토리에 저장합니다.

성능 최적화

M3 Max MacBook Pro를 최대한 활용하고 약 30초 생성 시간과 최대 40GB RAM 사용을 달성하기 위해 다음 팁을 고려하세요:

  1. 불필요한 애플리케이션 종료: 리소스를 많이 사용하는 다른 애플리케이션을 종료하여 RAM 및 CPU 리소스를 확보하세요.
  2. 이미지 크기 조정: 더 빠른 생성 시간이 필요하면 heightwidth 매개변수를 줄일 수 있습니다. 반대로, 더 높은 품질을 원한다면 크기를 늘리지만 생성 시간이 더 길어질 수 있습니다.
  3. num_inference_steps 실험: 이 값을 증가시키면 더 높은 품질의 이미지를 얻을 수 있지만 생성 시간이 늘어납니다. 이 값을 줄이면 과정을 가속화할 수 있지만 이미지 품질이 감소할 수 있습니다.
  4. bfloat16 정밀도 사용: 이미 스크립트에 구현된 것처럼 torch.bfloat16 데이터 타입을 사용하는 것은 메모리 사용을 줄이고 품질 손실 없이 속도를 높이는 데 도움이 됩니다.
  5. 배치 처리: 여러 이미지를 생성해야 하는 경우 GPU의 효율적인 사용을 위해 배치 처리를 구현하는 것을 고려하세요.

문제 해결

M3 Max MacBook Pro에서 Flux Schnell을 실행할 때 문제가 발생하면 다음을 시도하세요:

  1. 종속성 업데이트: 모든 패키지가 최신인지 확인하세요, 특히 PyTorch 및 diffusers.
  2. CUDA 호환성 확인: M3 Max는 MPS를 사용하지만, CUDA 관련 오류가 발생할 수 있습니다. 시스템에 맞는 PyTorch 및 관련 라이브러리를 올바른 버전으로 사용하고 있는지 확인하세요.
  3. 리소스 사용 모니터링: 활동 모니터를 사용하여 RAM 및 CPU 사용량을 확인하세요. 한계에 자주 도달하는 경우 모델 매개변수를 조정하거나 시스템 리소스를 더 확보해야 할 수 있습니다.
  4. 캐시 지우기: 메모리 관련 오류가 발생하면 PyTorch 캐시를 지워보세요:

torch.cuda.empty_cache()

5. 커널 재시작: Jupyter 노트북이나 유사한 환경을 사용하는 경우 지속적인 오류가 발생하면 커널을 재시작해 보세요.

결론

M3 Max MacBook Pro에서 로컬로 Flux Schnell을 실행하면 강력한 텍스트-이미지 생성 기능을 제공합니다. 이 튜토리얼에 설명된 설정을 통해 약 30초 만에 텍스트 설명으로부터 고품질 이미지를 생성할 수 있으며, 최대 40GB의 RAM을 활용할 수 있습니다. 성능은 하드웨어 및 프롬프트의 복잡도에 따라 다를 수 있습니다.

빠르기와 이미지 품질의 균형을 맞추기 위해 다양한 매개변수를 실험해 보세요. AI 모델과 하드웨어가 계속 발전함에 따라 더욱 인상적인 결과가 다가오고 있습니다. 생성이 즐거우시길 바랍니다!