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.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 implementations –
original(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オプション: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)
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 体験への道を開きます.