桜朔

さくらさく

                                      スポンサーリンク

CaffeでDeep Learning (1)

こんにちは,櫻井朔@hajimesakuraiです.

機械学習のアルゴリズムは仕事で使用することが度々ありますが,その中で最近話題のDeep Learningについてはまだそこまで詳しくないので,ひとまずは習うより慣れろでCaffeをMacにインストールしてみることにしました.類似のツールは多くあるようですが,Caffeの特徴は現状で最速であることや,Python/MATLABに対応しているというのが魅力です.環境はMacbook Pro (Late 2013, OSX Yosemite, 10.10.4)で試してみました.この機種のGPUはnVIDIA製ではないのでCUDAは使えませんが,動作確認ができたらTeslaで試してみたいと思います.

インストール

公式ページのInstallationに沿って進め...ようと思いましたが,以下のページなどを見てみると,Macにインストールするのは結構な手間なようです.

ディープラーニングやろうぜ! MacBookPro-MacOSX10.10にGPUを使えるCaffeをビルドする
install_caffe_osx10.10.md · GitHub
OS X 10.10(Yosemite)にCaffeをインストールする(libstdc++問題解決) - Qiita
CaffeをOS X 10.10 にインストールした // ichyo.jp

何か他にまとまっている資料はないか探してみたところ,GitHubにこのようなページがありました.

基本的にインストール必要があるのは下記のライブラリ.

  • CUDA (7.0推奨)
  • BLAS (ATLAS, MKL, or OpenBLAS)
  • Boost (1.55以降)
  • OpenCV (2.4以降)
  • protobuf, glog, gflags, hdf5, leveldb, snappy, lmdb

Pythonは自分の環境では2.7.9が最初から入っていたのでそのまま使用します.これらを容易にインストールするため,homebrew-caskを事前に用意.

$ brew install caskroom/cask/brew-cask

もしhomebrewが入ってなければ,何も考えずに下記のコマンドを打つ.

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

homebrewが古い場合は,"brew update"の実行を忘れないこと.

次にCUDAをインストール(時間がかかります).

$ brew cask install cuda

次に関連する他のライブラリをインストール.OpenCVをインストールする前に,homebrew/scienceをタップしておきます.

$ brew install --fresh -vd snappy leveldb gflags glog szip lmdb
$ brew tap homebrew/science
$ brew install hdf5 opencv

Pythonを使う場合は,protobufとboostをビルドする必要があるそうです.ただし,Yosemiteではboost1.58.0にバグがあるので,1.57.0を使います.

$ brew install --build-from-source --with-python --fresh -vd protobuf
$ brew install --build-from-source --fresh -vd https://raw.githubusercontent.com/Homebrew/homebrew/6fd6a9b6b2f56139a44dd689d30b7168ac13effb/Library/Formula/boost.rb https://raw.githubusercontent.com/Homebrew/homebrew/3141234b3473717e87f3958d4916fe0ada0baba9/Library/Formula/boost-python.rb

ここからようやく,いよいよCaffeの導入に入ります.

$ git clone https://github.com/BVLC/caffe.git
$ cd caffe
$ pip install --requirement python/requirements.txt
$ cp Makefile.config.example Makefile.config
$ vi Makefile.config

Makefile.configおよびMakefileを修正しないと正常にmakeできないので,上記のように新しくMakefile.configを作成し編集します.まずMakefile.configの変更箇所は,今回はCUDAを使用しないので,

CPU_ONLY := 1

BLAS_INCLUDE := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers

PYTHON_INCLUDE := /usr/local/lib/python2.7/site-packages/numpy/core/include/ \
    /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/include/python2.7/

+PYTHON_LIB := /usr/local/lib/python2.7 \
    /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/ \
    /usr/local/lib/python2.7/site-packages/numpy/lib

として,Makefileについては,

BLAS_INCLUDE ?= /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/
LDFLAGS += -framework Accelerate

としました.これでmakeが可能となります.

$ sudo ln -s /usr/local/lib/python2.7/site-packages/numpy/core/include/numpy/ /usr/include/
$ make all -j8; make pycaffe -j8
$ make distribute

ちなみに,arrayobject.hが無いというerrorで一度止まってしまったので,上記のようなシンボリックリンクを作成て対処しました.

最後に環境変数を設定して,インストール完了です.

$ export PYTHONPATH="$HOME/caffe/distribute/python:$PYTHONPATH"
$ export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/lib:$HOME/caffe/distribute/lib:$DYLD_FALLBACK_LIBRARY_PATH

後記

次回は使用方法について書きたいと思います. deepdreamにはあまり興味が無いですが,気が向いたら触れてみようと思います.

それでは.

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)