snow · 2026.5.18 00:00 · 조회 3
PixArt-Σ 설치 및 사용 가이드 (Mac)
개요
이 가이드는 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/activate2. 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/diffusers3. 설치 확인
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/이다.
참고 링크
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.