GeForce搭載の旧モデルMacBook ProでCaffeをビルドする手順メモ
はじめに
GeForce搭載の旧モデルMacBook ProでCUDAをセットアップする手順のメモでCUDA 7.0.29をインストールしたMacBook ProでCaffe | Deep Learning Frameworkをビルドしてみた手順メモです。
PyPIでCaffeで検索しても出てこないので、ソースからビルドするしかないようです。
OS X Installationを参考にしつつ、一部手順を変更してインストールしました。
CaffeはPython3非対応
Python - はじめるDeep learning - Qiitaで紹介されていたPython3 support · Issue #293 · BVLC/caffeによると、オフィシャルでPython3対応の予定はないとのこと。Python3でも動かないこともないそうですが、初心者なのでまずはPython2で動かすことにします。
依存ライブラリのインストール
依存するライブラリを以下のコマンドでインストールしました。
brew install -vd snappy leveldb gflags glog szip lmdb
brew tap homebrew/science
brew install hdf5 opencv
protobufのインストール
以下のコマンドでprotobufをインストールします。
brew install protobuf
OS X Installationの手順では --with-python
オプションを指定していますが、 brew info protobuf
で確認すると2.6.1用のformulaでは --with-python
オプションは無くなって代わりに --without-python
オプションが出来ていました。何も指定しなければpythonサポートが入るようです。
なお、インストール完了時に以下のメッセージが出ますが、後でvirtualenvで作った環境内で pip install protobuf
すればいけるので、ここに書かれている対応は不要でした。
==> Caveats
Editor support and examples have been installed to:
/usr/local/Cellar/protobuf/2.6.1/share/doc/protobuf
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
mkdir -p
echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> homebrew.pth
boost 1.57.0, boost-python 1.57.0 のインストール
brew install boost boost-python
だと1.58.0が入ったのですが、Caffeのビルド時にコンパイルエラーが出ました。Itinerant Bioinformaticist: Caffe incompatible with Boost 1.58.0と同じエラーですが、ここに回避方法も書かれていたので、これに従いました。
まず、boost 1.58.0, boost-python 1.58.0が入っている場合はアンインストールします。
brew uninstall boost boost-python
以下の手順で1.57.0をソースからインストールします。
cd `brew --prefix`/Library/Formula
curl -O https://raw.githubusercontent.com/Homebrew/homebrew/6fd6a9b6b2f56139a44dd689d30b7168ac13effb/Library/Formula/boost.rb
curl -O https://raw.githubusercontent.com/Homebrew/homebrew/3141234b3473717e87f3958d4916fe0ada0baba9/Library/Formula/boost-python.rb
brew install --build-from-source -vd boost boost-python
Python2でvirtualenvで作業用の環境を作成して依存ライブラリをインストール
個人的にはAnaconda Pythonのようなオールインワンのインストーラはあまり好きではないので、riywo/anyenvとyyuu/pyenvで入れたPython 2.7.10を使いました。
作業用のディレクトリ ~/work/caffe
を作ってvirtualenvで環境を作りました。
mkdir -p ~/work/caffe
cd !$
pyenv local 2.7.10
virtualenv venv
source venv/bin/activate
HomebrewでインストールしたPython 2.7.10でも pyenv local 2.7.10
の行を除けば同じ手順で行けました。
Caffeで必要なprotobufとnumpyを以下の手順でインストールします。
pip install protobuf
pip install numpy
Caffeのソースを取得してビルド
ソースを取得してディレクトリに入ります。
cd ~/work/caffe
git clone https://github.com/BVLC/caffe
cd caffe
Installationを参考にビルドします。virtualenv環境のincludeとlibディレクトリを参照するように以下のように加工してMakefile.configを作成します。Caffeのソースを違うディレクトリに配置した場合は適宜変更してください。
sed '
s|/usr/include/python2.7|$(HOME)/work/caffe/venv/include/python2.7|
s|/usr/lib/python2.7/dist-packages|$(HOME)/work/caffe/venv/lib/python2.7/site-packages|
' Makefile.config.example > Makefile.config
Caffeをビルドします。
make all
テストコードをビルドします。
make test
テストを実行します。
(venv)$ make runtest
...(略)...
[----------] Global test environment tear-down
[==========] 1356 tests from 214 test cases ran. (306870 ms total)
[ PASSED ] 1356 tests.
YOU HAVE 2 DISABLED TESTS
ということで、Caffeをビルドする手順でした。