技術的なことをすっとばして、MacBookでさくっとStable Diffusionを試したいときには、以下のアプリが非常に簡単です。
$ git --version
git version 2.37.3
$ brew install rust
$ cargo --version
cargo 1.63.0 (fd9c4297c 2022-07-01)
$ brew install pyenv
$ pyenv --version
pyenv 2.3.3
$ pyenv install --list | grep anaconda
...
anaconda3-2022.05
$ pyenv install anaconda3-2022.05
$ pyenv global anaconda3-2022.05
$ conda init bash
# ~/.bash_profile にいろいろ書かれるので、ターミナルをいったん閉じて開き直す。
$ conda -V
conda 4.13.0
$ python --version
Python 3.9.12
# HuggingFaceでユーザ登録してから sd-v1-4.ckpt をダウンロードする。4GBある。
# ダウンロードした場所を仮に YOUR-DOWNLOAD とする
# https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
$ git clone https://github.com/magnusviri/stable-diffusion.git
$ cd stable-diffusion
$ git branch -r # リモートブランチにorigin/apple-mps-supportがあることを確認
$ git checkout -b apple-mps-support origin/apple-mps-support
$ conda env create -f environment-mac.yaml
$ mkdir ./models/ldm/stable-diffusion-v1/
$ mv ~/YOUR-DOWNLOAD/sd-v1-4.ckpt ./models/ldm/stable-diffusion-v1/model.ckpt
# ↑これはシンボリックリンクでもいい
$ vi README-Mac-MPS.md
# 説明を読む
$ conda activate ldm
$ python scripts/preload_models.py
$ python scripts/dream.py --full_precision
$ python ./scripts/dream.py
dream> ashley judd riding a camel -n2 -s150
dream> q
$ ls outputs/img-samples/*.png
outputs/img-samples/000001.132231844.png outputs/img-samples/000001.284871190.png
$ open outputs/img-samples/*.png
ImportError: cannot import name 'TypeAlias' from 'typing'
というエラーが出たので
stable-diffusion/src/k-diffusion/k_diffusion/sampling.py
をちょっと修正しました。
from typing import Optional, Callable, TypeAlias
from . import utils
TensorOperator: TypeAlias = Callable[[Tensor], Tensor]
from typing import Optional, Callable
from . import utils
TensorOperator = Callable[[Tensor], Tensor]
$ python scripts/dream.py --web
$ open http://localhost:9090