Diffusers documentation

Apple Silicon (M1/M2)에서 Stable Diffusion을 사용하는 방법

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.27.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Apple Silicon (M1/M2)에서 Stable Diffusion을 사용하는 방법

Diffusers는 Stable Diffusion 추론을 위해 PyTorch mps를 사용해 Apple 실리콘과 호환됩니다. 다음은 Stable Diffusion이 있는 M1 또는 M2 컴퓨터를 사용하기 위해 따라야 하는 단계입니다.

요구 사항

  • Apple silicon (M1/M2) 하드웨어의 Mac 컴퓨터.
  • macOS 12.6 또는 이후 (13.0 또는 이후 추천).
  • Python arm64 버전
  • PyTorch 2.0(추천) 또는 1.13(mps를 지원하는 최소 버전). Yhttps://pytorch.org/get-started/locally/의 지침에 따라 pip 또는 conda로 설치할 수 있습니다.

추론 파이프라인

아래 코도는 익숙한 to() 인터페이스를 사용하여 mps 백엔드로 Stable Diffusion 파이프라인을 M1 또는 M2 장치로 이동하는 방법을 보여줍니다.

PyTorch 1.13을 사용 중일 때 추가 일회성 전달을 사용하여 파이프라인을 “프라이밍”하는 것을 추천합니다. 이것은 발견한 이상한 문제에 대한 임시 해결 방법입니다. 첫 번째 추론 전달은 후속 전달와 약간 다른 결과를 생성합니다. 이 전달은 한 번만 수행하면 되며 추론 단계를 한 번만 사용하고 결과를 폐기해도 됩니다.

이전 팁에서 설명한 것들을 포함한 여러 문제를 해결하므로 PyTorch 2 이상을 사용하는 것이 좋습니다.

# `huggingface-cli login`에 로그인되어 있음을 확인
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipe = pipe.to("mps")

# 컴퓨터가 64GB 이하의 RAM 램일 때 추천
pipe.enable_attention_slicing()

prompt = "a photo of an astronaut riding a horse on mars"

# 처음 "워밍업" 전달 (위 설명을 보세요)
_ = pipe(prompt, num_inference_steps=1)

# 결과는 워밍업 전달 후의 CPU 장치의 결과와 일치합니다.
image = pipe(prompt).images[0]

성능 추천

M1/M2 성능은 메모리 압력에 매우 민감합니다. 시스템은 필요한 경우 자동으로 스왑되지만 스왑할 때 성능이 크게 저하됩니다.

특히 컴퓨터의 시스템 RAM이 64GB 미만이거나 512 × 512픽셀보다 큰 비표준 해상도에서 이미지를 생성하는 경우, 추론 중에 메모리 압력을 줄이고 스와핑을 방지하기 위해 어텐션 슬라이싱을 사용하는 것이 좋습니다. 어텐션 슬라이싱은 비용이 많이 드는 어텐션 작업을 한 번에 모두 수행하는 대신 여러 단계로 수행합니다. 일반적으로 범용 메모리가 없는 컴퓨터에서 ~20%의 성능 영향을 미치지만 64GB 이상이 아닌 경우 대부분의 Apple Silicon 컴퓨터에서 더 나은 성능이 관찰되었습니다.

pipeline.enable_attention_slicing()

Known Issues

< > Update on GitHub