[ICT] マイクロソフト CNTK (深層学習フレームワーク)

あれれ? CNTK だと思っていたら名称が変わっていましたよ!

Microsoft Cognitive Toolkit

なんてド・ストレートな名称だこと。
Microsoft Computational Network Toolkit の略称ではなくなりました。

wikipedia (日本語)リンクを貼っておきますね。
https://ja.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit

ーーー

■心機一転、セットアップ方法から(ドМコース)

読むのが辛い方は、ラクラクコースまで読み飛ばしを推奨します。

英語が読めて、Pyhton はもとより使用している OS コンソール(コマンドプロンプト)を管理者権限 or sudo で触れることが大前提です。(深層学習を機械で行う前に、まず人間自身を鍛えてこい)

公式ドキュメント(英語)
https://docs.microsoft.com/en-us/cognitive-toolkit/setup-cntk-on-your-machine

Azure HDInsight Spark クラスターで Microsoft Cognitive Toolkit ディープ ラーニング モデルを使用するMicrosoft Cognitive Toolkit (日本語)
https://docs.microsoft.com/ja-jp/azure/hdinsight/hdinsight-apache-spark-microsoft-cognitive-toolkit

後者は用途が限定されることと、何も考えずにデプロイするとクラウド破産懸念もあり・・・。まずは、自分のマシンでセットアップしたほうがいいのではないかな。

1.まず必要なもの 64bit Windows または Linux 環境を準備。

現在 CNTK は 2.0 か 2.1 のどちらかベースとなっており、対応 Python 2.7, 3.4, 3.5, 3.6 、フレーバー(GPU対応環境、CPUだけで頑張る環境)を選定して pip install するので、自分の環境は何かを確認しよう。ここでは、Python 3.5 / CPU only を対象にします。
なお、コマンドプロンプトは管理者権限で開きます。

python -V で使用バージョン確認

python -V で使用バージョン確認

 

pip install コマンドです。

pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.1-cp35-cp35m-win_amd64.whl

これを叩くときは、Windows 標準コマンドプロンプトを管理者権限でもいいのですが、例外対応1で示すようにエラーが出た場合は、VC++2015 Build Tools に含まれる「Visual C++ 2015 x64 Native Build Tools Command Prompt」を管理者権限で実行すると解決します。

ーーー例外対応1ここから

もしも、pip install 中に「 distutils.errors.DistutilsError: Setup script exited with error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools 」というメッセージが出た方はその通り従ってください。仮にそのマシンが VC++2017 環境であっても、 VC++2015ビルドツール(推奨構成でディスクサイズ 4GB 必要)です。気になるなら chroot 的な仮想空間としてCNTK 用に VMホストを持てば?あれ、だったら Azure ホスト()を最初から、、いや、なんでもないです・・・。

CPP2015_Buid_Tols

CPP2015_Buid_Tols

※もしも、ガチで環境構築がメンドクサイなら → https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoft-ads.standard-data-science-vm こちらをどうぞ。オールインワンです。

ちなみに Azure 東日本リージョンの参考価格です。1時間あたり70円~340円。
CNTK フレームワークの概念理解だけなら、セットアップにかかる時間効率を考え Azure を有償利用するのはアリです。

Virtual MachineConfigurationCost per hourTotal cost
InstanceCategoryCoresRAMDisk SpaceDrive Type
DS3V2*General Purpose414GB28GBSSD$0.642Free$0.642$477.648
DS4V2*General Purpose828GB56GBSSD$1.284Free$1.284$955.296
DS11V2*Memory Optimized214GB28GBSSD$0.353Free$0.353$262.632
DS13V2*Memory Optimized856GB112GBSSD$1.385Free$1.385$1,030.44
DS14V2*Memory Optimized16112GB224GBSSD$2.617Free$2.617$1,947.048
DS15V2*Memory Optimized20140GB280GBSSD$3.271Free$3.271$2,433.624

ーーー例外対応1ここまで

ーーー例外対応2ここから

コマンドプロンプトに無慈悲なメッセージ
RuntimeError: Broken toolchain: cannot link a simple C program
が、出力された貴方の支援策です。

pip install –upgrade numpy 

です。全部自動で pip install がインストールをしてくれるなんて世の中は甘くはありません。

Successfully installed numpy-1.13.1

この出力で一先ず安心ですが、ナムパイは MKL (Intel® Math Kernel Library) が必須です。
入ってなければ、サイパイも不安ですな。

おまけ: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

ーーー例外対応2ここまで

2.やっと環境ができたと思います。

===

■セットアップ・ラクラクコース

1.先ずは、ここへアクセス

https://cntk.ai/dlwc-2.1.html

んで、英語の説明を読んで理解したら I Accept クリックで zipパッケージの自動ダウンロードが始まるので、適宜ローカルフォルダへ展開(展開後のディスクサイズ 297MB)します。

あとの実施手順は全部 https://docs.microsoft.com/en-us/cognitive-toolkit/Setup-Windows-Binary-Script ここに記載されてる通りです。ラクラクコースなので、ご自身でお好きなように。

