猫になりたい

コンサルのデータ分析屋、計量経済とか機械学習をやっています。pyてょnは3.7を使ってマスコレルウィンストングリーン。

Ubuntu 16.04にnvidia-dockerでディープラーニング用の環境を作る1

2018/04/01:インストール手順のcuda toolkitのver.を9.1から9.0に変更

GCPでGPUの割当を行ったのでtensorflowを使うために、GPU環境をnvidia-dockerを使って作りました。 これを使うとcudnnのインストール等を行わなくていいので楽らしいです。

前半の今回はnvidia dockerを入れるところまで行います。

0. NVIDIAドライバのインストール

NVIDIAドライバダウンロードから自分の使用するGPUにあったドライバをインストールしましょう。 私の場合、Tesla K80を使うので以下のようにしました。

wget http://jp.download.nvidia.com/tesla/384.125/nvidia-diag-driver-local-repo-ubuntu1604-384.125_1.0-1_amd64.deb
dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-384.125_1.0-1_amd64.deb
rm nvidia-diag-driver-local-repo-ubuntu1604-384.125_1.0-1_amd64.deb

1. CUDA Toolkit 9.0 のインストール

CUDA Toolkit 10.1 Update 1 Download | NVIDIA DeveloperからCUDA Toolkit 9.0 のインストールをします。 別のバージョンが良い方は上記のサイトから目的のリンクを入手してください。 以下はnetwork versionでインストールしています。

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda
rm cuda-repo-ubuntu1604_9.0.176-1_amd64.deb

2. Dockerのインストール

以下のDockerの公式を参考にDockerを入れる

docs.docker.com

# 念のため古いバーションのリムーヴ
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
# 依存パッケージのインストール
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
# Docker公式のGPG keyを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# stable repositoryを登録
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
# 現在のnvidia dockerと互換の中で最新のversionのdockerを入れる
sudo apt-get install docker-ce=17.03.2~ce-0~ubuntu-xenial

3. Nvidia Dockerをインストールする

github.com

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

以下の様にnvidia-smiの結果が表示されたら成功

Status: Downloaded newer image for nvidia/cuda:latest
Thu Mar 29 12:59:36 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.46                 Driver Version: 390.46                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:04.0 Off |                    0 |
| N/A   36C    P8    32W / 149W |     15MiB / 11441MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

4. sudoなしでdockerを実行できるように変更

sudo groupadd docker
sudo usermod -aG docker $USER
# 再起動
# ログアウトでいいらしいがこっちのほうが早かったので
sudo shutdown -r now

# sudoなしで実行できるか確認
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

次回はtensorflowの入ったdockerのコンテナを立てます。

blog.neko-ni-naritai.com