機械学習

【NNabla】C++ APIを使うための環境構築 -ライブラリのインストール方法など-

NNabla C++ APIの環境構築

こんにちは。

ディープラーニングお兄さんの”はやぶさ”@Cpp_Learningです。

以前 “Neural Network Libraries(NNabla)” をインストールする方法について記事を書きました。

Neural Network Libraries
【NNabla】Windows(WSL)にNeural Network Librariesをインストールするこんにちは。 ディープラーニングお兄さんの”はやぶさ”@Cpp_Learningです。 深層学習フレームワークのChaine...

この記事では、NNablaのPython APIを使うための環境構築について説明しています。

本記事では、NNablaのC++ APIを使うための環境構築について説明します。

Neural Network Libraries(NNabla)の特徴

“Neural Network Libraries”のコア部分がC++で実装されており、Python APIだけでなくC++ APIも用意してあります。

Neural Network LibrariesとC++

Python APIを使うためのPythonパッケージはpipで簡単にインストールできますが…

C++ APIを使うためにはC++ライブラリをインストールする必要があり、pipに比べると少し難しいです。

なので、本記事で丁寧にインストール方法を説明したいと思います。

Install NNabla C++ utility library 

Build C++ utility libraries|公式を参照しながらC++ APIの環境構築を行います。

WSLを起動して、以下の手順通りにコマンドを打ち込んでみて下さい。

【準備】パッケージのアップデート

最初に以下のコマンドでインストール済みパッケージの更新をしておくと良いと思います。

sudo apt update
sudo apt upgrade

(マメに更新している人は不要かも)

Requirements

次に以下のものをインストールします。

  • G++: sudo apt-get install build-essential
  • CMake>=3.1: sudo apt-get install cmake
  • Python: sudo apt-get install python python-pip(Used by code generator)
  • Python packages: PyYAML and MAKO: sudo -H pip install pyyaml mako
  • LibArchive: sudo apt-get install libarchive-dev
  • HDF5 (Optional): sudo apt-get install libhdf5-dev
  • Protobuf >=3: See below.

事前に以下のコマンドでインストール済みのパッケージを確認しておくと良いでしょう。

dpkg -l [package]

今回の場合は以下のコマンドで確認します。

dpkg -l build-essential cmake python python-pip libarchive-dev libhdf5-dev

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii build-essentia 12.4ubuntu1 amd64 Informational list of build-essen
ii cmake 3.10.2-1ubun amd64 cross-platform, open-source make
ii python 2.7.15~rc1-1 amd64 interactive high-level object-ori
ii python-pip 9.0.1-2.3~ub all Python package installer
dpkg-query: no packages found matching libarchive-dev
dpkg-query: no packages found matching libhdf5-dev

私の場合は↑のような表示がでました。つまり、libarchive-devとlibhdf5-devがないようなので、以下のコマンドでインストールします。

sudo apt-get install libarchive-dev libhdf5-dev

pipの場合は以下のコマンドでインストール済みパッケージを確認できます。

pip show pyyaml mako

Name: PyYAML
Version: 3.13
Summary: YAML parser and emitter for Python
Home-page: http://pyyaml.org/wiki/PyYAML
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Location: /mnt/c/Users/hayab/Ubuntu/envs/sony/lib/python3.6/site-packages
Requires:

私の場合は↑のようなにPyYAMLの情報のみが表示されました。つまり、makoがないようなので、以下のコマンドでインストールします。

pip install mako

念のため、以下のコマンドでインストールできたことを確認します(しなくても良い)。

pip show mako

Name: Mako
Version: 1.0.7
Summary: A super-fast templating language that borrows the best ideas from the existing templating languages.
Home-page: http://www.makotemplates.org/
Author: Mike Bayer
Author-email: mike@zzzcomputing.com
License: MIT
Location: /mnt/c/Users/hayab/Ubuntu/envs/sony/lib/python3.6/site-packages
Requires: MarkupSafe

今度は↑のようなにMakoの情報が表示されるはずです。

人によってインストール済みのパッケージが異なるため、必要に応じてlibarchive-dev・libhdf5-dev・Mako以外もインストールしてくださいね。

Installing protobuf3 C++ libraries and tools

protobufも必要なので、以下のコマンドでインストールします。

curl -L https://github.com/google/protobuf/archive/v3.1.0.tar.gz -o protobuf-v3.1.0.tar.gz
tar xvf protobuf-v3.1.0.tar.gz
cd protobuf-3.1.0
mkdir build && cd build
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF ../cmake
make
sudo make install

先に適当なディレクトリ”nnabla_workspace”を作り、そこで作業するのが良いと思います。

mkdir nnabla_workspace && cd nnabla_workspace

Build

最後に以下のコマンドでビルドします。

git clone https://github.com/sony/nnabla
cd nnabla
mkdir build && cd build
cmake .. -DBUILD_CPP_UTILS=ON -DBUILD_PYTHON_PACKAGE=OFF -DNNABLA_UTILS_WITH_HDF5=ON
make
sudo make install

Some optional arguments for cmake:

CMakeオプションについては以下の通りなので、自由に”ON/OFF”を変更して下さい。

  • -DNNABLA_UTILS_WITH_HDF5=OFF to turn off HDF5 feature if you stacked in HDF5 installation.
  • -DBUILD_PYTHON_PACKAGE=ON to build Python package too.

以上でNNablaのC++ APIを使用する環境が整いました。

あとはsony/nnabla/examples/cpp|GithubなどでC++ APIを実践してみてください。

はやぶさ
はやぶさ
これでPythonだけでなくC++でも深層学習が楽しめますね!
スポンサーリンク

まとめ

以前“Neural Network Libraries(NNabla)” のPython APIを使うための環境構築について説明しましたが、今回はC++ APIを使うための環境構築について説明しました。

これでPythonだけでなくC++でも深層学習が楽しめるようになりました。

NNablaによる組み込み深層学習

また、↑のようにPythonとC++の連携もできるため、「学習」はPython・「推論」はC++なんてことも実現できます。

NNablaで深層学習を楽しんで下さいね。

WindowにAnacondaで機械学習の環境構築
【Chainer】WindowsにAnacondaで機械学習の環境構築WindowsにChainer/TensorFlow/Kerasなどの深層学習フレームをインスト―ルするには、Anacondaを使うのが簡単です。本記事ではChainerのインストールを例に機械学習の環境構築手順を説明します。...
LINEスタンプ配信中!

フクロウのLINEスタンプ

当サイトのマスコットキャラクター

「フクロウのくるる」が

LINEスタンプになりました!

勉強で疲れたあなたに癒しをお届け☆

お迎え待ってます(*・ω・)ノ♪

今すぐお迎えする

40個セットがたったの50コインとお得です