ローカル環境で画像生成AIを使いたかったので、docker を使って Stable Diffusion web UI を動かしてみました。
環境
- Ubuntu 20.04
- docker 24.0.7
手順
Stable Diffusion web UI のリポジトリは以下になります。
Docker 版のリポジトリは以下です。
まずはクローンしてきます。
$ git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
あとは基本的に Setup に記載されている通りにすすめるだけです。
$ cd stable-diffusion-webui-docker
$ docker compose --profile download up --build
$ docker compose --profile auto up --build
しかし、私の場合、docker compose --profile auto up --build
を実行したときにいくつかエラーが発生しました。
最初に発生したエラーは以下です。
@workspace Step 12/28 : RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y fonts-dejavu-core rsync git jq moreutils aria2 ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev build-essential
the --mount option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled
ERROR: Service 'auto' failed to build : Build failed
生成AIに聞いてみた結果、どうやら buildx を手動でインストールする必要があるみたいでした。
まずバイナリをダウンロードします:
curl -SL https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
ダウンロードしたファイルに実行権限を付与します:
chmod a+x ~/.docker/cli-plugins/docker-buildx
Docker Buildx が正しくインストールされたことを確認します:
docker buildx version
これで docker buildx
コマンドが利用できるようになります。
再度 docker-compose --profile auto up --build
を実行したところ、今度は以下のエラーが発生しました。
auto-cpu_1 | Installing extension dependencies (if any)
auto-cpu_1 | Traceback (most recent call last):
auto-cpu_1 | File "/stable-diffusion-webui/webui.py", line 13, in <module>
auto-cpu_1 | initialize.imports()
auto-cpu_1 | File "/stable-diffusion-webui/modules/initialize.py", line 23, in imports
auto-cpu_1 | import gradio # noqa: F401
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/gradio/__init__.py", line 3, in <module>
auto-cpu_1 | import gradio.components as components
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/gradio/components/__init__.py", line 3, in <module>
auto-cpu_1 | from gradio.components.bar_plot import BarPlot
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/gradio/components/bar_plot.py", line 7, in <module>
auto-cpu_1 | import altair as alt
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/__init__.py", line 649, in <module>
auto-cpu_1 | from altair.vegalite import *
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/vegalite/__init__.py", line 2, in <module>
auto-cpu_1 | from .v5 import *
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/vegalite/v5/__init__.py", line 2, in <module>
auto-cpu_1 | from altair.expr.core import datum
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/expr/__init__.py", line 11, in <module>
auto-cpu_1 | from altair.expr.core import ConstExpression, FunctionExpression
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/expr/core.py", line 6, in <module>
auto-cpu_1 | from altair.utils import SchemaBase
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/utils/__init__.py", line 14, in <module>
auto-cpu_1 | from .plugin_registry import PluginRegistry
auto-cpu_1 | File "/opt/conda/lib/python3.10/site-packages/altair/utils/plugin_registry.py", line 13, in <module>
auto-cpu_1 | from typing_extensions import TypeIs
auto-cpu_1 | ImportError: cannot import name 'TypeIs' from 'typing_extensions' (/opt/conda/lib/python3.10/site-packages/typing_extensions.py)
これについては現時点でのバグっぽいですが、以下に回避策がありました。
これで上手くいき、http://localhost:7860/ にアクセスすれば使用できました。
SDXLモデルの設定
SDXL モデルの設定については以下が参考になりました。
ただ、モデルと VAE の配置場所は現在のバージョンだと少し異なるようです。
- モデル:
data/models/Stable-diffusion
- VAE:
data/models/VAE