AWSのGPUインスタンスにTensorflow/Keras環境を構築する 2017年6月版

概要

AWSのGPUインスタンスに、TensorflowおよびKerasがGPUで動作する環境を構築します。

こういった記事がn番煎じなのは承知の上ですが、それでもネットには各々のタイミングで書かれ最新かどうかも分からない資料が散逸しているので、こういうものと割り切って今の現状を書きます。まだまだ手作業な部分がありつつも、NouveauやCUDA Toolkitの手動インストールから解放されたようです。

参考資料


基本的には下記URLの内容を参考にします。細かなバージョン等は変更を加えています。

環境

  • OS: Ubuntu Server 16.04 LTS (HVM), SSD Volume Type ami-afb09dc8
  • Instance type: g2.2xlarge, g2.8xlarge

作業

GPUインスタンスのセットアップ

選択するOSはUbuntu 16.04、あとの細かな設定は割愛します。ここでの注意としては、CUDA Toolkitのファイルがでかいので、ストレージのサイズはデフォルトの8GBではなく少し多めにしておいた方がいいでしょう。

NVIDIA Driverのインストール

$ sudo add-apt-repository ppa:graphics-drivers/ppa -y
$ sudo apt-get update
$ sudo apt-get install -y nvidia-375 nvidia-settings

CUDA Toolkitのインストール

CUDA Toolkitをインストールします。今回は8.0を利用します。ここではwgetで取得していますが、下記URLから「Linux > x86_64 > Ubuntu > 16.04 > deb (local)」で取得したインストーラーと同じです。

CUDA Toolkit Download | NVIDIA Developer

$ wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
$ sudo apt-get update
$ sudo apt-get install -y cuda nvidia-cuda-toolkit

ここで、nvidia-sminvcc --versionで正常にインストールされたことを確認します。

cuDNNのインストール

追記: 下記URLから直接ダウンロードすることができるようです。
$ wget http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz

cuDNNはNVIDIAのサイトからダウンロードしてAWSのインスタンスに転送する必要があります。

下記URLのダウンロードボタンを押して「cuDNN Software License Agreement」に同意し、「Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0」の「cuDNN v5.1 Library for Linux」(ファイル名:cudnn-8.0-linux-x64-v5.1.tgz)をダウンロードします。要ログイン。

NVIDIA cuDNN | NVIDIA Developer

ダウンロードしたファイルをAWSのGPUインスタンスにコピーします。

# local
$ scp cudnn-8.0-linux-x64-v5.1.tgz aws-gpu-instance:

解凍して中のファイルを配置します。

$ tar zxvf cudnn-8.0-linux-x64-v5.1.tgz 
$ sudo mv cuda/lib64/* /usr/local/cuda/lib64/
$ sudo mv cuda/include/* /usr/local/cuda/include/

環境変数の設定

利用しているシェルの設定ファイルに下記設定を追加します。今回は.bashrcに追記しました。

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

TensorflowおよびKerasをインストールする

さて、ようやくTensorflowとKerasのセットアップです。Pythonの環境構築は割愛しますが、この記事に従うとpyenv/virtualenvを利用したPython3の環境が構築できます。

$ pip install tensorflow-gpu
$ pip install keras

GPUが利用できるかどうかテストする

試しにKerasのソースコードをダウンロードして、中のexampleを幾つか動かしてみます。

$ git clone https://github.com/fchollet/keras.git
$ cd keras/examples
$ python mnist_cnn.py

何か適当に動かしてみて、nvidia-smiでGPU-Utilが上がったり、ローカルやCPU利用版より明らかに早ければOKでしょう。お疲れ様でした。

参考:試行錯誤時のエラー

参考URLの一つに従ってインストールすると、cuDNNのバージョン差異でエラーになります。v5.0ではなくv5.1を利用しましょう。

Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5110 (compatibility version 5100)