ネコと和解せよ

技術的なあれこれの備忘録のつもり

DockerでGPUを使う

tl;dr

  • 最近(2019年8月現在)Nvidia-dockerなしでDockerでGPUが使えるようになったと聞いてためしたらハマった話
  • Nvidia-dockerはインストール不要だけど、ランタイムはいるのかよ、と思ったので備忘録

最近Nvidia-dockerなしでDockerでGPUが使えるようになったと聞いた

ことの発端はTwitterなんかで表題の話を流し見したことだった.

確か記事は以下だったと思う

medium.com

どうやら今まで

$ docker run --runtime=nvidia ...

ってやってたのが

$ docker run --gpus all ...

で済むらしい。

というわけでDockerを再インストールし始めた

Dockerのインストール

基本的には公式のドキュメント通りにやってれば問題ない. 実際問題なかった. docs.docker.com

Linux Mint等を利用している人は一部読み替えが必要になる。例えば

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

これは $(lsb_release -cs)を、使っているバージョンによるが、例えばxenial等に読み替える必要がある.

インストールが完了したら、とりあえずDocker自体の動作確認をする.

$ docker run hello-world

権限周りでエラーが出る場合はsudoをつけるか、dockerを利用するユーザーをsudo gpasswd -a ユーザー名 dockerでグループ追加し、 一旦ログアウト、再度ログインする必要がある。

Nvidia Container Runtime を入れる

Nvidia Driverはインストール済みの前提で話を進める.

下の記事で書かれている通りにやれば問題ない

collabnix.com

ディストリビューションにたいする対応状況は下記

nvidia.github.io

では、Nvidia Container Runtime をインストールしていく

下記をnvidia-container-runtime-script.shという名前をつけて保存する

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)の部分に貸しては LinuxMint等であれば、distribution="ubuntu16.04"等に書き換えておく.

上記で作ったスクリプトを実行する.

$ sh nvidia-container-runtime-script.sh

インストール

$ sudo apt-get install nvidia-container-runtime

動作確認

$ docker run -it --rm --gpus all ubuntu nvidia-smi

これでnvidia-smiの結果が帰ってくれば問題ない.

次のようなエラーが出る場合は、

docker: Error response from daemon: linux runtime spec devices: could not select device driver "" with capabilities: [[gpu]].

下記のようにDockerデーモンを再起動すると上手くいく(場合がある)

$ systemctl restart docker.service