先日は古いWindowsパソコンにWSL2をインストールし、OSとしてUbuntuを選択後、そのUbuntu自体にDocker及びDocker Composeをインストールしました。その環境にDocker版のStableDiffusionWebUIをインストールして画像を生成するテストをしました。
本日はこのPCにUbuntu DesktopをインストールしたのでStable Diffusion Web UIのDocker版のコンテナを立ち上げます。その後、SDXLにアップグレードします。このUbuntuは実機にインストールしたので、仮想環境ではありません。DockerとDocker Composeはインストール済みです。
https://minokamo.tokyo/2023/08/12/6001/
Stable Diffusion Web UIのDocker版は次のGitHubを利用させていただきました。
Stable Diffusion Web UIのインストール方法 (Ubuntu)
前提条件: DockerとDocker Composeがインストールされていること。
Dockerを利用する理由は、依存関係の手間を省くためや、正常に動作が確認されているイメージをそのまま利用できるからです。
1. プロジェクトのクローン
まずは、Stable Diffusion Web UIを含むDockerイメージのリポジトリをクローンします。これにより、ローカル環境に必要なファイルがダウンロードされます。
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
2. Dockerイメージのビルド
次に、ダウンロードしたプロジェクトの中で、Dockerイメージをビルドします。
cd "ディレクトリ名" # 例: cd "gitにて作成されたディレクトリ"
docker compose --profile download up --build
3. コンテナの起動
上記のコマンドが成功したら、Dockerコンテナを起動します。これにより、Web UIが利用可能となります。
docker compose --profile auto up --build
注: この手順は、Windows上でWindows Subsystem for Linux (WSL)を利用することでも実行できます。
コンテナ起動時のエラーとその対処方法
エラー内容:
Error response from daemon: could not select device driver “nvidia” with capabilities: [[compute utility]]

このPCは古いですが、GTX 1060というグラボを搭載していました。

このエラーは、DockerがNVIDIAのGPUを認識できないために発生します。具体的には、NVIDIAのコンテナツールキットがインストールされていないためと考えられます。
対処方法
- NVIDIAのコンテナツールキットのインストール試行 まず、以下のコマンドでNVIDIAのコンテナツールキットをインストールしようとします。
sudo apt install nvidia-container-toolkit
しかし、以下のようなエラーが出るかもしれません。
E: パッケージ nvidia-container-toolkit が見つかりません

このエラーは、該当のパッケージがリポジトリに存在しないために発生します。調査した結果、ネットにリポジトリの記述方法がありました。
- NVIDIAの公式リポジトリの追加 エラーの対処のために、NVIDIAの公式リポジトリをシステムに追加します。以下のコマンドを実行してください。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- 再度インストール リポジトリの追加が完了したら、再度パッケージの更新とインストールを試みます。
sudo apt update
sudo apt install nvidia-container-toolkit
- Dockerの再起動 新しいツールキットを認識させるために、Dockerを再起動します。
sudo service docker restart
- コンテナの再起動 以下のコマンドで再度、コンテナを起動してください。
docker compose --profile auto up --build
私はこの方法でエラーを回避しました。
ブラウザでアクセス
ブラウザで確認します。同じPCの場合は次のアドレスを入力します。

Stable Diffusionのモデル(SDXL 1.0)をダウンロードして設置


ダウンロードしたファイルの拡張子は.safetensorsでした。このファイルを次のディレクトリに移動します。
プロジェクト(stable-diffusion-webui-docker) → data → models → Stable-diffusion
このディレクトリには初期ファイルのモデルが含まれています。拡張子は.ckptでした。
普段はクラウドでコマンドに慣れていたのですがドラッグアンドドロップをしようとしたらできません。端末でsudo mvコマンドで移動しました。ドラッグアンドドロップで操作したい方はmodelsディレクトリの所有権を変更します。最初はrootになっています。
例:dataディレクトリにいる状態で下記のコマンドを入力します
sudo chown -R mamushi:mamushi models

ブラウザで更新ボタンを押すとモデルが表示されます。

いろいろなモデルを試してみる
画像生成に関しては初心者ですが、ネット検索でおすすめなモデルやプロンプト(呪文)を改変して画像を作成しました。

