🤖

[Stable-Diffusion] 2022 M2 Macbook Air (mem24GB) で試す(2022/8/30版)

2022/08/30に公開

(恐らく初 zenn にチャレンジ)
今流行の Stable-Diffusion を手元の 2022 M2 Macbook Air (mem24GB) で試してみたのでメモ。
学習モデルはsd-v1-4.ckptを使用して、下記のコマンドで1枚できるのに約2分程度かかってました。

$ python scripts/txt2img.py --prompt "a photograph of an cat into a bottle" --plms

参考リンク

git も rust もインストール

rust は既に nft 周りで入れていました。

$ brew install git rust

pyenv, anaconda を使っての python 環境の構築

macbook air にしてから anyvenv を使用してます。
anyenv を使って pyenv をインストールしています。
そこに anaconda をインストールします。

最新を確認する。

$ pyenv install --list

anaconda3-2022.05 をインストールします。

$ pyenv install anaconda3-2022.05

anaconda を環境に設定します。

$ pyenv global anaconda3-2022.05
$ conda -V
  conda 4.14.0

anaconda の環境を設定します(zsh を使用しているなら)。

$ conda init zsh
$ source ~/.zshrc
$ conda install -c conda-forge onnx

stable-diffusion をクローン

コードを取得して apple-silicon-mps-support ブランチを使用します。

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

stable-diffusion の環境を構築

ディレクトリ内の environment-mac.yaml を使って環境を構築します。

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

ここまで順調に行きつつも、この辺で下記のエラーになりました。

× python setup.py egg_info did not run successfully.
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [7 lines of output]
      fatal: not a git repository (or any of the parent directories): .git
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/gb/8q4_4fyn7lq14tw0hh3dn2q00000gn/T/pip-install-u49hwp3q/onnx_d81b27368e554e9086ba74ae8b23edd3/setup.py", line 81, in <module>
          assert CMAKE, "Could not find cmake executable!"
      AssertionError: Could not find cmake executable!
      [end of output]

いろいろ調べて pip, setuptools アップデートするもエラーは変わらず・・・。

$ conda update pip setuptools

結果、cmake をインストールすることで解決しました(入ってなかったんかーい)。

$ brew install cmake

エラーで途中までしか作成されていない環境を一度削除して、再度環境を構築します。

$ conda env remove -n ldm
$ conda env create -f environment-mac.yaml

今度は無事に通るので activate します。

$ conda activate ldm

ダウンロードした学習モデル(sd-v1-4.ckpt)を配置

huggingface でユーザー作成後、sd-v1-4.ckpt をダウンロードします。

$ mkdir ./models/ldm/stable-diffusion-v1/
$ mv ~/Downloads/sd-v1-4.ckpt ./models/ldm/stable-diffusion-v1/model.ckpt

実行!

下記コマンドで冒頭の写真とかが生成されます。

$ python scripts/txt2img.py --prompt "a photograph of an cat into a bottle" --plms

遊びがてらに色々と試すも、指定する文章を作るのが一番難しいかもですねw

$ python scripts/txt2img.py --prompt "man and woman riding a tricycle" --plms

てと指定したら、下記のが生成されましたww

以上です。
みんなでエンジョイしましょう!

誰かの助けになれば幸いです。

Discussion