CaffeをCPUモードでpyenvとAnacondaを使いUbuntu 14.04にインストールする

  • 8
    いいね
  • 0
    コメント

 CaffeをクラウドにインストールするときはGPUクラウドを使うと高速に動作しますが、GPUやCUDAがない環境でもCPUだけで動作するモードでビルドすることができます。今回はIDCFクラウドのUbuntu 14.04にインストールしてみます。

準備

 最初にbuild-essentialなどインストールして環境を準備します。

$ sudo apt-get update
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y git vim

pyenvとAnaconda

 AnacondaはPythonでデータ分析をするときによく使うパッケージをまとめてインストールすることができます。Python環境を構築するときは、pyenvなどのバージョン管理ツールを使うとシステムのPythonと分離できるので安心です。データサイエンティストを目指す人のpython環境構築 2016を参考にしてインストールしていきます。

 pyenvをインストールします。

$ 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

 Python 2.7のAnacondaを調べます。最新版はanaconda2-4.0.0です。

$ pyenv install -l | grep anaconda2
  anaconda2-2.4.0
  anaconda2-2.4.1
  anaconda2-2.5.0
  anaconda2-4.0.0

 Anacondaをインストールしてグローバルに設定します。

$ pyenv install anaconda2-4.0.0
$ pyenv rehash
$ pyenv global anaconda2-4.0.0

 pyenvとanacondaを共存させる時のactivate衝突問題の回避策3種類から、activateをフルパスで実行する方法を使います。

$ echo 'alias activate="source $PYENV_ROOT/versions/anaconda2-4.0.0/bin/activate"' >> ~/.bashrc
$ source ~/.bashrc

 Python 2.7.11がインストールされました。

$ python
Python 2.7.11 |Anaconda 4.0.0 (64-bit)| (default, Dec  6 2015, 18:08:32)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>>

必要なパッケージ

 CaffeのUbuntu Installationの手順に従ってインストールします。OpenCVlibopencv-devだけcondaでインストールするので手順から除外します。

Protocol BuffersLevelDBSnappyHDF5をインストールします。

$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler

 OpenCVはlibopencv-devをapt-getでインストールするとPyCaffeがFailed to initialize libdc1394Pのエラーを出すので、condaからインストールします。

$ conda install opencv
$ conda list opencv
opencv                    2.4.10              np110py27_1

 OpenCVは2.4.10がインストールされました。チャンネルはBinstarでなくても良いみたいです。

 BoostとCaffeのデフォルトのBLASのATLASをインストールします。condaからインストールすることもできます。

$ sudo apt-get install -y --no-install-recommends libboost-all-dev
$ sudo apt-get install -y libatlas-base-dev 

 gflagglogLMDBをインストールします。

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

インストール

 Caffeはホームディレクトリ直下にインストールします。

$ git clone https://github.com/BVLC/caffe.git ~/caffe
$ cd ~/caffe

 Makefile.configを作成して編集します。

$ cp Makefile.config.example Makefile.config

 GPUを使わずCPUのみ使うので以下をアンコメントします。

~/caffe/Makefile.config
CPU_ONLY := 1

 pyenvでインストールすると、ANACONDA_HOME$PYENV_ROOT/versions/anaconda2-4.0.0になります。PYTHON_INCLUDEPYTHON_LIBはコメントアウトしてAnacondaを使うようにします。
 

~/caffe/Makefile.config
#PYTHON_INCLUDE := /usr/include/python2.7 \
#               /usr/lib/python2.7/dist-packages/numpy/core/include
ANACONDA_HOME := $(PYENV_ROOT)/versions/anaconda2-4.0.0
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
                $(ANACONDA_HOME)/include/python2.7 \
                $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
#PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

 Caffeのビルド中にlibgtk-x11-2.0.so.0が見つからないのでこちらを参考にインストールしておきます。

$ sudo apt-get install libgtk2.0-0
~/.bashrc
$ echo "export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$PYENV_ROOT/versions/anaconda2-4.0.0/lib" >> ~/.bashrc
$ source ~/.bashrc

ビルド

 Caffeをビルドします。CPUのコア数に応じてビルド時のスレッド数を変更します。今回は4コアなので-j4を追加します。

$ make all -j4
$ make test -j4
$ make runtest

 make runtestを実行してCaffeのインストールを確認します。

PyCaffe

 CaffeのPythonインターフェースのPyCaffeをビルドします。最初に必要なパッケージをpipでインストールしてからmakeします。

$ cd ~/caffe
$ pip install --upgrade pip
$ pip install -r ./python/requirements.txt
$ make pycaffe -j4
$ make pytest

 PyCaffeはパッケージからインストールしていないので、PYTHONPATHを追加します。

$ echo "export PYTHONPATH=$PYTHONPATH:$HOME/caffe/python" >> ~/.bashrc
$ source ~/.bashrc

 import caffeでエラーが出なければインストール成功です。

$ python -c 'import caffe'