PerlとMXNetでディープ・ラーニング: インストール

[17/07/18 23:28 更新]

以下は、debian jessie でインストールした方法である。多分、他のOSでも似たりよったりだろう。

Build the MXNet core shared library

まずは、MXNetのライブラリのビルド。 基本的には、Installing MXNet (http://mxnet.io/get_started/install.html) の Build from Source の通り。

Requirements

aptbuild-essential git libopenblas-dev libopencv-dev インストール。
[うちの環境では、libopencv-devが破損あつかいで、synapticで解決できず、
$ sudo aptitude install libopencv-dev
で2番目の解決を選んで、backportsしたライブラリのいくつかをダウングレイドした。もちろん、問題なくインストールできるなら、それでOK。 ]

Download and build library

次に、本体をダウンロードしてライブラリをビルド。${HOME}/workなどで作業すると、ホームディレクトリ直下を汚染しなくてすむ。


$ git clone --recursive https://github.com/dmlc/mxnet
$ cd mxnet

<MKL>

ここで、MKL (Intel® Math Kernel Library) のサポートも試してみる。インテルのCPUで外部GPUを使っていない場合に、特に有効なようだ。体感的には、10分の計算が10秒で出来るくらいの効果がある。

MKL サポートのためには、まず、/usr/localに書き込めるようにする必要がある。debian では/usr/localroot:staffになってるので、自分をstaffの group に加えればよい。


$ sudo adduser user staff

ここでuserは、自分のユーザ名である。
[2017年7月18日 追記: これは、次にログインしたときから有効]
[debian系以外では、いろいろ違う対処になるはず]

その後、make/config.mk 編集する。


USE_MKL2017 = 1
USE_MKL2017_EXPERIMENTAL = 1

これで、次のステップに進めば、自動的に MKL をダウンロードして、準備してくれる。

</MKL>

次に、ビルド。


$ make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas

これで、./liblibmxnet.soが出来てるはず。

<MKL>

MKL を使う場合は、


$ sudo ldconfig

とする。そうしないと、ライブラリを見つけてくれない。

</MKL>

Perl Package

Perl Package は、Installing MXNet on Ubuntu (http://mxnet.io/get_started/ubuntu_setup.html) を参考。

Install the MXNet Package for Perl

aptlibmouse-perl pdl cpanminus swig libgraphviz-perlをインストール。
[新しい方がよいと思って、swig3.0にするとダメ。/usr/bin/swigが出来てくれない。]

本家ではPerl Packageを${HOME}/perl5にインストールする方法を書いてるが、ここでは、${HOME}にインストールする方法を書いておく。こうすると、ホームディレクトリの下に、binlibmanというディレクトリが出来ると思うが、それが嫌でない人むけ。

まず、cpanmFunction::Parametersをインストール。本家では、


$ cpanm -q -L "${HOME}" Function::Parameters

といった感じだが、

$ sudo cpanm Function::Parameters

でもよい。

あとは、perl-package/以下のAI-MXNetCAPI/AI-NNVMCAPI/AI-MXNet/をこの順番で訪れて、それぞれで、


$ perl Makefile.PL INSTALL_BASE=${HOME}
$ make install

これで、${HOME}/lib/perl5/AI/MXNet.pmが出来てる。

この構成だと、環境変数PERL5LIB${HOME}/lib/perl5を指定するか、perlスクリプト内で、


use lib "$ENV{HOME}/lib/perl5";

とする必要がある。以下の説明では、後者の方法を採用する。(他にもいくつか方法があるけど)

[libmxnet.soを適切な場所に置いてcpanmを使ってもいいかも知れないが、ちゃんとは試していない。]

[次の「状況説明」へ] [「PerlとMXNetでディープ・ラーニング」に戻る] [「あえてのPerl」に戻る]