2022-09-03   image   stablediffusion   ai 

M1 MacBook ProでStable-Diffusionを動かしたメモ(追記あり)

追記(2022-09-24)

技術的なことをすっとばして、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]

Webサーバ

$ python scripts/dream.py --web
$ open http://localhost:9090
 2022-09-03   image   stablediffusion   ai