Ubuntu18.04にNVIDIA Container Toolkitをインストールする
最初に
nvidia-docker2が非推奨になったそうなので新しく環境構築しました。
手元で上手くいった例を記録として残しているだけで、何が正しいか分かっていない(動けば正義)ので無駄な手順等を行なっている可能性があります、ご了承ください
またコマンドと出力が一緒になっている部分はコマンド前に$
を付けています
環境
試した環境
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
nvidia-driverとCUDAをインストールする
以下のサイトを参考にインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" sudo apt-get update # 自動で合うdriverを入れてくれる # sudo ubuntu-drivers autoinstallだと435, 以下コマンドだと418のインストールを確認 sudo apt-get -y install cuda-drivers sudo apt-get -y install cuda
.bashrc
にパスを追加
# 以下を追記 export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
sudo reboot
で再起動、以下で確認
$ nvidia-smi Fri Nov 15 00:06:50 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 166... On | 00000000:01:00.0 On | N/A | | 29% 33C P8 5W / 120W | 110MiB / 5911MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 GeForce GTX 1660 On | 00000000:03:00.0 Off | N/A | | 28% 31C P8 3W / 120W | 1MiB / 5914MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 953 G /usr/lib/xorg/Xorg 39MiB | | 0 1011 G /usr/bin/gnome-shell 69MiB | +-----------------------------------------------------------------------------+ $ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Sun_Jul_28_19:07:16_PDT_2019 Cuda compilation tools, release 10.1, V10.1.243
Dockerをインストールする
以下のサイトを参考にインストール
sudo apt update sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD8 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y # 確認 sudo docker run hello-world
バージョンの確認(NVIDIA Container ToolkitはDockerが19.03以降でないとダメ)
$ docker -v Docker version 19.03.4, build 9013bf583a
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-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker
動くか確認
$ nvidia-container-cli info NVRM version: 418.87.01 CUDA version: 10.1 Device Index: 0 Device Minor: 0 Model: GeForce GTX 1660 Ti Brand: GeForce GPU UUID: GPU-4dd3cbbf-cb72-be49-a3d0-4625043ce50e Bus Location: 00000000:01:00.0 Architecture: 7.5 Device Index: 1 Device Minor: 1 Model: GeForce GTX 1660 Brand: GeForce GPU UUID: GPU-914b0174-e95d-0b8f-cf13-d20ed58f707e Bus Location: 00000000:03:00.0 Architecture: 7.5
これでGPUコンテナを実行するとき(run)に--gpus
オプションを付ければ動く
メモ
dockerコマンドの際に一々sudoを打たなくていいようにする この記事より以下コマンドを入力後、再起動 dockerコマンドをsudoの付与無しに実行できるようにする
sudo gpasswd -a "権限を付与するuser" docker
実際にpytorchを動かしてみる
閑話休題 今回はお手軽にpytorch公式のdockerhubからイメージを持ってくる(動くか確認もしたかった)
# 色々オプションをつけているが、最低限なら-pとか-vはいらない # -vするなら適当に作業ディレクトリに移動してから行う docker run -itd --name pytorch -p 8888:8888 -v $PWD/:/workspace --gpus all pytorch/pytorch:1.3-cuda10.1-cudnn7-devel docker exec -it pytorch /bin/bash
nvidia-smi
もちゃんと動くことを確認
学習部分だけいい感じに切り取ってくれている記事があったので利用させてもらう
Docker(19.03)でgpu有効化してpytorchで訓練するまでやる(Ubuntu18.04)
無事動くことを確認
おまけ
この記事より丁寧でわかりやすい導入記事() NVIDIA Container Toolkit を使って Docker コンテナで GPU を使う