##環境
GPU GTX1070
ubuntu 14.04
CUDA 8.0RC
cuDNN 5.1
##これまでインストールしたパッケージ
chainer 1.14.0
TensorFlow
OpenAI Gym
Theano
など
##はじめに
最近Caffeを使う必要が出てきたので、インストールを試みる。これまでUbuntu15や16にCaffeを入れたことはあったが、14.04は初めて。
TD72氏のこのサイト
http://qiita.com/TD72/items/bcb243ee02760ea1d8bb
に従って進める。
##依存関係のインストール
現状、何がインストールされてて、何がされてないのか把握してないので、一括して入れてみる。
sudo apt-get install libatlas-base-dev libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
適当なディレクトリにCaffeをgit cloneする。
git clone https://github.com/BVLC/caffe.git
##cuDNNの設定
cd caffe
cp Makefile.config.example Makefile.config
Makefile.configの5行目をアンコメントアウトする。
USE_CUDNN :=1
##コンパイル
CPUを4コア使って並列処理する。
make -j4 all
ここでなにやらエラーが出た。
CXX src/caffe/data_reader.cpp
PROTOC src/caffe/proto/caffe.proto
CXX src/caffe/util/db_leveldb.cpp
CXX src/caffe/util/insert_splits.cpp
CXX src/caffe/util/benchmark.cpp
src/caffe/data_reader.cpp:1:28: fatal error: boost/thread.hpp: そのようなファイルやディレクトリはありません
#include <boost/thread.hpp>
^
compilation terminated.
make: *** [.build_release/src/caffe/data_reader.o] エラー 1
make: *** 未完了のジョブを待っています....
src/caffe/util/benchmark.cpp:1:53: fatal error: boost/date_time/posix_time/posix_time.hpp: そのようなファイルやディレクトリはありません
#include <boost/date_time/posix_time/posix_time.hpp>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/benchmark.o] エラー 1
In file included from ./include/caffe/util/db.hpp:6:0,
from ./include/caffe/util/db_leveldb.hpp:10,
from src/caffe/util/db_leveldb.cpp:2:
./include/caffe/common.hpp:4:32: fatal error: boost/shared_ptr.hpp: そのようなファイルやディレクトリはありません
#include <boost/shared_ptr.hpp>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/db_leveldb.o] エラー 1
In file included from src/caffe/util/insert_splits.cpp:7:0:
./include/caffe/common.hpp:4:32: fatal error: boost/shared_ptr.hpp: そのようなファイルやディレクトリはありません
#include <boost/shared_ptr.hpp>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/insert_splits.o] エラー 1
このサイトを参考にして、libboostとやらをインストールしてみる。
http://stackoverflow.com/questions/28867791/building-caffe-on-ubuntu-make-cant-find-boosts-include-files
sudo apt-get install --no-install-recommends libboost-all-dev
再度makeすると、今度は別のエラーが出た。
make -j4 all
CXX .build_release/src/caffe/proto/caffe.pb.cc
CXX src/caffe/data_reader.cpp
CXX src/caffe/util/db_leveldb.cpp
CXX src/caffe/util/insert_splits.cpp
In file included from ./include/caffe/util/db.hpp:6:0,
from ./include/caffe/util/db_leveldb.hpp:10,
from src/caffe/util/db_leveldb.cpp:2:
./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: そのようなファイルやディレクトリはありません
#include <gflags/gflags.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/db_leveldb.o] エラー 1
make: *** 未完了のジョブを待っています....
In file included from src/caffe/util/insert_splits.cpp:7:0:
./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: そのようなファイルやディレクトリはありません
#include <gflags/gflags.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/insert_splits.o] エラー 1
In file included from src/caffe/data_reader.cpp:6:0:
./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: そのようなファイルやディレクトリはありません
#include <gflags/gflags.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/data_reader.o] エラー 1
gflagsどうたらこたら言ってるので、このサイト
https://github.com/BVLC/caffe/wiki/Ubuntu-14.04-ec2-instance
を参考に、以下を実行。
wget https://github.com/schuhschuh/gflags/archive/master.zip
unzip master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make
sudo make install
この後再度makeを実行。またまた新たなエラーが出現。
make -j4 all
CXX src/caffe/data_reader.cpp
CXX src/caffe/util/db_leveldb.cpp
CXX src/caffe/util/insert_splits.cpp
CXX src/caffe/util/benchmark.cpp
In file included from ./include/caffe/util/db.hpp:6:0,
from ./include/caffe/util/db_leveldb.hpp:10,
from src/caffe/util/db_leveldb.cpp:2:
./include/caffe/common.hpp:6:26: fatal error: glog/logging.h: そのようなファイルやディレクトリはありません
#include <glog/logging.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/db_leveldb.o] エラー 1
make: *** 未完了のジョブを待っています....
In file included from src/caffe/util/insert_splits.cpp:7:0:
./include/caffe/common.hpp:6:26: fatal error: glog/logging.h: そのようなファイルやディレクトリはありません
#include <glog/logging.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/insert_splits.o] エラー 1
In file included from src/caffe/util/benchmark.cpp:3:0:
./include/caffe/common.hpp:6:26: fatal error: glog/logging.h: そのようなファイルやディレクトリはありません
#include <glog/logging.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/util/benchmark.o] エラー 1
In file included from src/caffe/data_reader.cpp:6:0:
./include/caffe/common.hpp:6:26: fatal error: glog/logging.h: そのようなファイルやディレクトリはありません
#include <glog/logging.h>
^
compilation terminated.
make: *** [.build_release/src/caffe/data_reader.o] エラー 1
このサイトを見ると、glogはcaffeの公式インストールガイドにprerequisitesとして記載されてるとのこと。
https://github.com/BVLC/caffe/issues/885
確かに、確認するとそのとおり。
Caffeのインストールガイド
http://caffe.berkeleyvision.org/install_apt.html
の中にそれらしき項目があるので、実行。
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
再度、make -j4 all
を実行。
make -j4 all
・・・・・
・・・・・
CXX/LD -o .build_release/examples/siamese/convert_mnist_siamese_data.bin
CXX/LD -o .build_release/examples/cifar10/convert_cifar_data.bin
CXX/LD -o .build_release/examples/mnist/convert_mnist_data.bin
CXX/LD -o .build_release/examples/cpp_classification/classification.bin
makeは成功したみたい。次はtest
。
make test
これも大丈夫っぽい。次はruntest
。
make -j4 runtest
・・・・・
・・・・・
[----------] Global test environment tear-down
[==========] 2081 tests from 277 test cases ran. (276632 ms total)
[ PASSED ] 2081 tests.
全てのruntestが大丈夫だったみたい。
##PythonでCaffeを使うための環境構築
念のため改めてpython系のパッケージ関係をインストール。
sudo apt-get install python-dev python-pip python-numpy python-skimage gfortran
・・・・・
・・・・・
以下の特別パッケージがインストールされます:
fonts-lyx gfortran-4.8 libamd2.3.1 libcamd2.3.1 libccolamd2.8.0
libcholmod2.1.2 libfreeimage3 libgfortran-4.8-dev libglade2-0
libumfpack5.6.2 python-dateutil python-decorator python-glade2
python-matplotlib python-matplotlib-data python-nose python-pyparsing
python-scipy python-skimage-lib python-support python-tz
提案パッケージ:
gfortran-multilib gfortran-doc gfortran-4.8-multilib gfortran-4.8-doc
libgfortran3-dbg python-gtk2-doc dvipng inkscape ipython python-configobj
python-excelerator python-matplotlib-doc python-tornado python-traits
python-wxgtk2.8 ttf-staypuft python-coverage python-nose-doc python-opencv
python-skimage-doc
以下のパッケージが新たにインストールされます:
fonts-lyx gfortran gfortran-4.8 libamd2.3.1 libcamd2.3.1 libccolamd2.8.0
libcholmod2.1.2 libfreeimage3 libgfortran-4.8-dev libglade2-0
libumfpack5.6.2 python-dateutil python-decorator python-glade2
python-matplotlib python-matplotlib-data python-nose python-pyparsing
python-scipy python-skimage python-skimage-lib python-support python-tz
・・・・・
インストールされてないパッケージもあった。やってよかった。
次はpipで必要なライブラリのインストール
sudo pip install -r python/requirements.txt
・・・・・
・・・・・
InsecurePlatformWarning
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
などとWarningが出た。versionの低いのインストールされたっぽい。言われた通り、upgradeする。
sudo pip install --upgrade pip
Successfully installed pip-9.0.1
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
なんかWarningが出てるが、とりあえず無視。
コンパイルする。
make -j4 pycaffe
パスを通す
export PYTHONPATH=/PATH_TO_CAFFE/python/:$PYTHONPATH
最後に
python
>>>import caffe
でimportされてたので終了。