今流行りの Stable Diffusion にちょっと興味があって動かしてみました。
とは言っても、ごつい GPU も持っていませんし、普段使いの PC に動作に必要な Python 環境をインストールして…とかはしたくなかったのですが、Stable Diffusion web UI が docker で動かせて、GPU もいらないというので…
ならそれ docker で! w
参考にさせていただいたのは、こちらの記事。
DockerでStable Diffusion(WebGUI)を動かす方法要は、GitHub で AbdBarho さんが公開してくれているありがたいリポジトリから、まるごと拝借。普段こういうことはあまりやらないのですが、お試しですから ^^;A
cd && git clone https://github.com/AbdBarho/stable-diffusion-webui-docker
cd ~/stable-diffusion-webui-docker
docker compose --profile download up --build
ビルドにはイメージの構築以外にも、モデルなどいろいろダウンロードしてくるので、環境にもよりますが、結構時間がかかりますし、ダウンロードがタイムアウトで失敗するときもあります。
その場合は、エラーコード 0 が返ってくるまで
docker compose --profile download up --build
を何度もリトライ!ビルドができれば、あとは…
docker compose --profile auto-cpu up --build
として、イメージを起動し、http://localhost:7860/ にブラウザでアクセスすれば、GPU なし、CPU だけで Stable Diffusion web UI をお試し…できない orz
そもそもにして…
docker イメージを起動するコマンドを見てもらっても、docker プラグインの compose で起動しているので、かなり新しいバージョンの docker 向けの compose ファイルです。
少なくとも Ubuntu 22.04 LTS の標準リポジトリにある docker (v20.10) で、docker-compose コマンドで起動しようとしても、エラーを吐きます。
そこで Windows の docker desktop を使って動かそうとしたのですが、これがイメージの起動時にエラーを吐いて、Exit してしまう。お試しするだけで、そんなにパワーをかけたくなかったのですが、せっかく、1 時間近くかけてイメージを作ったこともあり、ちょっと力を入れて検索してみたところ…要はメモリー不足だったようです。
メモリーを 16GB も積んでいるデスクトップでなんでやねん!と思ったのですが、Windows Subsystem for Linux(WSL) のデフォルトでは、ホスト OS の半分までしかメモリを使わないようになっているようです。かつまたスワップレスであるようです。
そこで、スワップを設定して、もっと大きなメモリ領域を WSL で使えるようにします。
C:\Users\[ユーザー名]\ 以下に .wslconfig ファイルを作成し、ここに以下のように記述します。
[wsl2]
memory=8GB
swap=16GB
もちろん、スワップを設定してますので、実メモリ領域とプラスして、もっと大きいメモリを設定すれば、多少なりとも動作は速くなると思いますが、ひとまずこれで無事、docker イメージは起動しました。
お試しには十分かと思います。これで半日、遊び倒してできた画像がこれ w
時間ができたら、好みをてんこ盛りのこのサイトのイメージガールでも作ってみようと思います ww
【追記】 2022/5/22
Stable Diffusion web UI は、アップデートの頻度が低くはないので、docker で動作する環境をアップデートする場合は、以下で OK
cd ~/stable-diffusion-webui-docker
git pull
docker compose --profile download up --build
Mac で Stable Diffusion!
Apple シリコン搭載(でなくともいけるらしいが…) Mac なら Draw Things を使うのがお手軽超簡単。なんせ AppStore からインストールするだけ! (^^)b
上記くらいの画像ならこれでできます…
Draw Things: AI-assisted Image Generationが、なにせ、とにかくモデルデータが数 GB クラス、それも一つ、二つでは同じような絵しか作れないので、Apple シリコンのおかげで GPU なしでもそこそこ早くても、256GB ぽっちの SSD しか詰んでいない M2 MacBook Air では、お遊び以上のことはしない方が良さそう。
Photoshop とかを組み合わせて本格的に触るなら、やはり NVIDIA 製の GPU と潤沢なストレージがあった方が良さそうです。