nvidia-dockerをインストールしてコンテナ内でGPUを使えるようにする方法
NVIDIAのGPUを搭載しているPC(Ubuntu)でdockerを使うことを考える。
docker内でもGPUを使いたい場合にはnvidia-dockerをインストールすると便利なので以下でインストールする方法をまとめておく。
今回はUbuntu16.04の場合。18.04でも基本的には同じはず。
また、dockerがインストールされていることが前提としている。
nvidia-docker 2.0をインストールする
以下のコマンドで、aptリポジトリに必要なパッケージリポジトリパスを追加する。
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
そして、以下のコマンドでリポジトリをアップデートする。
sudo apt update
以下のコマンドで、nvidia-docker 2.0をインストールする。
sudo apt install -y nvidia-docker2
次に、dockerのデーモン設定をリロードする。
sudo pkill -SIGHUP dockerd
ちなみに、デーモンとは↓のこと(参考)。
Linuxでは、システムが必要とするプロセスやサーバープロセスなどを、バックグラウンドで常駐さておきます。 このような常駐プログラムを、”デーモン=daemon”と呼びます。
そして、docker環境で、nvidia-smiを実行し、動作確認をする。
docker run --runtime=nvidia --rm nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi
docker imageはcuda10.0、cudnn7のバージョンに合うものにしている。
dockerのイメージを入手しコンテナを作成する
以下のコマンドでこのdocker imageを入手する。
docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
次に、以下のコマンドでコンテナを作成する。
nvidia-docker run -it --name masaki 68cfebc80395 /bin/bash
「masaki」はコンテナの名前で自分の好きなものに設定する。
「68cfebc80395」はdocker imageのIDで以下のコマンドで確認できる。
docker images
これでコンテナ内でGPUを使ってプログラムを実行することが出来た。
ただ、以下のコマンドでNVIDIAドライバを認識するのには失敗している。
なぜかは分かっていないけど、↑で同じようなコマンドでnvidia-smiできているのでまあ大丈夫か。
docker run --gpus all nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi
参考
nvidia-docker2のインストール(On Ubuntu 16.04 LTS) - Qiita
nvidia-dockerをインストールして、DNN環境の構築を先人の方のページを参考にしながら進めています。nvidia-dockerは、Version 2.0がリリースされているようなので、2…
Dockerを使って爆速でGPUを設定する方法 - Qiita
#はじめに機械学習をやろうと思ったら、まずやってくるのが GPUの設定 ですよね。ドライバインストールしてCUDAとcudnnインストールして、、、。これが本当にめんどくさい!そんな方には Doc…