本記事ではyoloを使うことを例として,cudaを実行できる環境をubuntu上にdockerで構築する方法を説明します.
#イントロ
cudaの上で動くアプリケーションはそのバージョンごとに必要とするcudaや依存するパッケージのバージョンがバラバラである.例えば,tensorflowには2系と1系があるが,それによって必要とするcudaのバージョンが異なり,また,yoloが要求するtensorflowのバージョンも異なる.すなわち依存関係が極めて複雑であり,直接OS上にパッケージをインストールして使うのは困難かつ,既存の環境を破壊する恐れがあり危険である.そこで,dockerというコンテナ方式の仮想環境を用いることでその作業専用の依存関係を満たした環境を作成し,他の環境に影響を与えないうようにすることが求められる.本記事ではdockerのインストールが完了している環境においてgpgpuをdockerで使う方法を解説する.
前提条件
dockerインストールが完了していること.(必要に応じて docker-composeもインストールする)
#nvidia-smiを実行してnvidiaのドライバが正しくインストールされているか確認する
$ nvidia-smi
Thu Oct 28 15:18:41 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03 Driver Version: 460.91.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| 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 GeForce GTX 166... Off | 00000000:01:00.0 On | N/A |
| N/A 47C P8 5W / N/A | 1001MiB / 5944MiB | 10% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
のように表示されればドライバはインストールされている.されていない場合には先にドライバのインストールを行う.Ubuntuの場合には sudo ubuntu-drivers autoinstall コマンドでインストール可能
$ sudo ubuntu-drivers autoinstall
nvidia container toolkitをインストールする
公式サイトのやり方通り
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt update
$ sudo apt install -y nvidia-docker2
$ sudo systemctl restart docker
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smiで確認してgpuが認識していればOK.