🤗

新しいM1 macでStable Diffusion

2022/11/22に公開

CUDAでないと動かないのかと思ったら、別のブランチでM1対応をしているらしい。
という訳でこちらに従ってダウンロードを行う。

https://github.com/bfirsh/stable-diffusion/tree/apple-silicon-mps-support

git clone https://github.com/magnusviri/stable-diffusion.git
cd stable-diffusion
git checkout apple-silicon-mps-support

mkdir -p models/ldm/stable-diffusion-v1/

もしこの辺りが入っていなければ、システム上にインストールしておく。

brew install cmake
brew install rust

適宜Anaconda環境を作成し、必要なレポジトリを導入。

conda env create -f environment-mac.yaml
conda activate ldm

モデルファイルはHugging faceから手動でダウンロードする。今回はv1-4をチョイス。

https://huggingface.co/CompVis/stable-diffusion-v1-4?text=A+pikachu+fine+dining+with+a+view+to+the+Eiffel+Tower

シンボリックリンクを貼るか、以下の名前に変更するかする。

models/ldm/stable-diffusion-v1/model.ckpt

あとはSAMPLEスクリプトを動かしてみる。

しかしここで"The operator 'aten::index.Tensor' is not current implemented for the MPS device"という悲しいエラーが出たので、環境変数を追加。動かない場合にはCPUを使うモードにFallback可能にする。

export PYTORCH_ENABLE_MPS_FALLBACK=1

無事ハワイの赤い海が出力されました。

python scripts/txt2img.py --prompt "red ocean in Hawaii" --n_samples=1 --n_iter=1

Discussion