リモートUbuntuでDocker使ってStable Diffusion立ててローカルブラウザからアクセスする
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
stable-diffusion-webui-dockerをインストールする。
Setupを参考にする
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
docker compose --profile download up --build
成功
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
docker compose --profile [ui] up --build
エラー
Attaching to webui-docker-auto-1
Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
上記エラーの対処
FAQに対処法があった。
Install NVIDIA Container Toolkit and restart the docker service #81
とのこと。
FAQ
NVIDIA Container Toolkit
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
NVIDIA Container Toolkit のインストール
ドキュメントに従う。
Setup the package repository and the GPG key:
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
成功
GPG key とは
「GnuPG」(GNU Privacy Guard)という暗号化ソフトで生成される公開鍵です。
Linuxの場合,apt-getコマンドやyumコマンドを使ってインターネットから入手できるパッケージが正しい配布先のものかどうかのチェックなどに利用しています。
Install the nvidia-container-toolkit package (and dependencies) after updating the package listing:
sudo apt-get update
成功(以前はここで失敗した気がするが、、、)
sudo apt-get install -y nvidia-container-toolkit
成功
Configure the Docker daemon to recognize the NVIDIA Container Runtime:
sudo nvidia-ctk runtime configure --runtime=docker
成功
Restart the Docker daemon to complete the installation after setting the default runtime:
sudo systemctl restart docker
成功
At this point, a working setup can be tested by running a base CUDA container:
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
エラー
Unable to find image 'nvidia/cuda:11.6.2-base-ubuntu20.04' locally
11.6.2-base-ubuntu20.04: Pulling from nvidia/cuda
846c0b181fff: Pull complete
b787be75b30b: Pull complete
40a5337e592b: Pull complete
8055c4cd4ab2: Pull complete
a0c882e23131: Pull complete
Digest: sha256:9928940c6e88ed3cdee08e0ea451c082a0ebf058f258f6fbc7f6c116aeb02143
Status: Downloaded newer image for nvidia/cuda:11.6.2-base-ubuntu20.04
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.
エラーは出ているが、今回のメインではないので一旦スキップ
docker compose --profile auto up --build
が動けば問題ないので、こちらを実行。
docker compose --profile auto up --build
エラー
Attaching to webui-docker-auto-1
Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
エラー対処
エラー内容
Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown
libnvidia-ml.so.1
というライブラリが見つからないことによるエラーのようです。
まだcloseされていないが、issueは立っていた。
stable-diffusion-webui-dockerの開発者が解決した模様。
Ubuntuのバージョンに合ったNVIDIAのドライバーが必要らしい
nvidia-smi
を叩けばわかるようだが、そのためには複数あるNVIDIAドライバから適切なものを選ぶ必要がある
それをしるためにubuntu-drivers devices
を叩きたいが、それをするためにはubuntu-drivers-common
をインストールする必要がある。
sudo apt install ubuntu-drivers-common
$ ubuntu-drivers devices
== /sys/devices/pci0000:2e/0000:2e:00.0/0000:2f:00.0 ==
modalias : pci:v000010DEd00001DB4sv000010DEsd00001214bc03sc02i00
vendor : NVIDIA Corporation
model : GV100GL [Tesla V100 PCIe 16GB]
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-525-server - distro non-free
driver : nvidia-driver-515 - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-510 - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : nvidia-driver-525 - distro non-free recommended
driver : nvidia-driver-390 - distro non-free
driver : nvidia-driver-515-server - distro non-free
driver : nvidia-driver-450-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
reccomendされているdriver : nvidia-driver-525 - distro non-free
をインストールして、reboot
sudo apt -y install nvidia-driver-525
sudo reboot
$ nvidia-smi
Wed Apr 12 04:06:03 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| 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 Tesla V100-PCIE... Off | 00000000:2F:00.0 Off | 0 |
| N/A 33C P0 25W / 250W | 4MiB / 16384MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1313 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------+
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
ちょっとよくわかっていないのですが、nvidia-smi
が実行できた時点でNVIDIAとの接続が確認できているということみたいです。
sudo apt -y install nvidia-driver-525
までの作業でOKだったのかも?
そもそも実行したかったdocker compose --profile auto up --build
を実行する。
docker compose --profile auto up --build
リモートPC上でサーバが立った!!!
webui-docker-auto-1 | Running on local URL: http://0.0.0.0:7860
$ nc -vz localhost 7860
Connection to localhost 7860 port [tcp/*] succeeded!
次はこれを手元のPCからアクセスできるようにする
![Ryu GOTO](https://zenn-dev.github.io/default-avatars/dark/r.png)
リモートPCのIPアドレスを知るためにifconfig
を叩きたいので、以下を実行
sudo apt install net-tools
ifconfig
を叩いて、inet
の次のIPアドレスを見ます。
手元のPCのブラウザで http://<IPアドレス>:7860
でアクセスします。
やっとできたー!!!!