CNTK環境構築からMNISTサンプル実行まで (Windows環境, 2016/06/29時点)

  • 20
    いいね
  • 0
    コメント

CNTKとは

  • Microsoft Research が提供する、深層学習(Deep Learning)用のツールキットです
  • 単一サーバ複数GPUや、複数サーバ複数GPUによる分散学習のパフォーマンスが抜群に良いです
  • 訓練により作成した分析モデルは、C++/C#経由で利用することができます (Sample)
  • ニューラルネットワークは BrainScript という言語で定義します (Sample)
    • 今後、Python/C++/.NET で定義できるようになるみたいです (YouTube)

CNTK のセットアップ (Windows)

以下の GitHub/Wiki に従い、Windows 環境での CNTK セットアップを行います。
https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-your-machine

ZIPファイルのダウンロード

GitHub の Release ページからZIPファイルをダウンロードします。ダウンロードするファイルは、NVIDIAのGPUを持つ端末か、そうでないか(CPUのみ)により異なります。GPUを持つのであればCNTK for Windows v.1.5 GPU with 1bit-SGDを、持たない(CPUのみ)のであればCNTK for Windows v.1.5 CPU onlyのリンクをクリックして、ZIPファイルをダウンロードします。

GitHub/Release

GPUを持たない環境でも、GPU版をセットアップしても問題ありません。しかし、用意されているMNISTのサンプルでは可能な限りGPUを使う設定(ConfigFileにおけるdeviceId=1)をしているので、GPUを持たないGPU版だとエラーが起きてしまいます。これはCPUを使う設定(deviceId=-1 or deviceId=cpu)をすれば回避できます。今回は混乱を防ぐため、GPUを持たない端末の場合は、CPUOnly版の環境をセットアップするように説明しています。

ZIPファイルの解凍&パス設定

ダウンロードしたZIPファイルを解凍して、内部のcntkフォルダを適切な場所に配置します。

そして、以下のcntkフォルダ内のcntkフォルダに対してパスを設定します
例えば、Cドライブ直下に配置した場合は、以下のとおりに環境変数を設定します。

PATH=C:\cntk\cntk

ACMLライブラリ利用に関する環境変数設定

ACML(AMD Core Math Library)ライブラリが正しく動作するよう、以下のとおりに環境変数を設定します。

ACML_FMA=0

MNISTサンプル実行

以下の GitHub/Wiki で説明されているMNISTのサンプルを実行します。
https://github.com/Microsoft/CNTK/blob/master/Examples/Image/MNIST/README.md

Python 2.7 のインストール

MNISTのデータをダウンロードする Python スクリプトを実行するため、Python 2.7 をインストールします。既に Python 3 系をインストールされていても、3系用のスクリプトが用意されているので大丈夫そうです (未確認ですが)。
以下のサイトからZIPファイルをダウンロードして、適切な場所に配置、フォルダに対してパス(環境変数PATH)を設定してください。
https://www.python.org/downloads/

numpy のインストール

Python と同様に、ライブラリとしてnumpyも必要なのでインストールします。
以下のコマンドを実行して、numpyをインストールします

> python -m pip install numpy

MNISTデータのダウンロード

フォルダ"\cntk\Examples\Image\MNIST\AdditionalFiles"に移動します。(GitHub)

以下のコマンドを実行します。

> python mnist_convert.py

以下のとおりにメッセージを出力して、完了します。

c:\cntk\Examples\Image\MNIST\AdditionalFiles>python mnist_convert.py
Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
Done.
Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
Done.
Writing train text file...
Done.
Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
Done.
Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
Done.
Writing test text file...
Done.

Python3系の環境の場合は mnist_convert_python3.py を実行すると良さそう

フォルダ"\cntk\Examples\Image\MNIST\Data"内に以下のファイルが生成されます。

  • Test-28x28_cntk_text.txt (テスト用データ)
  • Train-28x28_cntk_text.txt (訓練用データ)

訓練の実施

フォルダ"\cntk\Examples\Image\MNIST\Config"に移動して、以下のコマンドを実施します。すると、Epoch 30回の訓練が開始され、訓練終了後にテストが行われて精度が表示されます。

> cntk configFile=01_OneHidden.cntk

テストまで完了すると、以下の通りにメッセージが表示されていると思います。
Final Results の "err = 0.02200000"により、エラー率が2.2%であることが分かります。

BlockRandomizer::StartEpoch: epoch 0: frames [0..10000] (first sequence at sample 0), data subset 0 of 1
Minibatch[1-500]: errTop1 = 0.02075000 * 8000; err = 0.02075000 * 8000; ce = 0.06853522 * 8000
Minibatch[501-625]: errTop1 = 0.02700000 * 2000; err = 0.02700000 * 2000; ce = 0.09311564 * 2000
Final Results: Minibatch[1-625]: errTop1 = 0.02200000 * 10000; err = 0.02200000 * 10000; ce = 0.07345131 * 10000; perplexity = 1.07621613

Action "test" complete.

__COMPLETED__

CNTK環境構築が面倒くさい時

Microsoft Azure の仮想マシンテンプレートとして "Data Science Virtual Machine" が提供されています。これはデータ分析のための様々なツールがインストールされているテンプレートです。CNTKもインストールされています。環境構築が面倒であればこれをどうぞ。
https://azure.microsoft.com/en-us/marketplace/partners/microsoft-ads/standard-data-science-vm/

その他のサンプル

こちら