2023.12.21 追記 コンテナが起動しない場合
最近、生成系AIに関しても興味がでてきたのでちょこっとStable Diffusionなんかも簡単に動かしたいなあと思うようになりました。と入っても、ノートPCではストレージにも余裕がそこまでなく、やばいときには環境を削除したり戻したりということも考えなければ行けないのですがローカルに環境をインストールをするのがちょっと抵抗感がありました。そこで今回はその下準備としてまず、Dockerをインストールしている自分の環境でNVIDIAのCUDAコアが使用できるのか確認する方法が必要でした。ということでその調べかたをメモしておきます。
Docker上でGPUの認識を確認する
とりあえず、NVIDIAのドライバ類は最新にしておきます。
今回は、CUDAコアが使用できるコンテナ使います。
使用するイメージは以下です。
DockerをインストールしたWindowsでPowerShellなどのCLIを起動し、更に以下の様にコマンドを実行します。このエントリを書いている時点でのCUDAバージョンは12.3、Ubuntuのバージョンが22.04です。
PS > docker run -it --gpus=all --rm nvidia/cuda:12.3.1-base-ubuntu22.04 /bin/bash
オプションスイッチの意味は以下の通りです。
オプション/コマンド | 説明 |
---|---|
docker run |
Dockerコンテナを作成し、実行するためのコマンド。 |
-it |
-i はコンテナの標準入力を開いた状態にする。-t はターミナルを割り当てる。これにより、コンテナ内でのユーザーインターフェイスが使用できます。 |
--gpus=all |
ホストマシンに存在する全てのGPUをコンテナ内で利用可能にする。 |
--rm |
コンテナの実行終了後に、自動的にコンテナを削除する。 |
nvidia/cuda:12.3.1-base-ubuntu22.04 |
NVIDIAが提供するCUDA 12.3.1とUbuntu 22.04をベースとしたDockerイメージを使用。 |
/bin/bash |
コンテナ内で実行するコマンド。bashシェルを起動し、コンテナ内でコマンドを実行できるようにする。 |
このような形で実行をすると以下のように画面が表示されます。イメージがインストールされ、コンテナが起動し、シェル(bash
)が起動します。
コンテナが起動しない場合
2023.12.21 追記
dockerコマンドを実行しても動作しない場合には以下の2点の原因が考えられます。
ドライバーが当たっていない可能性は非常に低いと思いますので、原因は後者になると考えられます。 以下のリンクでダウンロードしインストールを行います。インストールした記憶がない方はたぶんこれで解決するでしょう。
アクセス後、画面内の【Download Now】ボタンをクリックします。あとはダウンロードされたファイルを実行すればOKです。
コンテナが無事に起動した場合
コンテナが起動するとOSのバージョンは以下の様になっています。
root@e74855cdf815:/# cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.3 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.3 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy
Shellの実行ができるようになったらnvidia-smi
コマンドを実行します。
実行すると表形式で状態を表示してくれます。ドライバのバージョンやCUDAのバージョンも表示されています。
root@e74855cdf815:/# nvidia-smi Fri Dec 15 14:34:39 2023 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 545.33.01 Driver Version: 546.29 CUDA Version: 12.3 | |-----------------------------------------+----------------------+----------------------+ | 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 1650 ... On | 00000000:01:00.0 Off | N/A | | N/A 36C P8 4W / 35W | 360MiB / 4096MiB | 1% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+```
Geforce GTX 1650 Laptopが認識されていることがわかります。VRAMが4GBですね😓 このVRAM容量だとStable Diffusionの動作はちょっと渋いかもしれません。
別のPCでも試してみましたが、こちらはすごい性能でGeforce RTX 4700 LaptopでVRAMが8GBです。
おわりに
無事にDocker上からNVIDIAのCUDAを使用できるか確認ができました。 今回起動したコンテナはpython3やgitのインストールされていないので、別途インストールが必要なのでご注意ください。