Japanese Stable CLIP を試してみた

Docker で CUDA する

参考

WSL2 の Docker でも、コンテナ内から GPU を使用できる仕組みが用意されています。
ただし、2022年12月時点では対応するのは CUDA のみ。AMD の ROCm は無理と見た記憶があります。

そして、Docker Desktop であれば特段の操作は不要。Docker Desktop を使わずに WSL2 に Docker を構築した場合でも、上記リンク先の「WSL 2 上の Linux への NVIDIA Container Toolkit のイントール」の項目に沿って、WSL2 上の Linux に「nvidia-docker2」パッケージをインストールするのみで大丈夫なようです。
(リンク先にもありますが、WSL2 上の Linux へ GeForce のドライバを導入する必要はありません)

ただ、リンク先のコマンドそのままだと、apt update を実行する際に以下のようなメッセージが何行か表示されます。

W: https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/amd64/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

最近の Ubuntu では apt-key add で鍵を追加するのは廃止の方向らしいので、それに伴うメッセージのようです。コマンドを一部変更することでメッセージを抑制できます。
鍵を追加するこの行を、
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

このように置き換えて実行すればよさそうです。

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo tee /etc/apt/trusted.gpg.d/nvidia.asc


Portainer のコンテナ作成画面にも、GPU の項目があるので、ここを設定すれば普通にコンテナ内からでも GPU が使えそうです。

あとは docker run する際に「--gpus all」を指定してコンテナを起動すれば、GPU が使用できます。
なお、コンテナ内には GPU が直接見えているわけではなく、/dev/dxg というデバイスで仮想化された状態です。そのため、ものによっては動作しないものもあるかもしれません。

とはいえ、--gpus all を指定したコンテナ内で nvidia-smi コマンドを実行すると、GPU を認識していることが見えます。
(CUDA のバージョンが 11.8 ですね・・・)

PyTorch でも CUDA が利用可能になっています。


コメント