インテルの Caffe* を CentOS* 7.2 上にインストールする

同カテゴリーの次の記事

Python* プログラムの並列パフォーマンスを引き出そう

この記事は、エクセルソフト株式会社 Technical Support の竹田 賢人が執筆しました。


はじめに

ここでは、インテルの Caffe* の動作に必要なコンポーネントを準備して、動作環境を構築する手順を紹介します。CPU 動作を行うので GPU を扱わない都合上、CUDA* のインストールは行いません。さらに、インテルの Caffe* が扱うインテル® マス・カーネル・ライブラリー (インテル® MKL) 関数は、インテルの Caffe* のコンパイル時に自動的にダウンロードされるため、インストール作業は非常に簡単です。

インテル® MKL はインテル社が提供する BLAS、LAPACK などの数学演算処理を実装したライブラリーです。インテルの Caffe* ではデフォルト設定でインテル® MKL を使用し、かつ DNN 向けの高速化を実装しており、インテル® プロセッサー上での動作に高度に最適化されています。インテル® MKL やインテル® MKL-DNN の詳細は下記をご参照ください。

http://www.izzz.us/machine-learning/introducing-dnn-primitives-in-intelr-mkl/
もしくは
https://01.org/mkl-dnn/blogs/kmoffat/2016/introducing-intel%C2%AE-math-kernel-library-deep-neural-networks-intel%C2%AE-mkl-dnn (英語)

動作環境

下記の環境へのインストールを行います。

OS: CentOS* 7.2
CPU: インテル® Xeon Phi™ プロセッサー 7210
メモリ: DDR4-2133 96GB
GPU: なし

作業手順

インテルの Caffe* のインストールは、Berkeley Vision and Learning Center (BVLC) が提供する Caffe* と同じ手順を踏みます。今回は CentOS* に導入するので、下記の Web サイトに従ってインストールを進めます。

Caffe* by the BVLC: RHEL/Fedora*/CentOS* Installation
http://caffe.berkeleyvision.org/install_yum.html (英語)

ここでは次のように構築します。

  • CPU 動作をする
  • インテル® MKL を使用する
  • pyCaffe は扱わない

ライブラリーをインストールする

まず、Caffe* の Web サイトに記載されているインストール手順に従って、下記のライブラリーをインストールします。ただし、Base リポジトリーでは hdf5 関連のライブラリーが取得できず、そのまま進めると、インテルの Caffe* の make 時に参照エラーが発生するため、あらかじめ EPEL リポジトリーからも検索できるように設定します。

sudo yum install epel-release
sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel

さらに、追加でライブラリーをインストールします。これらのライブラリーも EPEL リポジトリーから取得することができます。

sudo yum  install gflags-devel glog-devel lmdb-devel

インテルの Caffe* をダウンロードする

インテルの Caffe* は GitHub* で公開されています。インテルの Caffe* を GitHub* から clone してローカルに配置します。

インテルの Caffe* をインストールする

ダウンロードしたインテルの Caffe* パッケージを確認します。

パッケージの中にある Makefile.config.example をコピーして Makefile.config にリネームします。CAFFEROOT 環境変数はインテルの Caffe* のクローン先もしくは展開先です。

cd $CAFFEROOT
cp ./Makefile.config.example ./Makefile.config

Makefile.config ではインテルの Caffe* のビルド設定を行います。インテルの Caffe* は、デフォルト設定でインテル® MKL を使用して CPU で処理するように設定されており、最初の手順で必要なライブラリーをインストールしていれば、Makefile.config ファイルを変更する必要はないため、この状態でコンパイルします。

make all -j64

コンパイルには時間がかかるので、対象のマシンに搭載されるコア数と同数もしくは 2 倍程度に設定すると効果的です。ここでは 64 に設定しています。

なお、make 中に下記のようにインテル® MKL 関連のライブラリーをダウンロードするため、ネットワークへの接続が必要です。

コンパイルが完了したら、テスト、確認を行います。test、runtest ともにすべて Pass すれば正常にインストール完了です。

Make test -j64
Make runtest

動作テスト

インストールは上記までの手順で完了しましたが、インテルの Caffe* に含まれるサンプル (MNIST) を動かしてみます。まずは、インテルの Caffe* に含まれるサンプルからスクリプトファイルを実行して必要なデータをダウンロードします。CAFFEROOT 環境変数は Caffe* のトップ・ディレクトリーです。

cd $CAFFEROOT
./example/mnit/create_mnist.sh
./data/mnist/get_mnist.sh
cd $CAFFEROOT
./build/tools/caffe time -model ./examples/mnist/lenet_train_test.prototxt

なお、インテル® MKL が使用されていることを確認するために、MKL_VERBOSE 環境変数を設定して、インテル® MKL が実行されたタイミングでコンソールに情報を出力するように設定します。

export MKL_VERBOSE=1

設定後、再度同じトレーニングを実行すると、コンソール出力にインテル® MKL の SGEMM などの関数が使用されていることが確認できます。ただし、MKL_VERBOSE 環境変数の情報出力に性能が引っ張られてしまうため、実行が遅くなることに注意してください。

cd $CAFFEROOT
./build/tools/caffe time -model ./examples/mnist/lenet_train_test.prototxt

関連記事