素人がCaffeを使ってDeepLearningしてみた(導入編)

  • 50
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

この記事は
1. Deep Learningって何?を説明する 概要編
2. Deep Learningライブラリの一つであるCaffeのインストールする 導入編(この投稿)
3. Caffeを使って簡単な学習をさせてみる 実践編
の三本構成になっています

タイトルにもありますが、Deep Learningの研究者でもなんでもない素人が残した記録程度の投稿なので、間違った記述があるかもしれない点はご容赦いただき、読んでいただくようお願いします
(もしおかしい点があればコメントで指摘していただけると嬉しいです)

インストール環境

OS:Ubuntu 14.04 LTS
CPU: Core i7 2.93GHz
GPU: GeForce GTX 960
メモリ: 4GB

Caffeインストール手順

基本的にはCaffe公式ページに書いてある通りにやります
ここでは、構成を下記の様にしますが、環境に合わせて適宜変えてください
CUDA 7.0
cudnnを使う
ATLAS
Caffe(githubのマスターにある最新)
PyCaffeも使えるようにする

General dependenciesのインストール

素直に公式に従う

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev

Remaining dependencies(14.04用)のインストール

これも素直に公式に従う

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

ATLASのインストール

ATLASって何?って感じですが、数値計算(多分行列の微分とかする)用のライブラリ
Ubuntuなら簡単

sudo apt-get install libatlas-base-dev

CUDAのインストール(GPU使う人だけ)

Ubuntuだとapt-getでいけるって書いてあるのですが、いろいろ見たところnVidia公式から取ってきて自前で入れたほうがいいっぽいので、自前で入れることにしました
(最新は7.5のようですが、7.0のときと同じだと思うのでそのまま書きます)

CUDA本体のインストール

nvidiaのdeveloperサイトからCUDA ZONE→CUDA DOWNLOADSと進んでCUDAのインストーラを落とします
その後(xxxは適宜落としたversionに読み替えてください)インストーラを実行します

chmod +x cuda_xxx_linux.run
sudo ./cuda_xxx_linux.run

あとは画面の指示に従うだけ

cudnnのインストール

必須ではないようですが、公式によると、入れたほうが速いらしいので入れます

cuDNN Caffe: for fastest operation Caffe is accelerated by drop-in integration of NVIDIA cuDNN. To speed up your Caffe models, install cuDNN then uncomment the USE_CUDNN := 1 flag in Makefile.config when installing Caffe. Acceleration is automatic. The current version is cuDNN v3; older versions are supported in older Caffe.

ユーザ登録

上のnvidiaのdeveloperサイトからdeveloper登録しておきます

インストール

登録後、cudnnがダウンロードできるようになるので、ここからダウンロードする
そうしたら

sudo cp cudnn.h /usr/local/cuda/include/
sudo cp *.so /usr/local/cuda/lib64/
sudo cp *.a /usr/local/cuda/lib64/

として、ライブラリをコピーします
加えて、展開したファイル内にあるシンボリックリンクと同様のものを、
/usr/local/cuda/lib64内に作成してください(以下はダウンロード時の6.5のとき)

cd /usr/local/cuda/lib64/
sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5 libcudnn.so

Caffeのインストール

これで準備は整いましたので早速入れていきます(pythonまわりで必要なものは別途準備出来ているものとします)

Caffeをダウンロード

ここが何故か公式にちゃんと書いてくれてないんですが、githubから落とすのが正式なようです

git clone https://github.com/BVLC/caffe.git

PyCaffeに必要なもののインストール

公式にある通り

for req in $(cat requirements.txt); do pip install $req; done

で終わりです。requirements.txtはcaffe/pythonに有ります
自分の環境ではgfortranが入っていなかったため、scipyのインストールで一回こけました。

error: Setup script exited with error: library dfftpack has Fortran sources but no Fortran compiler found

そのときはgfortranを入れてください。

sudo apt-get install gfortran

Makefile.configの修正

これが重要です。ここをミスるとないものを使ってビルドしようとしたり、エラーのどつぼにハマる可能性があります
まずMakefile.config.exampleをコピーしてMakefile.configの原型をつくります

cp Makefile.config.example Makefile.config

Makefile.configが次のようになっていることを確認します。(環境によって適宜変えてください)
USE_CUDNN := 1 (cudnnを使う場合)
CPU_ONLY := 1 (GPUを使う場合コメントアウト)
CUDA_DIR := /usr/local/cuda (CPU_ONLYの場合はたぶんいらない)
CUDA_ARCH := -gencode arch=compute...のどの行もコメントアウトされていない(CPU_ONLYの場合はたぶんコメントアウト)
BLAS := atlas
PYTHON_INCLUDE := /usr/include/python2.7 \ /usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
あとはexampleのまま

makeする

以上がおわったらもうすぐです。プロジェクトのルートでmakeしてください
(j8の部分はなくてもOKです。数字はCPUのコア数に合わせて適宜変えてください)

make all -j8

正常にinstallできたかテストを回す

ここまできちんとできているか確認するため最後にテストをします

make runtest

次のようなログが数分続きます

[----------] 3 tests from DeconvolutionLayerTest/0, where TypeParam = caffe::CPUDevice<float>
[ RUN      ] DeconvolutionLayerTest/0.TestSetup
[       OK ] DeconvolutionLayerTest/0.TestSetup (0 ms)
[ RUN      ] DeconvolutionLayerTest/0.TestSimpleDeconvolution
[       OK ] DeconvolutionLayerTest/0.TestSimpleDeconvolution (1 ms)
[ RUN      ] DeconvolutionLayerTest/0.TestGradient
[       OK ] DeconvolutionLayerTest/0.TestGradient (623 ms)
[----------] 3 tests from DeconvolutionLayerTest/0 (624 ms total)

最後に次のようにPASSEDが出たら成功です

[==========] 1404 tests from 222 test cases ran. (221949 ms total)
[  PASSED  ] 1404 tests.

もし失敗した場合はMakefile.configの設定があっているかどうか確認してやり直してみてください。

さいごに

おつかれさまでした。
次の記事では実際にCaffeを使ってDeep Learningの学習を走らせて見たいと思います