はちみつブログ

趣味や生活の話を好きなタイミングで書いていきたいと思います。

M2 MacBook AirでStable Diffusion Web UIを動かしてみた

まずは明けましておめでとうございます。定期読者などいない様なブログと思うので、特に2024年のまとめも、2025年の抱負もなしに進めようと思う。

仕事も関係しているが、最近のAI系の事情を勉強しようかと思っており、その中でもとっつきやすそうなものの奥も深そうに感じたStable Diffusionから始めてみようかと…

前回は適当なものをGoogle Colabで動作させることから始めたが、今回はローカルでStable Diffusion Web UIを動作させることを試してみたいと思う。Google Colabでもやってみたいものの、現状自分が無料版であり、無料版ではWeb UI実行(Stable Diffusionに限らずと思うが)が、規約違反に当たるとのこと。最新が実は違うのかもしれないが…

実行時に警告が出るらしいのだが、実行を試しているわけではないので自分で確認しているわけではない。日本語版の規約も読み直してみたものの…Web UI利用については理解しきれず…まあ、本論と違うので、これくらいで。

はじめに

Stable Diffusion自体は今更紹介する必要もないくらい有名だと思う。プロンプトから画像を生成するtxt2imgや、画像+プロンプトから画像を生成するimg2imgなどが有名(というかそのイメージが自分にある)。

その他の似たようなアプリケーションというか、サービスというかには、MidjourneyやDALL-Eがあるが、Stable Diffusionの特徴としては、オープンソースで開発されているということに尽きるかと思う。だからと言って品質が低いわけでもなく、使う側がある程度の潤沢な計算資源を持っていれば、かなり「任意な使い勝手」で利用可能という事だと思う。

「任意な使い勝手」の例としては、今回動かすAutomatic1111のStable Diffusion Web UIが最も有名なのではないかと思う。wikipediaのページも作られているし。まあ、英語だが。ちなみにAutomatic1111はオートマティックイレブンイレブンと読むらしい。

他に有名なバックエンドでStable Diffusionを利用可能なUIとしてはComfyUIがある。ComfyUIの方がメモリ利用効率などが良いという話もあるし、将来的には移行するかもしれないが、現状ネット上の情報としてはAutomatic1111 Stable Diffusion Web UI関連の方が多く、とりあえずStable Diffusion周りや画像生成全般、Diffusionモデル、内部で使っているらしいCLIP周りも勉強しつつComfyUIへ移行していったり、もはやPythonから直接使う、なども目指していけたら理想かな、と思っている。

以降は、上記の宣言をしつつ、調べれば出てくるMacでの実行方法をなぞってみて動きましたよ、くらいの正直どうって事ない内容ではある。

実行環境

M3が欲しかったが、節約も兼ねて整備済みを購入した笑

Pythonのバージョンなどは、次にインストールした手順で出てくるので一旦置いておく。

Stable Diffusion Web UIのインストール

Homebrewを使うので、未インストールの方は、公式ページのインストールコマンドをターミナルに入力して、インストールしてほしい。

gitはMacの場合、入っているはずなので、任意のディレクトリで git cloneする。

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

クローンしたディレクトリへ移動。

cd stable-diffusion-webui

Pythonのバージョンは 3.10.6が推奨されている。Stable Diffusion Web UIのGithubには、 3.10.xどれでもいけますよ感満載で書いてあるので最新などで試せば良かったかと若干後悔しているが、そこで詰まるのも悲しいので、他のインストール記事等で皆んな言っている 3.10.6を利用した。インストールされていなかったので、 pyenvでインストール。 pyenvでなくてもなんでも良く、バージョン切り替えできるものであれば良いと思う。

pyenv install 3.10.6

このディレクトリのみ適用したいので、以下を実行。

pyenv local 3.10.6

このあとは、シェルスクリプトを実行するだけではあり、その中で venvにより、仮想環境の venv/ディレクトリが作成されそうではあるのだが、少し心配だったので

python -m venv venv

で、事前にvenv/ディレクトリを作成した。あとは一応、仮想環境をアクティベート。

source venv/bin/activate

シェルスクリプトを実行。

./webui.sh

自分の場合、このコマンドで、Stable Diffusion 1.5のチェックポイントファイルである v1-5-pruned-emaonly.safetensorsがダウンロードされた。これが嫌な人は事前にチェックポイントファイルをダウンロードしておくと良いようだ。

「チェックポイント」ファイルについて、初めてStable Diffusion等を利用する人にとってはなんだろ?状態だと思うが、とりあえず学習済みモデルのファイルだと思っておけば、そこまでズレはないと思う。厳密には違う箇所もあるが、だいたい合っているとGemini 2.0 Flash Experimentalは語っていた笑 他の学習済みモデルもまあそうな気もするが、さらに学習させて良くする可能性のある、ある意味途中のチェックポイントにいる、パラメータ集だよ、ということかと自分は理解したが違ったらごめんなさい。

基本的にこんな感じで自動起動すると思う。画像はシークレッドタブで開き直しているが。

試しに a dogで生成してみる。画像の通り、27秒程度かかった。

出力画像

ちなみにPyTorchを呼んでいそうな箇所に print(torch.backends.mps.is_available())を入れてみたところ、 Trueと出てきたので、mpsは利用しているようだ。

とりあえず今回はここまで。

まとめ

今回は画像生成関係で大変有名な、Automatic1111 の Stable Diffusion Web UI を動かしてみた。今更感はあるが。

今後やってみたいこととして、はじめにも書いたがComfyUIに挑戦してみたり、そのバックエンドとしてStable Diffusion以外の画像生成や動画生成も試してみたいなと思っている。先にPyTorch周りやDiffusionモデル、CLIPも理解したいかな…いろいろやりたいことが広がりそうで面白い。