LoginSignup
9
7

More than 5 years have passed since last update.

Menoh を試してみる

Last updated at Posted at 2018-06-23

Chainer4、Chainer4+iDeep、Menohでざっくりと性能比較してみました。

Menohは、PFNが発表した、C++推論エンジンです。

必要なものをインストール

$ sudo apt install cmake libopencv-dev
$ sudo apt install autoconf automake libtool curl make g++ unzip

protobuf をインストール

aptで入るprotobufは古いので、コードからインストール。

$ git clone https://github.com/google/protobuf.git
$ cd protobuf
$ git submodule update --init --recursive
$ ./autogen.sh && ./configure && make && make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.

mklをインストール

  1. https://software.intel.com/en-us/mkl から、"Intel Math Kernel Library"をダウンロード
  2. MKLに必要なものをインストール $ apt install -qq cpio g++
  3. $ tar xvzf downloads/l_mkl_2018.3.222.tgz && cd l_mkl_2018.3.222 && sudo ./install.sh 画面に従いインストール
  4. $ export LD_LIBRARY_PATH="/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64:$LD_LIBRARY_PATH" (必要ならば、~/.bashrc などに書く)

参考:Chainer 4.0 + iDeep がすごい

mkl-dnnをインストール

$ git clone https://github.com/intel/mkl-dnn.git
$ cd mkl-dnn/scripts && ./prepare_mkl.sh && cd ../
$ mkdir -p build && cd build && cmake .. && make
$ sudo make install

menoh をインストール

$ git clone https://github.com/pfnet-research/menoh.git
$ cd menoh
$ mkdir data
$ python3 retrieve_data.py
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install

評価

GCEのf1-microで試そうかと思いましたが、メモリーが足らなかったので、手元のPCで、nvidia-docker2上での動作です。

env msec
Chainer4(CPU) 604msec
Chainer4 + iDeep 98msec
menoh(mkl) 103.9 msec

Chainer 4 の場合

604 msec

https://github.com/peisuke/DeepLearningSpeedComparison/blob/master/chainer/vgg16/predict.py を利用

$ predict.py
mxnet-vgg-16 : 0.604022 (sd 0.003342)

Chainer 4 + ideep の場合

98 msec

$ python3 predict_ideep.py
mxnet-vgg-16 : 0.097915

menohの場合

103.9 msec

menoh のサンプルを20回実行し、1回当たりの実行時間を求めるように修正
https://gist.github.com/ikeyasu/bfb4d5cd6f636cdcbc16e41cf8f95347

実行するモデルは、 https://gist.github.com/ikeyasu/971ece2e32ddf36bcc40a71762f68cd9#file-convert_to_onnx-py で変換した onnx で、Chainer4 で実行したものと同じ。

$ example/vgg16_example_in_cpp --model ../../DeepLearningSpeedComparison/chainer/vgg16/vgg16.onnx
vgg16 example
103.9

まとめ

ざっくりとした評価ですが、menohと、chainer4 がだいたい同じでした。
(とくに、Pythonだからといってオーバーヘッドがある様なタスクではないので、当然ですね)

9
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7