概要
AWSのGPUインスタンスに、TensorflowおよびKerasがGPUで動作する環境を構築します。
こういった記事がn番煎じなのは承知の上ですが、それでもネットには各々のタイミングで書かれ最新かどうかも分からない資料が散逸しているので、こういうものと割り切って今の現状を書きます。まだまだ手作業な部分がありつつも、NouveauやCUDA Toolkitの手動インストールから解放されたようです。
参考資料
基本的には下記URLの内容を参考にします。細かなバージョン等は変更を加えています。
- How to Set Up a Deep Learning Environment on AWS with Keras/Theano
- AWS E2 G2インスタンス上にKeras環境を構築する 2017年2月版 - Qiita
環境
- 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-smi
とnvcc --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)