M1/2MacでStableDiffusion環境を作成し試してみる。

今更感はありますが、StableDiffusionはてっきりWindowsでしか使えないと思っていたもののMacでも使えると知り、試してみました。以下手順です。
homebrewはインストール済みの前提で進めます。

Pythonのインストール

macの場合、OSバージョンによってはPythonが存在しなかったり、古かったりする様です。なので、一旦Pythonをインストールしましょう。

※最終的に最新版では動作できませんでした。

各機能が必要とするバージョンを考慮する必要があります。

まず、stable-diffusionが動作するためにはpytorchのバージョンが動作対象のものである必要があります。そしてpytorchの指定バージョンが動作するためにはpythonのバージョンにも依存します。公式が依存関係も考慮したpythonのバージョンを教えてくれているのでこちらを一旦みてください。

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon

brew install cmake protobuf rust python@3.10 git wget

上記が完了されるとインストールはされますが、環境変数にパスを追加しないとpythonコマンドが使えません。finderにてユーザフォルダ直下の隠しファイルである、.zshrcを開いてください。隠しファイルは[Cmd]+[shift]+[.]で表示されます。

インストールを行ったコンソールにて以下の記述が存在しますので見つけてください。
※ネットの情報とはパスが違う可能性があるので、必ずコンソール画面から確認してください!

Unversioned and major-versioned symlinks `python`, `python3`, `python-config`, `python3-config`, `pip`, `pip3`, etc. pointing to
`python3.10`, `python3.10-config`, `pip3.10` etc., respectively, have been installed into
  /opt/homebrew/opt/python@3.10/libexec/bin

この中の「install into」の後が実際にインストールされたパスなので、これを.zshrcに追加します。既存のパスが存在する場合は「:」で区切ることで追記できます。
以下はflutterとpythonのパスが通っている場合です。

export PATH="/Users/hogehoge/development/flutter/bin:/opt/homebrew/opt/python@3.10/libexec/bin:$PATH"

ターミナルを再起動し、下記コマンドを実行してpythonが動作するか確認してください。

python --version

stable-diffusion-webuiを展開する

gitがインストールされている前提です。

finderにて展開先となるフォルダを作成しておきます。作成したフォルダの直下にstable-diffusion-webuiのルートフォルダが作成されるイメージです。

コンソールで先ほど作成したフォルダへ移動し、

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

を実行。ファイルがダウンロードされます。gitがない場合は上記URLにブラウザからアクセスし、[code]を選択するとzipでダウンロードできるのでそれでも良いかもしれません。

次にモデルをダウンロードする必要があります。とりあえず次のURLから拡張子ckptのファイルをダウンロード。

https://huggingface.co/naclbit/trinart_stable_diffusion_v2/tree/main

複数ありますがとりあえず数字が大きいものを選んでください。
ダウンロードが完了したら以下のパスへ移動させてください。

stable-diffusion-webui/models/Stable-diffusion/

実行

コンソールでstable-diffusion-webuiが展開されたパスまで移動し、下記のコマンドを実行。

./webui.sh

ここでtorchのバージョンに関するエラーが出てエラー終了する場合は、対応するpytorchをインストールする必要があります。既にインストールされているpythonを使っている場合は発生する可能性あり。

コンソールが以下まで進むとサーバが起動している状態です。

URLのところをブラウザにコピペしてアクセスしてください。

すると以下の様な画面が表示されます。試しにシンプルな呪文で生成してみましょう。

できました!

まとめ

pythonはほぼ未経験なのですが、なんとか環境準備も実行もできました。AI絵師は賛否両論ありますが、自分みたいな低予算個人開発者にとってはかなり夢が広がる技術です。人並みに使える様にはなりたいなと思います。