仮想マシン上にCaffeをインストール
元々私のPCにはCaffeやTensorFlow等の機械学習ライブラリの学習用にWindows8.1とは別にUbuntuもインストールされており、デュアルブート出来たのですがUbuntuを起動していると勿論Winodwsのソフトは使えず、それが原因で機械学習の勉強から足が遠のいていました。そこで、今回はWindows上の仮想マシンに勉強用の環境を整えようと思います。内容的には同じ環境をデュアルブートされている方のUbuntu上に整える時のための備忘録になるため、真新しい話などはありません。ほぼ参考元と同一になります。
環境
ホストOS:Windows8.1
ゲストOS:Ubuntu 16.04 LTS(VMware Player)
仮想マシンのセットアップは既に済んでいるとします
Caffeの導入
0.構成の予定
今回は仮想マシン上なのでGPUは使えない、導入しておいたほうがCaffe以外にも役に立ってとても便利ということで、
・CPUモード
・Anaconda使用
という構成でビルドします。なお、Anaconda周りの環境構築はここに書くと長くなってしまうので参考元を参照してください。この記事ではpyenvを使用し、anaconda2-4.1.0を導入した場合で進めていきます。
1.お約束
各種ソフトウェアのインストール前に
sudo apt-get update
sudo apt-get upgrade
はしておきましょう
2.CUDAのインストール
sudo apt-get install nvidia-cuda-toolkit
3.BLASのインストール
sudo apt-get install libatlas-base-dev
4.その他の依存関係のインストール
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
5.Caffeのダウンロード
sudo apt-get install git
git clone https://github.com/BVLC/caffe.git
6.Makefile.configの設定
Makefile.config.exampleをコピーしてMakefile.configを作成
・CUDA_DIR := /usr/local/cuda → コメントアウト
・# CUDA_DIR := /usr → アンコメント
・# CPU_ONLY := 1 → アンコメント
・PYTHON_INCLUDE := /usr/include/python2.7 → コメントアウト
・PYTHON_LIB := /usr/lib →コメントアウト
・ANACONDA_HOME :=~~~
→ ANACONDA_HOME := $(PYENV_ROOT)/versions/anaconda2-4.0.0
・PYTHON_INCLUDE := $(ANACONDA_HOME)~~~
→PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
・INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeの行に
/usr/include/hdf5/serialのパスを追加
・LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/libの行に
/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serialのパスを追加
・#WITH_PYTHON_LAYER := 1 → アンコメント
このようにMakefile.configを編集する
7.エラー解決のコマンド
このままインストールするとエラーが発生するので
find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.8.0.2 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.8.0.2 libhdf5_hl.so
を実行
caffe/pyrhonディレクトリで
for req in $(cat requirements.txt); do pip install $req; done
を実行
8.コンパイル
make -j8 all
make -j8 test
make -j8 runtest
なお、この構成でやってみるとruntest時にerror127が発生し、testをpass出来ません。この問題はanaconda内のlibフォルダへのパスを通すことで解決しました。
pip install --upgrade pip
pip install -r ./python/requirements.txt
make -j8 pycaffe
make -j8 pytest
9.Python用の設定
PyCaffeのパスを追加します
echo "export PYTHONPATH=$PYTHONPATH:$HOME/caffe/python" >> ~/.bashrc
source ~/.bashrc
最後にimport caffeでエラーが出ないか確認します。でなければビルドは成功です。
python -c 'import caffe'
あとがき
以前にcaffeを導入した時はCPUモードでのビルドではあまり悩まず、GPU周りでかなり困った覚えがありました。しかし、今回はその当時とは導入する方法が違っていてCPUモードでのビルドなのにかなり戸惑い、手間取りました。当時と同じノリでやったら全くうまく行かなかったので...とりあえずかなり時間はかかりましたがなんとか導入は成功したのでこれで良しとしておきましょう。次はTensorFlowかChainer辺りを導入しましょうか。調べてみるとChainerは自分が触ってみた当時よりもかなりコードが書きやすくなってるみたいなので楽しみです。