DockerでStable Diffusionを動かす(CPU版)
1. はじめに
Dockerを使って、Stable Diffusion(ディープラーニングによるテキスト→画像作成ツール)を構築します。
本内容は、CPU版の動かし方について記載しています。
Linux(Ubuntu)の場合は、すでにDockerがインストールされていることを前提とします。
2. Windows版の事前準備
Windows版は以下の環境で実施しました。
OS | Windows 11 Home |
GPU | なし |
メモリ | 16GB |
Stable diffusionの起動や画像の生成に時間がかかりますが(画像生成1枚あたり10〜15分)、上記のようなPCでも画像生成は可能です。
2.1 Docker Desktopのダウンロード、インストール
以下URLからインストーラ(.exe)をダウンロードします。
Docker DesktopにはDocker Composeも含まれています。
2.2 Gitのダウンロード、インストール
以下URLからインストーラ(.exe)をダウンロードします。
ダウンロードしたファイルを実行し、Gitをインストールします。2.3 wslの設定変更
StableDiffusionなど、メモリを大量に使用するコンテナを動かす場合は、メモリの割当を増やす必要があります。
LinuxではDocker Desktopの設定でメモリの変更ができましたが、Windows版ではwslのコンフィグファイルに直接記載する必要がありました。
「C:\Users\【ユーザ名】\.wslconfig」ファイルを新しく作成し、
[wsl2]
memory=13GB
swap=128GB
の記述を追加します。(メモリとスワップの値を大きく取ります。)
今回環境構築したPCのメモリは8GBでしたが、8GBより大きい値でも大丈夫でした。
.wslconfig ファイルを変更したら一度PCを再起動します。
3. Linux(Ubuntu)版の事前準備
Linux版は以下の環境で実施しました。
OS | Ubuntu 22.10 |
GPU | なし |
メモリ | 16GB |
3.1 Docker Desktopのダウンロード
以下URLからdebパッケージをダウンロードします。
3.2 Docker Desktopの導入
ターミナルから以下のコマンドを実行し、Docker Desktopをインストールします。
sudo apt install ./docker-desktop-4.15.0-amd64.deb
3.3 Docker Desktopの設定変更
StableDiffusionなど、メモリを大量に使用するコンテナを動かす場合は、メモリの割当を増やす必要があります。
[extensions]の右側をクリックし、[Setting]をクリックします。
[Resources]-[Advanced]を選択し、メモリ[Memory]の値を大きくします。
※StableDiffsionを使用する場合、メモリを12GBくらいに増やすと大きめのモデルでも異常終了しないように感じました。
メモリの値を変更したら、[Apply & restart]をクリックして、DockerDesktopを再起動します。
docker のsettings - resource でセッティングで メモリを 4GB(デフォルト)→12GBに変更する。
4. Stable Diffusion web UI (AUTOMATIC1111)のダウンロード
端末より以下のコマンドを実行し、Stable Diffusion WebUI Dockerをcloneします。
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker
5. Stable Diffusionのコンテナを定義
端末より以下のコマンドを実行し、Stable Diffusion のコンテナを定義します。
cd ~/stable-diffusion-webui-docker
docker compose --profile download up --build
正常に終了しない場合、2行目のコマンドを再度実行することで上手く行くことがあります。
6. Stable Diffusionを実行
端末より以下のコマンドを実行し、Stable Diffusion を実行します。
docker compose --profile auto-cpu up --build
Docker DesktopでStable Diffusionが動いていることを確認します。
7. ブラウザから起動
ブラウザより以下のアドレスを入力します。
http://localhost:7860
8. トラブルシューティング
Stable Diffusion を動かしているときにDockerDesktopでエラーコード137(以下の画面)が出る場合は、Dockerで使用するメモリを増やすことで上手く行ったことがあります。
更新履歴
2023/3/31 Windows版の事前設定で、wslconfigファイルの追加項目を記載
2023/1/29 公開
Discussion