概要
Ubuntu18.04環境でCaffeをビルドしたときにメモを残しておく。
このメモは、ubuntu16のCaffeビルド手順をベースにしている。
そのため、本来不要な作業も含まれているかもしれない。
errorやfailedは出ないことは確認したが、warningメッセージはいろいろ表示されていた。(今回は無視した)
なお、ちゃんと動作確認したわけではない。
主な参考サイト
https://gist.github.com/pjspillai/87625e1b6a129335eb363a4131a301f2
http://caffe.berkeleyvision.org/installation.html
PC環境
項目 | 値 |
---|---|
CPU | Core-i7 8700 |
GPU | RTX 2080 Ti |
メモリ | 64GB |
OS | 18.04.1 LTS (Bionic Beaver) |
Nvidia Driver | 430.34 |
項目 | 値 | インストール先パス |
---|---|---|
CUDA | 10.0.130 | /usr/local/cuda-10.0 |
cuDNN | 7.4.2.2 | $(HOME)/cudnn/cudnnv742_cuda100 |
Python環境 | Anaconda 3.5.2(Python3.6.8) | $(HOME)/anaconda/anaconda352 |
CUDAやcuDNN、Anacondaのインストール手順は省略。
作業項目
- 環境変数の設定
- openCV3のインストール
- OSパッケージのインストール
- Caffeソースコードの入手
- Makefile.configの作成
- Makefileの修正
- CMakeLists.txtの追記
- Caffeのビルド
- pycaffeのビルド
- 環境変数の設定
- 動作確認(import確認)
環境変数の設定
ホームディレクトリ直下の.bash_profileに、anaconda/cuda/cudnn用の環境変数を追記する。
.bash_profileはなければ作成する。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# anaconda(python3) "base" environment
export ANACONDA=$HOME/anaconda/anaconda352
export LD_LIBRARY_PATH=$ANACONDA/lib:$LD_LIBRARY_PATH
export PATH=$ANACONDA/bin:$PATH
# cuda10.0
export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export PATH=$CUDA_HOME/bin:$PATH
# cudnn7
export CUDNN=$HOME/cudnn/cudnnv742_cuda100
export LD_LIBRARY_PATH=$CUDNN/lib64:$LD_LIBRARY_PATH
openCV3のインストール
anacondaのpython環境にopenCV3をインストールする。
conda install -c menpo opencv=3
OSパッケージのインストール
公式サイトを参考に、OSパッケージをインストール(要rootまたはsudo)。
apt-get install protobuf-compiler
apt-get install libboost-all-dev
apt-get install build-essential cmake git pkg-config
apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
apt-get install python-pip
apt-get install python-dev
apt-get install python-numpy python-scipy
apt-get install python3-dev
apt-get install python3-numpy python3-scipy
apt-get install libopencv-dev
Caffeソースコードの入手
Caffe1.0のソースコードを入手する。
wget https://github.com/BVLC/caffe/archive/1.0.tar.gz
tar.gzファイルを展開する。
tar -xvf ./1.0.tar.gz
Caffeのソースコードは、ホームディレクトリに展開している(任意の場所でOK)。
$HOME/caffe-1.0
Makefile.configの作成
Makefile.configファイルをテンプレートからコピー作成し、中身を修正する。
コピー
cp Makefile.config.example Makefile.config
Makefile.configの修正(修正部分のみ抜粋)
# cuDNNを使用するのでコメントアウト
USE_CUDNN := 1
# openCV3を使用する
OPENCV_VERSION := 3
# CUDAインストールディレクトリに合わせてパスを設定する
CUDA_DIR := /usr/local/cuda-10.0
# CUDA_ARCHの2行目から有効になるように変更する
# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
CUDA_ARCH := -gencode arch=compute_20,code=sm_21 \
# anacondaインストール先パスに合わせる
ANACONDA_HOME := $(ホーム)/anaconda/anaconda352
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.6m \
$(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
PYTHON_LIBRARIES := boost_python-py36 python3.6m
PYTHON_LIB := $(ANACONDA_HOME)/lib
# pythonレイヤを使用する場合はコメントアウト
WITH_PYTHON_LAYER := 1
# cuDNNのパスを忘れずにセットする
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial $(ホーム)/cudnn/cudnnv742_cuda100/include
# cuDNNのパスを忘れずにセットする
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial $(ホーム)/cudnn/cudnnv742_cuda100/lib64
Makefileの修正
405行目付近のNVCCFLAGS行を修正する
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
CMakeLists.txtの追記
CMakeLists.txtの末尾に、以下の行を追記する
# ---[ Includes
set(${CMAKE_CXX_FLAGS} "-D_FORCE_INLINES ${CMAKE_CXX_FLAGS}")
Caffeのビルド
ここからがCaffeのビルド作業。
makeの実行。末尾の数字は並列数。
make all -j12
make test -j12
テスト
make runtest -j12
こんなログが最後に表示されればOK。さすが2080Ti。めっちゃ早いな。。
[----------] Global test environment tear-down
[==========] 2101 tests from 277 test cases ran. (261658 ms total)
[ PASSED ] 2101 tests.
※エラーが発生したら、make cleanを実行する。
make clean
pycaffeのビルド
pycaffeのmake
make pycaffe -j12
エラーになる場合には、caffe-1.0/python/requirements.txtを満たしているか確認する
自分の環境では未実施だが、念のためメモしておく(各種ライブラリのインストールコマンド)
cd $HOME/caffe-1.0/python
for req in $(cat requirements.txt); do pip install $req; done
環境変数の設定
.bash_profileに、PYTHONPATHの環境変数を追記する
export PYTHONPATH=$HOME/caffe-1.0/python
動作確認(import確認)
pythonを対話形式で起動して、caffeをimportする。
エラーがでなければまずは成功
import caffe
以上。
数年前の論文で、caffeのコードを使用していることがあるので、自分はまだcaffeと付き合っていかないといけないんだけど
caffeを使用している人ってもうあまりいないのかな。