LoginSignup
5
8

More than 5 years have passed since last update.

Ubuntu 16.04にCUDA7.5+cuDNN4+TensorFlowのDockerイメージを作成する

Posted at

背景

Ubuntuアップデートしたらログインできなくなった(nvidia GPU使用)
のような症状にハマって、上記サイトやそのリンク先に書いてあるようなことを色々やるも改善しないのでUbuntuを再インストールした。CUDAとcuDNNのバージョンの呪いから開放されるためにDockerを導入したい。

構成

  • OS:Ubuntu 16.04
  • GPU:GeForce GTX TITAN X
  • ドライバ:nvidia-361

Dockerのインストール

https://docs.docker.com/engine/installation/linux/ubuntulinux/
に従ってインストール:

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo sh -c "echo 'deb https://apt.dockerproject.org/repo ubuntu-xenial main' > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
$ sudo apt-get update
$ sudo apt-get install docker-engine
$ sudo service docker start
$ sudo docker run hello-world

NVIDIA Dockerのインストール

https://github.com/NVIDIA/nvidia-docker#quick-start
に従ってインストール:

# Install nvidia-docker and nvidia-docker-plugin
$ wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.0-rc.3/nvidia-docker_1.0.0.rc.3-1_amd64.deb
$ sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

# Test nvidia-smi
$ sudo nvidia-docker run --rm nvidia/cuda nvidia-smi

TensorFlowのDockerイメージを作成

http://blog.engineer.adways.net/archives/49085521.html
こちらを参考に、Dockerファイルを作成。
上記のサイトでは、nvidia/cuda:7.5-cudnn4-develをベースにしていたが、GPUを使いたいのでnvidia/cuda:7.5-cudnn4-develをベースに変更する。この場合、上記サイトに記載のlibcudnn.soのシンボリックリンクは最初からあるので不要。

Dockerfile
FROM nvidia/cuda:7.5-cudnn4-devel

RUN apt-get update
RUN apt-get install -y --no-install-recommends python-pip python-dev build-essential git
RUN pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl

# コンテナ容量節約のため
RUN rm -rf /var/lib/apt/lists/*

ENV LD_LIBRARY_PATH /usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

ENTRYPOINT ["/bin/bash"]

上記をDockerfileという名前で保存して、保存したフォルダで下記のようにビルドしてイメージを作成する。

$ sudo nvidia-docker build -t cuda:7.5-cudnn4-devel-tf0.9 .

イメージができたら、必要なデータセットとかのパスをマウントしながら起動してサンプルが動けばOK。

$ sudo nvidia-docker run -it -v ~:/share:rw cuda:7.5-cudnn4-devel-tf0.9

しかし、下記を見る限りリポジトリには、Ubuntu 16.04向けはCUDA8.0RC+cuDNN5.1の組み合わせしかないようなので、Ubuntu 14.04向けのコンテナをベースにしてしまっていて、Ubuntu 14.04のパッケージを持ってきているように見える。
https://github.com/NVIDIA/nvidia-docker

まぁNVIDIAの人が大丈夫って言っているからいいか…
https://github.com/NVIDIA/nvidia-docker/issues/81

And yes, having a 16.04 host with 14.04 containers should work just fine.

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8