Closed8

リモートUbuntuでDocker使ってStable Diffusion立ててローカルブラウザからアクセスする

Ryu GOTORyu GOTO
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 GOTORyu GOTO

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コマンドを使ってインターネットから入手できるパッケージが正しい配布先のものかどうかのチェックなどに利用しています。

https://xtech.nikkei.com/it/article/Keyword/20091204/341579/

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 GOTORyu GOTO

エラー対処

エラー内容

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は立っていた。
https://github.com/NVIDIA/nvidia-docker/issues/1711

stable-diffusion-webui-dockerの開発者が解決した模様。
https://github.com/AbdBarho/stable-diffusion-webui-docker/issues/406

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 GOTORyu GOTO

ちょっとよくわかっていないのですが、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 GOTORyu GOTO

リモートPCのIPアドレスを知るためにifconfigを叩きたいので、以下を実行

sudo apt install net-tools

ifconfigを叩いて、inetの次のIPアドレスを見ます。

手元のPCのブラウザで http://<IPアドレス>:7860 でアクセスします。

やっとできたー!!!!

このスクラップは2023/04/14にクローズされました