Hello Wor.log

IT系大学生4人による備忘録のようなもの

ubuntu18.04 dockerでtensorflow GPU

CPPXのXです。

dockerでtensorflowを使うまでの環境導入をまとめておこうと思います。 GPUも使えるようにします。
自分用メモ感強いです。

dockerの導入から、nvidia-docker2の導入、tensorflowのコンテナを落とすところまで書きます。

1080ti 2080tiどちらでも動きました。

では目次です。

環境

  • ubuntu 18.04(16.04でも同手順で動きました)
  • 2080ti
  • 1080ti

この手順通りにやると、最後のtensorflowのコンテナでcuda10以上が要求されます。
ですが、tensorflowのバージョンを指定するだけなので、必須じゃないです。
cuda周りの導入は下の記事にまとめてあるので導入する際は是非。

ubuntu18.04 + 2080ti + cuda10 + tensorflow を整える - Hello Wor.log

dockerの導入

公式通りで導入できました。

Get Docker CE for Debian | Docker Documentation

打つコマンドをまとめておきます。

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

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

sudo apt-get install docker-ce docker-ce-cli containerd.io

dockerのグループに所属しておきます。

getent group docker
sudo gpasswd --add $USER docker
sudo systemctl restart docker
exit

nvidia-docker2の導入

GPUを触れるようにしていきます。
こちらも公式通りです。

Repository configuration | nvidia-docker

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
sudo apt-get install nvidia-docker2
sudo systemctl restart docker
exit

ここで一旦確認する場合は以下でできます。
なんかエラーが出てくるようであれば、コンテナのタグを変えてみるといいかもしれません。(自分の場合は別タグでエラーが出てきました。)
手元に入っているcudaのバージョンが違うとエラーが出てきます。

nvidiaのdocker hub置いておきます。
https://hub.docker.com/r/nvidia/cuda/tags

docker run --runtime=nvidia --rm -it nvidia/cuda:10.0-base-ubuntu18.04 nvidia-smi

tensorflow

tensorflowのコンテナを落としてきます。
ついでにGPUが見えているか確認します。

cuda10以上が要求されます。(10未満の人はおまけ参照)

tensorflowのdocker hub置いておきます。
https://hub.docker.com/r/tensorflow/tensorflow

python3

docker run --runtime=nvidia --rm -it tensorflow/tensorflow:latest-gpu-py3 nvidia-smi

ついでにtensorflowからGPUが見えているかも確認します。

docker run --runtime=nvidia --rm -it tensorflow/tensorflow:latest-gpu-py3 python

python内で、

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

GPUが見えていればokです。
見えていなければ応援しています。

おまけ cuda10未満

docker run --runtime=nvidia --rm -it tensorflow/tensorflow:latest-gpu-py3 nvidia-smi

のところでcudaがどうたらみたいなエラーが出ると思います。
cudaのバージョンに合った適切なtensorflowのバージョンを指定しましょう。

cuda9.0ならtensorflow 1.10.0で動きます。

docker run --runtime=nvidia --rm -it tensorflow/tensorflow:1.10.0-gpu-py3 nvidia-smi

おわり