プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2024/12/10

Stable Diffusion web UI を動かしてみた

event_note2024/12/09 23:28

ローカル環境で画像生成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