Apple Silicon 上の Stable Diffusion Core ML – 実行方法と最適化

TL;DR

Hugging Face は、Apple Silicon 上でローカルに実行できる Stable Diffusion の Core ML バージョン(v1.4、v1.5、v2‑base、v2.1‑base)を公開し、Python と Swift の推論スクリプトと、すぐに使える Mac App Store アプリを提供しました。


利用可能な Core ML チェックポイント

  • Stable Diffusion v1.4apple/coreml-stable-diffusion-v1-4 に変換されたモデル。
  • Stable Diffusion v1.5apple/coreml-stable-diffusion-v1-5 に変換されたモデル。
  • Stable Diffusion v2 baseapple/coreml-stable-diffusion-2-base に変換されたモデル。
  • Stable Diffusion v2.1 baseapple/coreml-stable-diffusion-2-1-base に変換されたモデル。

すべてのチェックポイントは Hugging Face Hub にホストされており、CPU、GPU、または Apple Neural Engine (NE) を使用して任意の Apple Silicon デバイスで実行できます。ハードウェアや言語固有の要件に合わせて、注意機構の実装やパッケージングなど、さまざまなバリエーションが提供されています。


パフォーマンスバリアントと推奨事項

  • Attention implementationsoriginal(CPU/GPU のみ、場合によっては高速) と split_einsum(CPU、GPU、NE に対応)。デバイスの能力に応じて選択してください。
  • Packaging – Python 推論用は packages、Swift 用は compiled(大きな UNet を複数の .mlmodelc ファイルに分割し、iOS/iPadOS での互換性を確保)。
  • Best‑case benchmark – 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 オプション: ALLCPU_AND_GPUCPU_ONLYCPU_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 の値: allcpuOnlycpuAndGPUcpuAndNeuralEngine
  • コンパイル済みモデルはアプリ起動時のロードが速く、以降の生成で若干低いレイテンシーを実現します。

カスタムモデルの変換(Bring‑Your‑Own‑Model)

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 体験への道を開きます.

Sources