DockerでStable Diffusion(WebGUI)を動かす方法
Stable DiffusionをDockerで動かす
書こうと思ったら、npakaさんがすでに書かれていました。
なので、あんまり書く必要ないのですが、環境が異なったので一応メモ的に残しておきます。npakaさんの記事を補完するような位置づけで読んでいただけたら幸いです。
使用しているPCのスペックは以下です。
項目 | 内容 |
---|---|
CPU | Intel Core i 7 |
メモリ | 32GB |
GPU | NVIDIA RTX3060(12GB) |
ストレージ | SSD x 2 |
OSは以下です。同じPCでブートを切り替えています。
- Windows11 + WSL2(CPU)
- Linux(GPU)
Windowsの方は、GPUだとエラーが出て動きませんでした。理由は深く調査していません。npakaさんの記事を参考にしたほうが良いかもしれません。
OS/Dockerセットアップ
OSやWSL2、Dockerのセットアップに関しては以下記事参考にしてください。
Dockerのセットアップに関しては、複数のDockerコンテナを扱うためにDocker Composeもインストールする必要があります。また、GPUを使う場合は、NVIDIA Dockerのセットアップが必要になります。
詳しくは以下記事参照ください。
CPUで最短でセットアップしたいなら、ターミナルで以下コマンドをうてばDockerのセットアップできると思います。
$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-docker.sh | /bin/bash
CUDAを使いたい場合はNVIDIA Dockerを以下コマンドでインストールしましょう。
$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-nvidia-docker.sh | /bin/bash
インストール終わったら、一度再起動してください。
dockerが起動していないとエラーが出たら、以下実行してdockerを再起動してみましょう。
$ sudo service docker restart
Stable Diffusion(UI)の使い方
準備が終わったらStable Diffusionを使います。ここからの操作はWindows(WSL2)でもLinuxでも共通です。以下のリポジトリを参照しましょう。
以下コマンドで、必要なソフトやAIモデルのダウンロードが行えます。以下は1回だけ実施すればOKです。
$ cd && git clone https://github.com/AbdBarho/stable-diffusion-webui-docker
$ cd ~/stable-diffusion-webui-docker
$ docker compose --profile download up --build
CPU版起動方法
続いて、Stable Diffusion(WebUI)を起動します。以下CPUバージョンです。初回は時間かかりますが、2回目から起動速いです。
$ cd ~/stable-diffusion-webui-docker
$ docker compose --profile auto-cpu up --build
ブラウザで以下アドレスにアクセスすると、WebUIでStable Diffusionで画像生成ができます。
末尾に ?__theme=dark
を追加するとダークモードになります。ダークモードを使いたい人は、以下アドレスにアクセスして試してみてください。
使い方は冒頭のnpakaさんの記事を参考にしましょう。
GPUバージョン
GPUバージョンは以下です。私の環境ではLinuxでしか動かせませんでした。 WindowsでもNVIDIA Dockerを入れたら動きました。
$ cd ~/stable-diffusion-webui-docker
$ docker compose --profile auto up --build
使い方はCPUバージョンと同じです。
GPUだとかなりの速度で画像生成ができました。
その他のUIバリエーション
以下のようなバリエーションのUIもあります。好みに合わせて使ってみると良いかもしれません。
$ docker compose --profile hlky up --build
$ docker compose --profile lstein up --build
ソフトのアップデート
以下要領でアップデートできると思います。--profile
の後は、使いたいものに合わせて変更してください。
$ cd ~/stable-diffusion-webui-docker
$ git pull
$ docker compose --profile auto build --no-cache
ちなみに以下のように、数日単位で機能やGUIが変わっていきます。
waifu-diffusionモデルなどを使う
追記:Automatic1111なら、モデルファイルをダウンロードして、Stable Diffusionと同じ場所においておけば、モデルを切り替えたりマージできるようになっていました。以下は、あんまり必要ないですが、情報として残しておきます。
モデルのダウンロード先や読み込み先を変えることで対応できました。forkしてブランチ作ったので、以下をcloneしてもらえれば使えます。
$ cd && git clone https://github.com/karaage0703/stable-diffusion-webui-docker
以下コマンドでwaifu-diffusionモデルも含めてダウンロードできます。
$ cd ~/stable-diffusion-webui-docker
$ docker compose --profile download up --build
以下のコマンドを実行することで、waifuモデルを使うことができます。GPUのみです。
$ cd ~/stable-diffusion-webui-docker
$ docker compose --profile auto-waifu up --build
ローカルネットワークの他PCからのアクセス
デフォルトで、同一ネットワークの他のPCからアクセス可能です。ブラウザからホストPCのホスト名(IPアドレス)でアクセスできました。
詳細は以下記事参照ください。色々工夫すればインターネット越しのアクセスも可能です。
API機能
ブラウザ外からStable Diffusionを操作することが可能なAPI機能があります。--api
オプションをつけて起動することでAPI機能が有効になります。この記事の通り動かせばデフォルトでAPI機能は有効になっています。
Pythonからsdwebuiapiで使用することが可能です。詳細は以下記事参照ください。
メモリ量
最低でも10GB程度は必要なようです。8GBメモリのLinuxマシンで試したところexited with code 137
となって起動しませんでした。
メモリは10GB以上あるけれど、WSL2環境で起動しない場合は、以下対策が効果あるかもしれません。
まとめ
ローカルでDockerを使ってStable Diffusion(UI)を動かす方法をまとめました。
やはりローカルで手軽に動かせると便利ですね。
このリポジトリを参考に自分で改造すれば、様々なUIやAIモデルを使った自分だけのStable Diffusion環境を構築することもできそうです。
参考リンク
stable-diffusion-webui-feature-showcase
関連記事
変更履歴
- 2023/06/11 API機能に関して追記
- 2022/09/25 waifu-diffusionモデルの使用を改良
Discussion