JetsonTX2にCaffe2を入れる
JetPack3.2が正式リリースされたとのことなので、開発PCをUbuntu16.04、TX2をJetPack3.2に入れなおした。
Chainerはデータごと死んだ環境がまっさらに戻ったので、せっかくなので他のDLフレームワークでも入れて遊ぼうということでTensorFlowはJetsonだとインストール面倒そうなのでぱっと見た感じ入れるのが楽そうだったCaffe2を入れてみた。
環境
- JetsonTX2
- JetPacke3.2 (クリーンインストール + sudo apt-get upgrade)
Eigenのヘッダファイル詐称書き換え
CaffeのソースコードがEigen v3.0.0以上を前提としているらしく、バージョンが古いと #error でコンパイルエラーを吐いてしまう。JetPack3.2のlibeigen3はv3.3 beta1-2という微妙なバージョンになっている。しかもヘッダファイル上ではv3.2.92扱いになっている。これではビルドが通らない。
$ dpkg -s libeigen3-dev
(中略)
3.3~beta1-2
えいっ
$ sudo vi /usr/include/eigen3/Eigen/src/Core/util/Macros.h
- #define EIGEN_MAJOR_VERSION 2 - #define EIGEN_MINOR_VERSION 92 + #define EIGEN_MAJOR_VERSION 3 + #define EIGEN_MINOR_VERSION 0
これで無事ビルドは通った。何も見なかった。良いね?
依存パッケージのインストール
基本的にはソース一式に入っているcripts/build_tegra_x1.shの通りなんだけどvenv環境で動かしたので少し変更した。
$ sudo apt-get install python3-dev python3-venv $ sudo apt-get install cmake libgflags-dev libgoogle-glog-dev libprotobuf-dev protobuf-compiler $ sudo apt-get install libleveldb-dev liblmdb-dev libpython-dev libsnappy-dev $ python3 -m venv py352env $ source py352env/bin/activate (py352env) :~$ pip install --upgrade pip (py352env) :~$ pip install numpy (py352env) :~$ pip install protobuf (py352env) :~$ pip install hypothesis (py352env) :~$ pip install six
ソースのダウンロード、ビルド
gitからソースを入手する。結構時間がかかる。ビルドも長いのでjetson_clockとnvpmodelを叩いておくと良さげ。
(py352env) :~$ git clone --recursive https://github.com/caffe2/caffe2.git (py352env) :~$ cd caffe2 (py352env) :~/caffe2$ mkdir build (py352env) :~/caffe2$ cd build (py352env) :~/caffe2/build$ cmake -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF .. (py352env) :~/caffe2/build$ make -j 4
足りないパッケージ、jupyter notebookの追加、環境構築
futureは入ってないと「from caffe2.python import core」した時に
~/caffe2/build/caffe2/python/core.py in
()
- > 24 from past.builtins import basestring
ImportError: No module named 'past'
とかって怒られる。
(py352env) :~$ pip install future (py352env) :~$ sudo apt-get install libfreetype6-dev libpng12-dev (py352env) :~$ pip install matplotlib (py352env) :~$ pip install jupyter (py352env) :~$ jupyter notebook --generate-config (py352env) :~$ ipython (py352env) :~$ vi ~/.jupyter/jupyter_notebook_config.py (py352env) :~$ cd caffe2/build (py352env) :~/caffe2/build$ jupyter notebook
Jupyter Notebookは以前*1環境構築を記事にしたのでそちらもどうぞ。
caffe2のpythonモジュールはbuild/caffe2とかに入っているので、jupyterコマンドはbuildディレクトリで打つと「from caffe2」した時に良い感じになった。一応これで「python/tutorials/Basics.ipynb」の冒頭を実行できることは確認した。このまま少し遊んでみようと思う。
そういえば、caffe2をビルドはしたけどインストールしてないような気がする。ま、いいか
[2018/03/21 追記]
Basics.ipynbを試してたら可視化するところでパッケージが足りずエラーになってしまった。以下を追加して解決した。
$ sudo apt-get install graphviz (py352env) :~$ pip install pydot