1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2 (GPGPU) +Ubuntu22.04環境下で、Stable Diffusion Web UI (AUTOMATIC1111版) を動作させる

Posted at

背景

画像生成AIである「Stable Diffusion」を、WindowsPCで動作させたい。

できたこと

Windows10 (22H2) +WSL2 (GPGPU) +Ubuntu22.04環境下で、「Stable Diffusion Web UI (AUTOMATIC1111版)1」を動作させた。

やったこと

  1. Windows10 (22H2) +WSL2 (GPGPU) +Ubuntu22.04環境を構築する
  2. Ubuntuに、SDWUのインストールに必要なアプリケーションをインストールする
  3. SDWUのリポジトリに記載の手順をトレースする
  4. SDWUの動作に必要なファイルを用意する
  5. 動かす

動作環境

  • ホスト環境
    • Windows10 Education (22H2)
    • Intel Core i5-12400F
    • 16GB RAM
    • GeForece GTX 1060 6GB
    • NVIDIA Driver バージョン: 536.23
    • WSL バージョン: 2.2.4.0
  • ゲスト環境
    • Ubuntu 22.04
    • カーネル バージョン: 5.15.153.1-2

具体的な手順

  1. Windows10 (22H2) +WSL2+Ubuntu22.04環境を構築する
    • Windows10上でWSL2を有効化する
    • WSL2上で動作するUbuntu22.04をインストールする
  2. Ubuntuに、SDWUのインストールに必要なアプリケーションをインストールする
    • aptで「libgoogle-perftools-dev」をインストールする
  3. SDWUのリポジトリに記載の手順をトレースする
    • Installation and Runningに記載の手順に従う
  4. SDWUの動作に必要なファイルを用意する
    • checkpointファイルをダウンロード&インストールする
  5. 動かす
    • Windows環境のブラウザでSDWUにアクセスする

各項目について、下記で順を追って説明する。

Windows10上でWSL2を有効化する

「Windowsの機能の有効化または無効化」より、下記機能を有効化する。

  • Hyper-V
  • Linux用Windowsサブシステム
  • 仮想マシン プラットフォーム

スクリーンショット 2024-07-12 204301.png

WSL2上で動作するUbuntu22.04をインストールする

下記コマンドを入力する。

インストール.log
PS C:\Users\hoge> wsl --install -d Ubuntu-22.04
Ubuntu 22.04 LTS は既にインストールされています。
Ubuntu 22.04 LTS を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: hoge
New password:
Retype new password:
passwd: password updated successfully
この操作を正しく終了しました。
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.153.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/hoge/.hushlogin file.
hoge@DESKTOP-FUGA:~$

なお、この時点でnvidia-smiが動作する。

nvidia-smi.log
hoge@DESKTOP-FUGA:~$ nvidia-smi
Sun Sep 15 00:19:57 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.54.04              Driver Version: 536.23       CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1060 6GB    On  | 00000000:01:00.0  On |                  N/A |
|  0%   50C    P8               8W / 120W |    475MiB /  6144MiB |      1%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A        37      G   /Xwayland                                 N/A      |
+---------------------------------------------------------------------------------------+

CUDA Toolkitのインストールは不要なようである。

aptで「libgoogle-perftools-dev」をインストールする

リポジトリの手順をトレースするだけだと、「Cannot locate TCMalloc (improves CPU memory usage)」というエラーが出る。事前に「libgoogle-perftools-dev」をインストールしておく。

libgoogle-perftools-dev.log
hoge@DESKTOP-FUGA:~$ sudo apt install libgoogle-perftools-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libgoogle-perftools4 liblzma-dev libtcmalloc-minimal4 libunwind-dev
Suggested packages:
  liblzma-doc
The following NEW packages will be installed:
  libgoogle-perftools-dev libgoogle-perftools4 liblzma-dev libtcmalloc-minimal4 libunwind-dev