例:

cd c:\local\CNTK-2-1
cd cntk\Scripts\install\windows
install.bat

実践例(マシンスペックにより時間を要するので、やっぱ Azuremarket から時間貸しを利用するのが、本当のラクラクコースだと思う)

C:\cntk\Scripts\install\windows>install.bat

CNTK Binary Install Script

This script will setup CNTK, the CNTK prerequisites and the CNTK Python environment onto the system.
More help can be found at:
https://docs.microsoft.com/en-us/cognitive-toolkit/Setup-Windows-Binary-Script

The script will analyse your machine and will determine which components are required.
The required components will be downloaded in [C:\cntk\Scripts\install\windows\ps\InstallCache]
Repeated operation of this script will reuse already downloaded components.

– If required VS2015 Runtime will be installed
– If required MSMPI will be installed
– Anaconda3 will be installed into [C:\local\Anaconda3-4.1.1-Windows-x86_64]
– A CNTK-PY35 environment will be created or updated in [C:\local\Anaconda3-4.1.1-Windows-x86_64\envs]
– CNTK will be installed or updated in the CNTK-PY35 environment

 

1 – I agree and want to continue
Q – Quit the installation process

I

あとは、手順に従って環境変酢も定義もお忘れなく。

Setup CNTK Python Tools For Windows
https://docs.microsoft.com/en-us/cognitive-toolkit/setup-cntk-python-tools-for-windows

2.チュートリアル用サンプルコードの実行確認。

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

出力例

Finished Epoch[42 of 50]: [Training] lr = 0.04287672 * 1000; err = 0.01152817 * 1000; totalSamplesSeen = 42000; learningRatePerSample = 0.039999999; epochTime=0.050296s
Finished Epoch[43 of 50]: [Training] lr = 0.04388479 * 1000; err = 0.01206375 * 1000; totalSamplesSeen = 43000; learningRatePerSample = 0.039999999; epochTime=0.052143s
Finished Epoch[44 of 50]: [Training] lr = 0.04223433 * 1000; err = 0.01105073 * 1000; totalSamplesSeen = 44000; learningRatePerSample = 0.039999999; epochTime=0.057235s
Finished Epoch[45 of 50]: [Training] lr = 0.04208072 * 1000; err = 0.01140516 * 1000; totalSamplesSeen = 45000; learningRatePerSample = 0.039999999; epochTime=0.051414s
Finished Epoch[46 of 50]: [Training] lr = 0.04261674 * 1000; err = 0.01158323 * 1000; totalSamplesSeen = 46000; learningRatePerSample = 0.039999999; epochTime=0.051115s
Finished Epoch[47 of 50]: [Training] lr = 0.04326523 * 1000; err = 0.01164283 * 1000; totalSamplesSeen = 47000; learningRatePerSample = 0.039999999; epochTime=0.051611s
Finished Epoch[48 of 50]: [Training] lr = 0.04225255 * 1000; err = 0.01148774 * 1000; totalSamplesSeen = 48000; learningRatePerSample = 0.039999999; epochTime=0.0509s
Finished Epoch[49 of 50]: [Training] lr = 0.04173276 * 1000; err = 0.01124948 * 1000; totalSamplesSeen = 49000; learningRatePerSample = 0.039999999; epochTime=0.049659s
Finished Epoch[50 of 50]: [Training] lr = 0.04399402 * 1000; err = 0.01202178 * 1000; totalSamplesSeen = 50000; learningRatePerSample = 0.039999999; epochTime=0.052725s

COMPLETED.

ーーー
Nvidia GPU 環境の方はこちらもどうぞ。
cntk configFile=lr_bs.cntk makeMode=false command=Train deviceId=auto

すると出力例として
Model has 9 nodes. Using GPU 0.
こんなのが表示されるよ。

ーーー

■緩いまとめ

Deep Lerning (深層学習)環境をセットアップするのが「とてつもなく煩わしい」事象は少なくありません。英語嫌いじゃ!(or コマンド羅列が意味不明だ!)という方にはかなり致命的ですが

そんな方には、まずご自身を学習してみてはいかがでしょうか。

もしも新しい技術を試したい!だけなら悪いことはいいません。
Deep Learning に対応した PaaS 環境を時間貸しで試したほうが良いと思います。

■Azure なら、こんなに簡単調達

DeepLearning on Azure

DeepLearning on Azure

気になる価格は次のスクリーンショットで。

CNTK_on_Azure_Price_JP

CNTK_on_Azure_Price_JP

1時間あたり税別42円ですって。
1日あたり1,008円デスワヨ。そりゃ、クラウド破産するわな。リソース拡大でw

ものの5分で利用可能ですもの。これを使わないなんて、なんて、どうして、勿体ない。

全部入り。これが、僅か5分で利用開始になるなんて。

RDP なので適度にパケット圧縮も効いててイイ感じ。インターネット網からの接続は不安なら、ExpressRoute による閉域接続をどうぞ。(回線費用は別途しますが)

以上