Apple Silicon에서 Stable Diffusion Core ML – 실행 및 최적화 방법
TL;DR
Hugging Face는 Apple Silicon에서 로컬로 실행되는 Stable Diffusion (v1.4, v1.5, v2‑base, v2.1‑base)의 Core ML 버전을 공개했으며, Python 및 Swift 추론 스크립트와 바로 사용할 수 있는 Mac App Store 앱을 제공했습니다.
사용 가능한 Core ML 체크포인트
- Stable Diffusion v1.4 –
apple/coreml-stable-diffusion-v1-4에 변환된 모델. - Stable Diffusion v1.5 –
apple/coreml-stable-diffusion-v1-5에 변환된 모델. - Stable Diffusion v2 base –
apple/coreml-stable-diffusion-2-base에 변환된 모델. - Stable Diffusion v2.1 base –
apple/coreml-stable-diffusion-2-1-base에 변환된 모델.
모든 체크포인트는 Hugging Face Hub에 호스팅되어 있으며, CPU, GPU 또는 Apple Neural Engine(NE)를 사용하는 모든 Apple Silicon 기기에서 실행할 수 있습니다. 하드웨어 및 언어별 요구에 맞게 다양한 변형(어텐션 구현 및 패키징)이 제공됩니다.
성능 변형 및 권장 사항
- Attention 구현 –
original(CPU/GPU 전용, 때때로 더 빠름)와split_einsum(CPU, GPU, NE와 호환). 장치 성능에 따라 선택하세요. - 패키징 – Python 추론용
packages; Swift용compiled(대형 UNet을 여러.mlmodelc파일로 분할하여 iOS/iPadOS와 호환). - 최상의 벤치마크 – macOS Ventura 13.1 Beta 4가 설치된 MacBook Pro (M1 Max, GPU 코어 32개, RAM 64 GB)에서
original어텐션과 모든 연산 유닛을 사용하면 Stable Diffusion v1.4가 이미지를 18초에 생성합니다.
⚠️ Note macOS Ventura 13.1은 이러한 모델에 필요한 Core ML 개선 사항을 도입했으며, 이전 macOS 버전에서는 검은 이미지가 나오거나 실행 속도가 느릴 수 있습니다.
Python 추론 워크플로우
사전 요구 사항
pip install huggingface_hub
pip install git+https://github.com/apple/ml-stable-diffusion
체크포인트 다운로드
from huggingface_hub import snapshot_download
from pathlib import Path
repo_id = "apple/coreml-stable-diffusion-v1-4"
variant = "original/packages"
model_path = Path("./models") / (repo_id.split('/')[-1] + "_" + variant.replace('/', '_'))
snapshot_download(repo_id, allow_patterns=f"{variant}/*", local_dir=model_path, local_dir_use_symlinks=False)
print(f"Model downloaded at {model_path}")
추론 실행
python -m python_coreml_stable_diffusion.pipeline \
--prompt "a photo of an astronaut riding a horse on mars" \
-i models/coreml-stable-diffusion-v1-4_original_packages \
-o ./output.png \
--compute-unit ALL \
--seed 93
--compute-unit옵션:ALL,CPU_AND_GPU,CPU_ONLY,CPU_AND_NE.- 다른 체크포인트를 사용하려면
--model-version <hub-id>를 추가하세요(예:runwayml/stable-diffusion-v1-5).
Swift 추론 워크플로우
컴파일된 체크포인트 다운로드
from huggingface_hub import snapshot_download
from pathlib import Path
repo_id = "apple/coreml-stable-diffusion-v1-4"
variant = "original/compiled"
model_path = Path("./models") / (repo_id.split('/')[-1] + "_" + variant.replace('/', '_'))
snapshot_download(repo_id, allow_patterns=f"{variant}/*", local_dir=model_path, local_dir_use_symlinks=False)
print(f"Model downloaded at {model_path}")
추론 실행
git clone https://github.com/apple/ml-stable-diffusion
cd ml-stable-diffusion
swift run StableDiffusionSample \
--resource-path models/coreml-stable-diffusion-v1-4_original_compiled \
--compute-units all \
"a photo of an astronaut riding a horse on mars"
--compute-units값:all,cpuOnly,cpuAndGPU,cpuAndNeuralEngine.- 컴파일된 모델은 앱 시작 시 더 빠르게 로드되어 이후 이미지 생성 시 약간 낮은 지연 시간을 제공합니다.
커스텀 모델 변환 (Bring‑Your‑Own‑Model)
Fine‑tuned하거나 다른 방식으로 커스텀한 Stable Diffusion 모델(예: DreamBooth, Textual Inversion)이 있다면 Apple의 변환 스크립트를 직접 실행해야 합니다. Apple 저장소의 공식 안내를 따르세요: https://github.com/apple/ml-stable-diffusion#converting-models-to-coreml.
다음 단계 및 커뮤니티 기회
- 이미지 생성을 완전히 온‑디바이스에서 수행하는 macOS, iPhone, iPad 네이티브 애플리케이션을 구축합니다.
- Swift에서 추가 스케줄러를 통합하여 샘플링 속도를 높입니다.
- 파이프라인을 다른 생성 작업(예: 인페인팅, 업스케일링)으로 확장합니다.
- 양자화 및 기타 최적화를 탐색하여 지연 시간과 메모리 사용량을 더욱 줄입니다.
배포된 Core ML 체크포인트와 도구는 개발자가 Apple Silicon에서 Stable Diffusion을 활용하는 장벽을 낮추어, 프라이버시를 보호하고 오프라인에서 작동하는 생성 AI 경험을 가능하게 합니다.