12
14

More than 5 years have passed since last update.

Ubuntu (GeForce)× Nvidia-docker2 で Keras(Tensorflow-gpu) の環境構築

Last updated at Posted at 2018-09-01

結論

UbuntuとNvidia-docker2を使うことで、GPU付きPCにおいて、Keras(Tensorflow)を利用可能なPythonプログラム環境を超簡単に構築できる!

環境

・Ubuntu 18.04
・GeForce GTX1080

すること

・NVIDIAドライバのインストール
・docker-ceのインストール
・Nvidia-docker2のインストール
・コンテナ内で、GPUを使って、Kerasでプログラムを動かす。

(ネットの記事によっては、ホスト側にCUDAをインストールしているが、コンテナ内で実行するにあたって必要ないようだ。)

はじめに

CentOS7にTensorflow-gpuを使える環境を構築したことがあるものの、そのときはドライバーを入れたり、CUDAを入れたりで1日を費やした。ネットの情報を見ると、UbuntuとNvidia-dockerで簡単に環境構築できそうだったので、今回、チャレンジしてみた。その過程をここで共有する。

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

多くのネット記事にあるのは、手動でNvidiaドライバをダウンロードして、既存のnouveauドライバを無効化して、、、という手順だが、以下のように、aptで一気にインストールすることもできる。

まずは、aptのリポジトリに Geforce GTX1080 で利用できる NVIDIA ドライバがあるか確認する。
https://www.nvidia.co.jp/Download/index.aspx?lang=jp にて、GPU情報等を入力して、必要なドライバのバージョンを調べる。私の環境では以下であった。

  Linux x64 (AMD64/EM64T) Display Driver
  バージョン: 390.77
  リリース日: 2018.7.16
  オペレーティングシステム: Linux 64-bit
  言語: Japanese
  ファイルサイズ: 78.89 MB

次に、NVIDIA ドライバを提供している xorg-edgers レポジトリを追加する。

 $ sudo add-apt-repository ppa:xorg-edgers/ppa -y
 $ sudo apt-get update
 $ sudo apt-get upgrade

apt-get でインストールできるドライバ一覧を検索する。

 $ sudo apt-cache search "^nvidia-[0-9]{3}$"

バージョン390があるから、aptでinstallできる!
(手動インストールに比べて、nouveauの無効化とかが必要なく、かなり楽になる)
以下で、nvidia-driverのインストール

$ sudo apt install nvidia-driver-390
$ sudo reboot

CentOS7のときに、何度もリブートして、失敗して、を繰り返したことを思うと、これだけでも、ただただ感動 (T T)

docker-ceのインストール

ネットの記事によっては、nvidia-dockerをインストールしたら、docker-ceもインストールされる的なことが書いてあった。私も次に書くnvidia-dockerだけをインストールして試したものの、うまくいかなかった。なので、docker-ceのインストールも必要で、先に書いておく。

$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce

Nvidia-docker2のインストール

続いて、以下でnvidia-docker2をインストールする。

$ 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 -y nvidia-docker2

以下で、動作確認。

$ sudo pkill -SIGHUP dockerd
$ docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

コンテナ内で、GPUを使って、Kerasでプログラムを動かす。

以下で、tensorflow-gpuのイメージをとってきて動かして、コンテナに入る。

$ sudo nvidia-docker run -it tensorflow/tensorflow:latest-gpu-py3 bash

コンテナ内で以下を実行。

$ pip3 install keras
$ apt-get update
$ apt-get install wget
$ wget https://raw.githubusercontent.com/fchollet/keras/master/examples/mnist_cnn.py
$ python3 mnist_cnn.py

これで、MNISTがGPUを使いながら実行される!! なんてお手軽に構築できたことか。。。

12
14
1

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
12
14