🖼️

DockerでStable Diffusion(WebGUI)を動かす方法

2022/09/18に公開

Stable DiffusionをDockerで動かす

書こうと思ったら、npakaさんがすでに書かれていました。

https://note.com/npaka/n/nc8b0e9a91d97

なので、あんまり書く必要ないのですが、環境が異なったので一応メモ的に残しておきます。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のセットアップに関しては以下記事参考にしてください。

https://zenn.dev/karaage0703/articles/211d89cc0a29a1

https://zenn.dev/karaage0703/articles/e5c0943a3ad2db

Dockerのセットアップに関しては、複数のDockerコンテナを扱うためにDocker Composeもインストールする必要があります。また、GPUを使う場合は、NVIDIA Dockerのセットアップが必要になります。

詳しくは以下記事参照ください。
https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa

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でも共通です。以下のリポジトリを参照しましょう。

https://github.com/AbdBarho/stable-diffusion-webui-docker

以下コマンドで、必要なソフトや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で画像生成ができます。

http://localhost:7860/

末尾に ?__theme=darkを追加するとダークモードになります。ダークモードを使いたい人は、以下アドレスにアクセスして試してみてください。

http://localhost:7860/?__theme=dark

使い方は冒頭のnpakaさんの記事を参考にしましょう。

GPUバージョン

GPUバージョンは以下です。私の環境ではLinuxでしか動かせませんでした。 WindowsでもNVIDIA Dockerを入れたら動きました。

$ cd ~/stable-diffusion-webui-docker
$ docker compose --profile auto up --build

使い方はCPUバージョンと同じです。

GPUだとかなりの速度で画像生成ができました。

https://twitter.com/karaage0703/status/1571318380057202688

その他の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アドレス)でアクセスできました。

詳細は以下記事参照ください。色々工夫すればインターネット越しのアクセスも可能です。

https://karaage.hatenadiary.jp/entry/2022/10/17/073000

API機能

ブラウザ外からStable Diffusionを操作することが可能なAPI機能があります。--apiオプションをつけて起動することでAPI機能が有効になります。この記事の通り動かせばデフォルトでAPI機能は有効になっています。

Pythonからsdwebuiapiで使用することが可能です。詳細は以下記事参照ください。

https://knowledge.sakura.ad.jp/35226/

メモリ量

最低でも10GB程度は必要なようです。8GBメモリのLinuxマシンで試したところexited with code 137となって起動しませんでした。

メモリは10GB以上あるけれど、WSL2環境で起動しない場合は、以下対策が効果あるかもしれません。

https://zenn.dev/suzuki5080/articles/1438d52377b9df

まとめ

ローカルでDockerを使ってStable Diffusion(UI)を動かす方法をまとめました。

やはりローカルで手軽に動かせると便利ですね。
このリポジトリを参考に自分で改造すれば、様々なUIやAIモデルを使った自分だけのStable Diffusion環境を構築することもできそうです。

参考リンク

stable-diffusion-webui-feature-showcase

https://pocketstudio.net/2023/05/03/how-to-easily-use-stable-diffusion-with-docker-desktop/

https://pc.watch.impress.co.jp/docs/column/nishikawa/1547611.html

関連記事

https://zenn.dev/karaage0703/articles/4901bf68536907

https://zenn.dev/karaage0703/articles/2866e23dd4fcd1

変更履歴

  • 2023/06/11 API機能に関して追記
  • 2022/09/25 waifu-diffusionモデルの使用を改良

Discussion