機械学習のための GPU 関連ライブラリの設定 (docker 利用)

機械学習のための GPU 関連ライブラリの設定 (venv 利用) が設定されているものとする.

Docker の設定

$ sudo apt install docker.io

テストを行うために管理者を docker グループに入れる.

$ sudo usermod -aG docker sugiyama
$ sudo usermod -aG docker admin01

NVIDIA Container Toolkit

$ sudo apt-get update
$ sudo apt-get install nvidia-container-toolkit
$ sudo systemctl restart docker

テスト

docker が含まれていることを groups コマンドで確認する.もし含まれていなければ,usermod で追加してログインし直す.

インストールされていないコンテナ (以下の例では nvidia/cuda:12.1.1-runtime-ubuntu22.04) を指定すると, 自動的にコンテナイメージがダウンロードされる.

$ docker run --gpus all nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi -L

  Unable to find image 'nvidia/cuda:12.1.1-runtime-ubuntu22.04' locally    <=== 注目!
  12.1.1-runtime-ubuntu22.04: Pulling from nvidia/cuda                     <=== 注目!
  aece8493d397: Pull complete 
  dd4939a04761: Pull complete
  ....
  GPU 0: NVIDIA A100 80GB PCIe (UUID: GPU-f93bcfaf-8668-bf96-32af-d366fd13c746)
  GPU 1: NVIDIA A100 80GB PCIe (UUID: GPU-e4a7c3aa-06b3-fc2a-acd2-fea39b81b653)
  GPU 2: NVIDIA A100 80GB PCIe (UUID: GPU-6e8145c7-ae6c-040e-d958-2a1336caf70f)

NVIDIA Container Toolkit のバージョン情報は以下で確認できる

$ nvidia-container-cli info

  NVRM version:   565.57.01
  CUDA version:   12.7

  Device Index:   0
  Device Minor:   0
  Model:          NVIDIA A100 80GB PCIe
  Brand:          Nvidia
  GPU UUID:       GPU-f93bcfaf-8668-bf96-32af-d366fd13c746
  Bus Location:   00000000:3b:00.0
  Architecture:   8.0

  ...(以下, 略)...

docker version のバージョン情報は以下で確認できる

$ docker version

現時点でインストールされている docker イメージは以下のコマンドで取得できる.

$ docker images

  # docker images
  REPOSITORY    TAG                          IMAGE ID       CREATED         SIZE
  nvidia/cuda   12.1.1-runtime-ubuntu22.04   0495908f9381   13 months ago   2.24GB

利用する GPU を指定する.

docker の --gpus オプションで GPU 番号を指定する.

adm01@ncsv2:~$ docker run --gpus 'device=0' --rm nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi -L

  GPU 0: NVIDIA A100 80GB PCIe (UUID: GPU-f93bcfaf-8668-bf96-32af-d366fd13c746)

adm01@ncsv2:~$ docker run --gpus 'device=1' --rm nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi -L

  GPU 0: NVIDIA A100 80GB PCIe (UUID: GPU-e4a7c3aa-06b3-fc2a-acd2-fea39b81b653)

adm01@ncsv2:~$ docker run --gpus 'device=2' --rm nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi -L

  GPU 0: NVIDIA A100 80GB PCIe (UUID: GPU-6e8145c7-ae6c-040e-d958-2a1336caf70f)