0 upgraded, 5 newly installed, 0 to remove and 131 not upgraded.
Need to get 2822 kB of archives.
After this operation, 11.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtcmalloc-minimal4 amd64 2.9.1-0ubuntu3 [98.2 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgoogle-perftools4 amd64 2.9.1-0ubuntu3 [212 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 liblzma-dev amd64 5.2.5-2ubuntu1 [159 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libunwind-dev amd64 1.3.2-2build2.1 [1883 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgoogle-perftools-dev amd64 2.9.1-0ubuntu3 [470 kB]
Fetched 2822 kB in 2s (1278 kB/s)
Selecting previously unselected package libtcmalloc-minimal4:amd64.
(Reading database ... 24208 files and directories currently installed.)
Preparing to unpack .../libtcmalloc-minimal4_2.9.1-0ubuntu3_amd64.deb ...
Unpacking libtcmalloc-minimal4:amd64 (2.9.1-0ubuntu3) ...
Selecting previously unselected package libgoogle-perftools4:amd64.
Preparing to unpack .../libgoogle-perftools4_2.9.1-0ubuntu3_amd64.deb ...
Unpacking libgoogle-perftools4:amd64 (2.9.1-0ubuntu3) ...
Selecting previously unselected package liblzma-dev:amd64.
Preparing to unpack .../liblzma-dev_5.2.5-2ubuntu1_amd64.deb ...
Unpacking liblzma-dev:amd64 (5.2.5-2ubuntu1) ...
Selecting previously unselected package libunwind-dev:amd64.
Preparing to unpack .../libunwind-dev_1.3.2-2build2.1_amd64.deb ...
Unpacking libunwind-dev:amd64 (1.3.2-2build2.1) ...
Selecting previously unselected package libgoogle-perftools-dev:amd64.
Preparing to unpack .../libgoogle-perftools-dev_2.9.1-0ubuntu3_amd64.deb ...
Unpacking libgoogle-perftools-dev:amd64 (2.9.1-0ubuntu3) ...
Setting up libtcmalloc-minimal4:amd64 (2.9.1-0ubuntu3) ...
Setting up liblzma-dev:amd64 (5.2.5-2ubuntu1) ...
Setting up libgoogle-perftools4:amd64 (2.9.1-0ubuntu3) ...
Setting up libunwind-dev:amd64 (1.3.2-2build2.1) ...
Setting up libgoogle-perftools-dev:amd64 (2.9.1-0ubuntu3) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.4) ...
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

hoge@DESKTOP-FUGA:~$

Installation and Runningに記載の手順に従う

リポジトリのInstallation and Runningに丁寧に記載されているので、上から順に実行していく。UbuntuはDebian-basedなので、下記コマンドを順に実行する。

なお、webui.shには実行権限が付与されていなかったので、要すれば下記コマンドで実行権限を付与してからwebui.shを実行する。

  • chmod 777 webui.sh

checkpointファイルを自力でダウンロード&インストールする

webui.shを実行すると、プリセットされているcheckpointファイルがダウンロード&インストールされるはずである。しかし、2024年09月15日現在、当該checkpointファイルへのリンクが切れており、ダウンロードに失敗する。

checkpointダウンロード失敗.log

hoge@DESKTOP-FUGA:/mnt/c/share/wsl-sd$ ./webui.sh

(略)

Downloading: "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" to /mnt/c/share/wsl-sd/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors

loading stable diffusion model: FileNotFoundError
Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 973, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/mnt/c/share/wsl-sd/stable-diffusion-webui/modules/initialize.py", line 149, in load_model
    shared.sd_model  # noqa: B018
  File "/mnt/c/share/wsl-sd/stable-diffusion-webui/modules/shared_items.py", line 175, in sd_model
    return modules.sd_models.model_data.get_sd_model()
  File "/mnt/c/share/wsl-sd/stable-diffusion-webui/modules/sd_models.py", line 693, in get_sd_model
    load_model()
  File "/mnt/c/share/wsl-sd/stable-diffusion-webui/modules/sd_models.py", line 788, in load_model
    checkpoint_info = checkpoint_info or select_checkpoint()
  File "/mnt/c/share/wsl-sd/stable-diffusion-webui/modules/sd_models.py", line 234, in select_checkpoint
    raise FileNotFoundError(error_message)
FileNotFoundError: No checkpoints found. When searching for checkpoints, looked at:
 - file /mnt/c/share/wsl-sd/stable-diffusion-webui/model.ckpt
 - directory /mnt/c/share/wsl-sd/stable-diffusion-webui/models/Stable-diffusionCan't run without a checkpoint. Find and place a .ckpt or .safetensors file into any of those locations.


Stable diffusion model failed to load

(略)

Civitai等から好みのモデルのcheckpointファイルをダウンロードして、指定のフォルダ内に配置する。上記の例では「/mnt/c/share/wsl-sd/stable-diffusion-webui」下に置けば良いことになる。

Windows環境のブラウザでSDWUにアクセスする

インストール、起動が完了すれば、下記のように出力される。

起動完了.log
hoge@DESKTOP-FUGA:/mnt/c/share/wsl-sd$ ./webui.sh

(略)

Calculating sha256 for /mnt/c/share/wsl-sd/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors: Running on local URL:  http://127.0.0.1:7860

(略)

vocab.json: 100%|████████████████████████████████████████████████████████████████████| 961k/961k [00:00<00:00, 2.11MB/s]
merges.txt: 100%|████████████████████████████████████████████████████████████████████| 525k/525k [00:00<00:00, 1.06MB/s]
special_tokens_map.json: 100%|█████████████████████████████████████████████████████████| 389/389 [00:00<00:00, 1.29MB/s]
tokenizer_config.json: 100%|███████████████████████████████████████████████████████████| 905/905 [00:00<00:00, 3.15MB/s]
config.json: 100%|█████████████████████████████████████████████████████████████████| 4.52k/4.52k [00:00<00:00, 10.4MB/s]
Applying attention optimization: Doggettx... done.
Model loaded in 54.8s (calculate hash: 23.7s, load weights from disk: 1.0s, create model: 0.3s, apply weights to model: 28.6s, load textual inversion embeddings: 0.3s, calculate empty prompt: 0.9s).

記載されているURLに、Windows環境のブラウザでアクセスする。上記の例では「http://127.0.0.1:7860」にアクセスすれば良いことになる。
環境構築完了できていれば、下記のような画面がブラウザ上に表示されるはずである。

image.png

初生成画像

00000-3475943173.png

参考資料

  • 深層学習用にWindows機を購入したのでセットアップするメモ 2023年5月
    https://zenn.dev/atom/scraps/2a65b201605570
    「Cannot locate TCMalloc (improves CPU memory usage)」エラーの対策として、「libgoogle-perftools-dev」をインストールすることを記載したエントリ。一応他の方法でもあるようではある。

参考(のみ)資料 (自分用)

  • 2017年の自作PCでStable Diffusionを遊べるようにするまで
    https://note.com/2378tcdf/n/n7184063b2b10
    GTX1060でも動くんだと勇気づけてくれた記事。medvramオプションの存在を知る。
  • CUDA on WSL User Guide
    https://docs.nvidia.com/cuda/wsl-user-guide/index.html
    上記資料の参考元である、NVIDIA公式ドキュメント。「sudo apt-get -y install cuda-toolkit-12-5」でインストールが完了する旨表示されるが、「nvcc -v」コマンドの変化なし。
  • WSL2でCUDAをインストールする
    https://qiita.com/cacaoMath/items/65d6a76b545eb662f581
    WSL2でGPGPU環境を構築するための手順が記載されているが、公式では「sudo apt-get -y install cuda-toolkit-12-5」となっているところ、「sudo apt-get -y install cuda」となっている。
  • WSLで動かす AUTOMATIC1111 stable-diffusion-webui
    https://zenn.dev/ilai/articles/545114f1b59903
    CUDAに加え、cuDNNもインストールしている。xformersのビルドには必要なのかも。ただ、現時点でxformersを利用せずに動作させているので、特に関係なし。
    なお、こちらのエントリもCUDAインストール時に「sudo apt-get -y install cuda」と入力している。
    学習モデルのダウンロードや追加設定の項は参考になると思われるが、まだ目を通せていない。
  • Google Colab版Stable Diffusionの立ち上げ方法から使い方までを徹底解説!
    https://romptn.com/article/5220
    VAEを使い始めるタイミングで読むかも。
  1. 以後、SDWUと記載する。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?