0 初めに
caffeは今、機械学習の主流のframeworkになっているが、virtualboxにインストールするのはなかなか難しい。virtualboxはGPUをサポートしてないらしい。でも、どうしてもvirtualboxに入れて自由に遊んで見たいからやって見るしかない。
1 対象のOS
cent os、ubuntuなどいくつ試したが、Ubuntu 16.04 LTS を選択。ネットを調べるとほとんどが、ubuntuをベースにしている。下記のサイトからダウンロードできる。
http://www.osboxes.org/category/ubuntu/
バージョンがいろいろあるが、16.04を選択。
2 CUDAをインストールしない
caffeのサイトを見るとCUDAのインストールが必須のように見える。でもCPUモードでは実際CUDAがなくても、caffeオフィシャル提供のexampleを実行できる。virtualboxにcaffeを入れる時、一番の問題はGPUがないことなので、CUDAを割愛するしかない。CUDAを手順通りにインストールして見たが、結局動かなかった。
3 Guest Additionをインストール
virtualboxのデバイスメニューから簡単にインストールできる。まさにubuntuの素晴らしいところ。
4 caffeをインストール
4.1 必要なパッケージをインストール
ここはcaffeのdockerファイルを参考。(https://github.com/BVLC/caffe/blob/master/docker/standalone/cpu/Dockerfile)
sudoコマンドでうまく行かない場合は、sudo su でルートユーザになって実行する
apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
wget \
libatlas-base-dev \
libboost-all-dev \
libgflags-dev \
libgoogle-glog-dev \
libhdf5-serial-dev \
libleveldb-dev \
liblmdb-dev \
libopencv-dev \
libprotobuf-dev \
libsnappy-dev \
protobuf-compiler \
python-dev \
python-numpy \
python-pip \
python-scipy && \
rm -rf /var/lib/apt/lists/*
実行すると、下記のlockエラーが発生することがある。
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
いろいろ調べたが、lockを削除する方法で問題解決。
osboxes@osboxes:~$ sudo rm /var/lib/apt/lists/lock
osboxes@osboxes:~$ sudo rm /var/cache/apt/archives/lock
osboxes@osboxes:~$ sudo rm /var/lib/dpkg/lock
このサイトを参考(http://askubuntu.com/questions/15433/unable-to-lock-the-administration-directory-var-lib-dpkg-is-another-process)
やばい方法だと書いてあるが、仕方ない。
lockを削除して再度パッケージをインストールしてOK. パッケージが多いので、実行には時間がかかる。
4.2 caffe本体のインストール
caffeはgithubから持ってきて、コンパイルする。
4.2.1 環境変数を設定
caffeのdockerファイルを参考。(https://github.com/BVLC/caffe/blob/master/docker/standalone/cpu/Dockerfile)
ホームフォルダーで実行。bashの環境変数設定。
root@osboxes:/home/osboxes# CAFFE_ROOT=/opt/caffe
root@osboxes:/home/osboxes# CLONE_TAG=master
4.2.2 githubからソースを取得
git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git
4.2.3 pythonの必要な設定とcaffeのビルド
上記ダウンロードしたcaffeのフォルダーに移動して実行する。
root@osboxes:/home/osboxes/caffe# for req in $(cat
python/requirements.txt) pydot; do pip install $req; done && \
mkdir build && cd build && \
cmake -DCPU_ONLY=1 .. && \
make -j"$(nproc)"
これまた時間がかかる。一気にcaffeのビルドまで行う。下記のメッセージが出ればOK.
4.2.4 caffeの環境変数の設定
root@osboxes:/home/osboxes/caffe/build# PYCAFFE_ROOT=\$CAFFE_ROOT/python
root@osboxes:/home/osboxes/caffe/build#PYTHONPATH=\$PYCAFFE_ROOT:\$PYTHONPATH root@osboxes:/home/osboxes/caffe/build#PATH=\$CAFFE_ROOT/build/tools:\$PYCAFFE_ROOT:$PATH
root@osboxes:/home/osboxes/caffe/build# echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig
これで、caffe本体のインストールは完了であるが、まだjupyterのインストールが残っている。caffeのexampleはnotebookなので、jupyterのインストールが必要になる。
4.3 jupyterをインストール
基本的にルート権限でインストールする。
ここを参考(https://github.com/kyamagu/caffe-docker/blob/master/docker/jupyter/Dockerfile)
4.3.1 pipをインストール
sudo wget https://bootstrap.pypa.io/get-pip.py && \
python get-pip.py && \
rm get-pip.py
4.3.2 jupyter本体をインストール
sudo pip --no-cache-dir install ipykernel jupyter matplotlib sklearn hmmlearn && python -m ipykernel.kernelspec
4.3.3 scikit-imageをインストール
なぜかこのパッケージが入ってなかったので追加。
sudo pip install scikit-image
4.3.4 tiniをインストール
tiniをインストールしなくてもjupyterは動くが、dockerファイルにあったのでとりあえずインストール。
root@osboxes:/home/osboxes# wget https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini
root@osboxes:/home/osboxes# cp tini /usr/bin/tini
5 caffeのexampleを試す
5.1 jupyterを立ち上げる
root@osboxes:/home/osboxes# jupyter notebook
実行するとfirefoxが立ち上がってcaffeのフォルダーが見れる。
5.2 exampleのnotebookを開く
ctrl+enterを押して、notebookを実行して見る。
6 結語
以上で、virtualboxでcaffeのインストールが完了となる。ポイントはCUDAをインストールしないこどである。caffeのdockerファイルが意外な情報を提供している。