p2インスタンス上にCUDA, cuDNNを用いたChainer環境を構築する

  • 2
    いいね
  • 0
    コメント

やったこと

AWSのp2.xlargeにCUDA, cuDNNを利用可能なChainer環境を作成してみました。

前提

以下のバージョンを利用しました。(実施時点のものです)

version
OS Ubuntu14.04
pyenv 1.0.8
Anaconda 4.3.0
python 3.6.2
CUDA 8.0
cuDNN v5.1
Chainer 1.2.21

必要なライブラリのインストール

sudo apt-get install -y git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

pyenvのインストール

pyenvのインストールは以下を参考にしました。
http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

Anacondaのインストール

Anacondaのインストールは以下を参考にしました。
http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c

pyenv install -l | grep anaconda
pyenv install anaconda3-4.3.0
pyenv rehash
pyenv global anaconda3-4.3.0
echo 'export PATH="$PYENV_ROOT/versions/anaconda3-4.3.0/bin/:$PATH"' >> ~/.bashrc
source ~/.bashrc
conda update conda
python --version

CUDAのインストール

wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64-deb
sudo dpkg -i cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64-deb
sudo apt-get update
sudo apt-get install cuda -y
echo 'export CUDA_HOME=/usr/local/cuda' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CUDA_HOME}/lib64' >> ~/.bashrc
echo 'export PATH=$PATH:${CUDA_HOME}/bin' >> ~/.bashrc

cuDNNのインストール

別途nvidiaのサイトから取得。

mkdir .cudnn
tar xvzf ./cudnn-8.0-linux-x64-v5.1.tgz
mv ./cuda ./.cudnn
mv ./.cudnn/cuda ./.cudnn/5.1
sudo ln -s ~/.cudnn/5.1/include/cudnn.h /usr/local/cuda/include/cudnn.h
sudo ln -s ~/.cudnn/5.1/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

Chainerのインストール

pip install chainer

動作確認

mkdir mnist
wget https://raw.githubusercontent.com/pfnet/chainer/master/examples/mnist/train_mnist.py ./mnist
# GPU使用
time python ./mnist/train_mnist.py -g 0 -e 10
# GPU不使用
time python ./mnist/train_mnist.py -g -1 -e 10

実行時間に差が出たら成功です。