はじめに
AWSで新しいGPUインスタンスであるP2系が出ました。
http://dev.classmethod.jp/cloud/p2-instance-type/
Deep learningのライブラリがプリインストールされているAMI(https://aws.amazon.com/marketplace/pp/B01M0AXXQB)
もあるのですが、CUDAやCuDNNが入っていないらしいのでせっかくということでインストールしてみました。
OS:ubuntu 14.04
CUDA: 7.5
CuDNN: 5.1
準備
必要なライブラリ系のインストール
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install -y build-essential git python-pip python-dev libxml2-dev libxslt1-dev zlib1g-dev libcurl4-openssl-dev libatlas-base-dev linux-image-extra-virtual libopencv-dev python-numpy
sudo apt-get autoremove -y
ホスト側のドライバを無効にする
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
を実行
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
再起動をする
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
sudo reboot
nvidia-driverのインストール
事前にGPUに適合するドライバを調べておく
P2インスタンスのGPUはK80
sudo apt-get install -y linux-source
sudo apt-get install -y linux-headers-`uname -r`
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/352.99/NVIDIA-Linux-x86_64-352.99.run
sudo chmod +x NVIDIA-Linux-x86_64-352.99.run
sudo ./NVIDIA-Linux-x86_64-352.99.run
再起動しておく
CUDA+CuDNNのインストール
wget http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
sudo apt-get update -y
sudo apt-get install cuda -y
CuDNNは以下のサイトから登録し、アンケートに答えた後DL
https://developer.nvidia.com/cudnn
tar xzf cudnn-7.5-linux-x64-v5.1.tgz
sudo cp -a cuda/lib64/* /usr/local/lib/
sudo cp -a cuda/include/* /usr/local/include/
sudo ldconfig
.bashrc
を編集
export PATH=$PATH:/usr/local/cuda-7.5/bin
export LD_LIBRARY_PATH=:/usr/local/cuda-7.5/lib64
source .bashrc
Caffeインストール
gitからclone
sudo apt-get update && sudo apt-get upgrade;
# 上と重複もあるが気にしない。。。
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml python-numpy;
#sudo easy_install pillow;
git clone https://github.com/BVLC/caffe.git
cd caffe;
cat python/requirements.txt | xargs -L 1 sudo pip install;
makeする
cp Makefile.config.example Makefile.config
echo USE_CUDNN := 1 >> Makefile.config
make all -j4;
make test -j4;
make runtest -j4;
サンプル実行
./data/mnist/get_mnist.sh;
./examples/mnist/create_mnist.sh;
./examples/mnist/train_lenet.sh;
結果抜粋
I1017 07:48:29.925045 20325 solver.cpp:454] Snapshotting to binary proto file examples/mnist/lenet_iter_10000.caffemodel
I1017 07:48:29.932385 20325 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/mnist/lenet_iter_10000.solverstate
I1017 07:48:29.936767 20325 solver.cpp:317] Iteration 10000, loss = 0.00284106
I1017 07:48:29.936818 20325 solver.cpp:337] Iteration 10000, Testing net (#0)
I1017 07:48:30.079130 20325 solver.cpp:404] Test net output #0: accuracy = 0.9914
I1017 07:48:30.079165 20325 solver.cpp:404] Test net output #1: loss = 0.0269921 (* 1 = 0.0269921 loss)
I1017 07:48:30.079176 20325 solver.cpp:322] Optimization Done.
I1017 07:48:30.079183 20325 caffe.cpp:254] Optimization Done.
うまくいっていることを確認できましたね。
Pythonで使えるようにする
sudo apt-get install -y python-dev python-pip python-numpy python-skimage gfortran
make pycaffe -j4;
echo 'export PYTHONPATH=~/caffe/python/:$PYTHONPATH' >> ~/.bashrc
source .bashrc
あとはPythonでimport caffe
をすればよい。
もしGDK_IS_DISPLAY (display)' failed
と怒られた場合は以下を参考に、~/.config/matplotlib/matplotlibrc
を編集。
https://github.com/BVLC/caffe/issues/861
backend: Agg
Pythonライブラリ系で怒られた場合はpip install --upgrade pip
の後再度下記を実行。
cat python/requirements.txt | xargs -L 1 sudo pip install;