DockerでGPUを使う
tl;dr
- 最近(2019年8月現在)Nvidia-dockerなしでDockerでGPUが使えるようになったと聞いてためしたらハマった話
- Nvidia-dockerはインストール不要だけど、ランタイムはいるのかよ、と思ったので備忘録
最近Nvidia-dockerなしでDockerでGPUが使えるようになったと聞いた
ことの発端はTwitterなんかで表題の話を流し見したことだった.
確か記事は以下だったと思う
どうやら今まで
$ 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はインストール済みの前提で話を進める.
下の記事で書かれている通りにやれば問題ない
各ディストリビューションにたいする対応状況は下記
では、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