snow · 2026.5.18 00:00 · 조회 3

PixArt-Σ 설치 및 사용 가이드 (Mac)

PixArt

개요

이 가이드는 Apple Silicon Mac(M1/M2/M3/M4 시리즈)에서 PixArt-Σ를 HuggingFace diffusers 라이브러리를 통해 설치하고 이미지를 생성하는 방법을 설명한다. PyTorch의 MPS(Metal Performance Shaders) 백엔드를 활용하여 Mac의 GPU를 사용하므로 CPU 대비 훨씬 빠른 속도로 실행할 수 있다.

사전 요구사항

  • macOS: 12.3 Ventura 이상 (MPS 지원)
  • 하드웨어: Apple Silicon (M1 이상) — Intel Mac은 MPS 미지원, CPU로만 실행 가능
  • RAM: 최소 16GB 권장 (1024px 기준), 4K 생성 시 32GB 이상 권장
  • Python: 3.9 이상
  • 디스크 공간: 모델 다운로드에 약 20GB 여유 공간 필요 (T5 텍스트 인코더 + 트랜스포머 + VAE)

설치 방법 (diffusers)

1. 가상 환경 생성

1python3 -m venv pixart-env2source pixart-env/bin/activate

2. PyTorch 및 diffusers 설치

Apple Silicon에서 MPS를 사용하려면 PyTorch 2.0 이상이 필요하다.

1# PyTorch 설치 (MPS 지원 포함, macOS 기본)2pip install torch torchvision3 4# diffusers 및 필수 라이브러리 설치5pip install diffusers transformers accelerate6 7# 선택 사항: 캡션 정제 기능 사용 시8pip install beautifulsoup4 ftfy

최신 diffusers를 사용하려면 GitHub에서 직접 설치할 수 있다.

1pip install git+https://github.com/huggingface/diffusers

3. 설치 확인

1import torch2import diffusers3 4print(f"PyTorch 버전: {torch.__version__}")5print(f"MPS 사용 가능: {torch.backends.mps.is_available()}")6print(f"diffusers 버전: {diffusers.__version__}")

MPS 사용 가능: True가 출력되면 정상이다.

Apple Silicon MPS 설정

MPS 디바이스를 설정하는 기본 패턴은 다음과 같다.

1import torch2 3# MPS 사용 가능 여부 확인 후 디바이스 선택4if torch.backends.mps.is_available():5    device = "mps"6elif torch.cuda.is_available():7    device = "cuda"8else:9    device = "cpu"10 11print(f"사용 디바이스: {device}")

주의: MPS에서는 torch.float16 대신 torch.float32를 사용하는 것이 안정적이다. float16은 일부 연산에서 오류가 발생할 수 있다.

기본 이미지 생성

1import torch2from diffusers import PixArtSigmaPipeline3 4# 파이프라인 로드 (최초 실행 시 모델 자동 다운로드, 약 20GB)5pipe = PixArtSigmaPipeline.from_pretrained(6    "PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",7    torch_dtype=torch.float32,  # MPS에서는 float32 권장8)9pipe = pipe.to("mps")10 11# 이미지 생성12prompt = "A majestic mountain landscape at sunset, ultra detailed, 4K"13image = pipe(prompt).images[0]14 15# 저장16image.save("output.png")17print("이미지 저장 완료: output.png")

해상도 설정

PixArt-Σ는 다양한 해상도와 종횡비를 지원한다. use_resolution_binning=True(기본값)를 사용하면 요청한 해상도에 가장 가까운 최적 해상도로 자동 조정된다.

1# 정사각형 1024px2image = pipe(prompt, height=1024, width=1024).images[0]3 4# 세로형 (포트레이트)5image = pipe(prompt, height=1280, width=768).images[0]6 7# 가로형 (랜드스케이프)8image = pipe(prompt, height=768, width=1280).images[0]9 10# 2K 해상도 (RAM 여유 시)11image = pipe(prompt, height=2048, width=2048).images[0]

추론 단계(num_inference_steps)와 가이던스 스케일(guidance_scale)로 품질과 속도를 조절할 수 있다.

1image = pipe(2    prompt,3    height=1024,4    width=1024,5    num_inference_steps=20,   # 기본값 20, 높을수록 품질↑ 속도↓6    guidance_scale=4.5,        # 기본값 4.5, 높을수록 프롬프트 충실도↑7    negative_prompt="blurry, low quality, distorted",8).images[0]

메모리 최적화

Mac의 통합 메모리(Unified Memory)는 CPU와 GPU가 공유하므로 메모리 관리가 중요하다.

Attention Slicing (권장)

범용 메모리가 없는 환경에서 약 20% 성능 향상. 64GB 미만 Mac에서는 활성화를 권장한다.

1pipe.enable_attention_slicing()

CPU Offloading

메모리가 부족할 때 모델 일부를 CPU로 오프로드한다.

1pipe.enable_model_cpu_offload()2# pipe.to("mps") 대신 사용 — 자동으로 필요한 시점에 GPU로 이동

순차적 CPU Offloading (최소 메모리)

더 적극적인 오프로딩으로 메모리 사용량을 최소화한다.

1pipe.enable_sequential_cpu_offload()

16GB RAM 환경의 권장 설정

1import torch2from diffusers import PixArtSigmaPipeline3 4pipe = PixArtSigmaPipeline.from_pretrained(5    "PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",6    torch_dtype=torch.float32,7)8pipe.enable_attention_slicing()9pipe.enable_model_cpu_offload()10 11image = pipe(12    "A serene Japanese garden with cherry blossoms",13    height=1024,14    width=1024,15    num_inference_steps=20,16).images[0]17image.save("garden.png")

자주 발생하는 오류 해결

오류 1: MPS 디바이스에서 float16 관련 오류

RuntimeError: MPS does not support float16 for this operation

해결: torch_dtype=torch.float32로 변경한다.

1pipe = PixArtSigmaPipeline.from_pretrained(2    "PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",3    torch_dtype=torch.float32,  # float16 → float324)

오류 2: 메모리 부족 (OOM)

RuntimeError: MPS backend out of memory

해결: 다음을 순서대로 시도한다.

1# 1. Attention Slicing 활성화2pipe.enable_attention_slicing()3 4# 2. CPU Offloading 활성화5pipe.enable_model_cpu_offload()6 7# 3. 해상도 낮추기8image = pipe(prompt, height=512, width=512).images[0]9 10# 4. 파이썬 가비지 컬렉션 실행11import gc12gc.collect()13torch.mps.empty_cache()

오류 3: 모델 다운로드 실패

OSError: We couldn't connect to 'https://huggingface.co'

해결: HuggingFace 접속이 원활하지 않은 경우 미러를 사용하거나, 토큰 인증이 필요한지 확인한다.

1huggingface-cli login

오류 4: accelerate 관련 경고

UserWarning: `enable_model_cpu_offload` requires accelerate

해결:

1pip install accelerate

오류 5: T5 인코더 로드 속도 느림

T5 텍스트 인코더는 약 10GB로 크기가 크다. 최초 로드 시 시간이 걸리는 것은 정상이다. 반복 실행 시에는 캐시된 모델을 사용하므로 빠르게 로드된다. 모델 캐시 위치는 ~/.cache/huggingface/hub/이다.

참고 링크

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.