今日も窓辺でプログラム

外資系企業勤めのエンジニアが勉強した内容をまとめておくブログ

CNTKの環境構築と動作確認をしてみる

はじめに

GoogleがTensorFlowというディープラーニングのフレームワークを提供しているように、MicrosoftもCNTKというディープラーニングのフレームワークを提供しています。
普段はTensorFlowを触っていたのですが、仕事でCNTKも触らなきゃいけなさそうなので、自宅のPCで環境構築と動作確認をしてみます。

CNTKとは?

Microsoft Cognitive Toolkit (CNTK) とはMicrosoftが提供するディープラーニング用のフレームワークです。TensorFlowやchainerのようなイメージです。
Home · Microsoft/CNTK Wiki · GitHub


PythonとC++向けのライブラリが用意されています。モデルはBrainScriptと呼ばれる言語を使って記述することもできます。
LinuxとWindowsでの動作がサポートされているようです。

複数のGPU使う際などに特に高速に動作するようですが、私の家にはGPUがないので実際のところはよくわかりません。

環境構築

自宅のWindowsマシンにはGPUが載ってないので、CPU向けのバイナリをインストールします。
今回はマニュアルセットアップのページに従ってインストールしていきます。

CNTKのダウンロード&展開

Releaseページから入れたいバージョンのCNTKをダウンロードして、適当な場所に展開します。
私はWindowsマシンのCPUを使いたいので、「CNTK for Windows v.2.0 Beta 9 CPU only」というものを選択しました。

GPU版は通常のものと1bit-SGDという2つのバージョンがあるようです。1bit-SGDは複数のGPUを使用している場合などに性能が向上する機能ですが、通常のものとはライセンスが異なるようなので使用される場合は注意してください。

CNTKに必要なライブラリをインストール

ダウンロードしたzipファイルをc:\localに展開したとしたら、次の場所に2つのexeファイルがあると思います。

  • c:\local\cntk\prerequisites\VS2015\vc_redist.x64.exe
  • c:\local\cntk\prerequisites\MsMPiSetup.exe

これら2つをまずインストールします。GPUを使う方は、GPUのドライバのインストールも済ませておいてください。

Pythonのインストール

実装時にPythonを使用したいので、Python3.5をインストールします。
Windowsマシンでしたら、Anacondaという、Pythonやよく使われるライブラリをひとまとめにしたパッケージを入れるのがおすすめです。
このページの Python 3.5 versionの部分からバイナリをダウンロードしてインストールするといいでしょう。

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

pipコマンドを使って下記のようにしてCNTKのPythonライブラリをインストールします。

pip install c:\local\cntk\cntk\python\cntk-2.0.beta9.0-cp35-cp35m-win_amd64.whl

Pythonのバージョンが2.7や3.4の方は、c:\local\cntk\cntk\pythonの下にあるそれぞれのバージョンに対応したファイルを使ってインストールしてください。

CNTKのフォルダをPATHに登録しておく

CNTKのバイナリはc:\local\cntk\cntkに存在しています。このフォルダを環境変数に追加しておくと、この後いろいろ楽かもしれません。

動作確認

FeedFowardNet.pyというサンプルプログラムを実行して動作確認をしてみます。

cd c:\local\cntk\Tutorials\NumpyInterop
python FeedForwardNet.py

次のようにミニバッチが実行されている様子が確認できれば、動作確認完了です!

 Minibatch[   1- 128]: loss = 0.582338 * 3200
 Minibatch[ 129- 256]: loss = 0.312839 * 3200
 Minibatch[ 257- 384]: loss = 0.291943 * 3200
 Minibatch[ 385- 512]: loss = 0.266468 * 3200
 Minibatch[ 513- 640]: loss = 0.249986 * 3200
 Minibatch[ 641- 768]: loss = 0.232742 * 3200
 Minibatch[ 769- 896]: loss = 0.230655 * 3200
 Minibatch[ 897-1024]: loss = 0.215014 * 3200
Finished Epoch[1 of 300]: loss = 0.297748 * 25600 4.002s (6397.6 samples per second)
 error rate on an unseen minibatch 0.040000

学習させる部分の動作確認もしてみましょう。
次のコマンドで動作確認します。2行目のcntkというコマンドは、c:\local\cntk\cntkをPATHに登録しておかないと認識されません。

cd c:\local\CNTK\Tutorials\HelloWorld-LogisticRegression
cntk configFile=lr_bs.cntk makeMode=false command=Train

すると、学習の過程がずらーっと表示され、最後に「COMPLETED.」と表示されれば、学習も正しく動いています。

以上で、環境構築と簡単な動作確認は終了です。

GPU版の動作確認

GPU版を使用している方は、次のコマンドで動作確認ができます*1

cntk configFile=lr_bs.cntk makeMode=false command=Train deviceId=auto

すると、使用しているCNTKの情報やGPUの情報が表示された後、

##############################################################################
#                                                                            #
# Train command (train action)                                               #
#                                                                            #
##############################################################################


Model has 9 nodes. Using GPU 0.

という情報が表示され、GPU0が使用されていることが確認できます。

ちなみに、他のGPUを使用したい場合はdeviceIdを変えてあげると

cntk configFile=lr_bs.cntk makeMode=false command=Train deviceId=1

このように任意のGPUを指定することができます。

Model has 9 nodes. Using GPU 1.



関連記事

チュートリアルに沿ってロジスティック回帰を試してみました。
www.madopro.net

*1:自宅にはGPUがないので、会社のマシンで試しました