CNTKを使ったDeep Learning環境の簡単構築

# はじめに
近年、画像認識や自然言語処理など、Deep Learning(DL)を利用したAIの活用が徐々に広がっており、仕事で触れる機会も徐々に出てきました。
Deep Learningのフレームワークとしては、TensorFlowやCaffeなどが良く知られていますが、
今回は、Microsoft Azureで各種開発環境をインストール済みの仮想マシン(Data Science Virtual Machine)が提供されていることから、
Cognitive Toolkit (CNTK) とMicrosoft Azureの仮想環境を利用して、DL開発環境を簡単に構築してみます。

# CNTKとは？
Microsoftからリリースされている、深層学習(Deep Learning)向けのフレームワークです。
C++, pythonのAPIが用意されており、Windows環境だけでなく、Linuxでの開発にも対応しています。
実行環境としてCPU利用とGPU利用を選択することができ、複数GPU環境にも対応しているとのことです。
[参考]
 - https://www.cntk.ai/Tutorials/GTC2017/S7129_Scalable_Deep_Learning_with_Microsoft_Cognitive_Toolkit_SayanPathak.pdf
 - https://docs.microsoft.com/en-us/cognitive-toolkit/Setup-CNTK-on-your-machine

# 環境構築の流れ
今回は、Data Science Virtual Machine (DSVM)のWindows Server 2016版を利用して環境を構築します。
構築の手順は下記の通りです。
1. Microsoft Azure のサブスクリプションの準備
2. Data Science Virtual Machine (DSVM)の構築
3. Jupyter Notebookを起動

# Microsoft Azureサブスクリプションの準備
Azureのサブスクリプションは、[無料体験版](https://azure.microsoft.com/ja-jp/free/)(1ヶ月間20,000円分まで)や[MSDN特典のサブスクリプション](https://azure.microsoft.com/ja-jp/pricing/member-offers/msdn-benefits-details/)から利用できるほか、
有償契約での利用(従量課金、Open版、EA版、CSP版など)も可能です。
それぞれの契約方法については、下記をご参照いただき、本稿では割愛させていただきます。
[参考] [価格の概要 - Azure 価格の仕組み](https://azure.microsoft.com/ja-jp/pricing/)

# Data Science Virtual Machine (DSVM)の構築
1. [Azureポータル](http://portal.azure.com)へアクセスします。
2. 「＋新規」を選択します
3.  検索ウィンドウに「Data Science Virtual Machine」と入力します。
　![1-003_DSVM作成-1..png](https://qiita-image-store.s3.amazonaws.com/0/204058/f8f52ddb-9b90-48a6-0aab-6d7bfa24e2e2.png)
4.  「Data Science Virtual Machine - Windows 2016」を選択します。
![1-004_DSVM作成-2..png](https://qiita-image-store.s3.amazonaws.com/0/204058/b14320dc-d7fc-8ce3-4e26-35706d8fd754.png)
5.  VM名、OSアカウント・パスワード等を入力します。
6.  サイズを選択します。( NCシリーズ推奨。今回はNC6を選択。)
 * NCシリーズは、コンピューティングに特化したGPU(NVIDIA Tesla K80)を搭載した仮想マシンで、Deep Learningの処理等に適しているとのことです。( 参考:  [Azure Windows VMのサイズ - GPU](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/sizes-gpu) )
7.  リソースグループ、仮想ネットワーク、IPアドレス等の設定をします。
 * 5.～7.の手順については、[こちら](https://docs.microsoft.com/ja-jp/azure/machine-learning/machine-learning-data-science-provision-vm#create-your-microsoft-data-science-virtual-machine)をご参照ください。
8.  リモートデスクトップで接続します。
![1-005_DSVM初期デスクトップ画面..png](https://qiita-image-store.s3.amazonaws.com/0/204058/37d49c7b-5324-c046-4bcb-0d3ae4232b2b.png)

初期状態では、下記ソフトウェアがインストールされています。
 * Microsoft R Server - 開発者Edition。 （Scarable R）
 * Anaconda Python
 * SQL Server 2016 Developer Edition
 * Microsoft Office 365 ProPlus BYOL - Shared Conputer Activation
  --  Shared Conputer Activation(SCA)については[こちらを参照](https://support.office.com/ja-jp/article/Office-365-ProPlus-%e3%81%ab%e5%af%be%e3%81%99%e3%82%8b%e5%85%b1%e6%9c%89%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf%e3%83%bc%e3%81%ae%e3%83%a9%e3%82%a4%e3%82%bb%e3%83%b3%e3%82%b9%e8%aa%8d%e8%a8%bc%e3%81%ae%e6%a6%82%e8%a6%81-836f882c-8ff6-4f19-8b24-0212e0111c94?ui=ja-JP&rs=ja-JP&ad=JP)
 * Julia Pro + Juno Editor
 * Jupyter Notebook
 * Visual Studio Community Edition + Python, R＆node.jsツール
 * Power BI Desktop
 * 各種Deep learning　例：Microsoft Cognitive Toolkit (CNTK 2.0), TensorFlow & mxnet
 * ML アルゴリズムライブラリ　 例：xgboost, Vowpal Wabbit
 * 下記各種Azure Cloud製品用のAzure SDK +ライブラリ統合ツール
    ・Azure Machine Learning
    ・Azure Data Factory
    ・Stream Analytics
    ・SQL Data Warehouse
    ・Hadoop + Apache Spark (HDICluster)
    ・Data Lake
    ・Blob storage
    ・ML & Data Science チュートリアル (Jupyter Notebook形式)

# Jupyter Notebookの起動

DSVMには、あらかじめJupyter Notebookがインストールされています。
コマンドプロンプト(cmd.exe)かWindows Powershellを起動して、下記コマンドを入力するだけで起動できます。

`jupyter notebook`

![1-008_Jupyter起動直後画面..png](https://qiita-image-store.s3.amazonaws.com/0/204058/88a24eb9-d50c-35f5-41ca-3882963c18f4.png)

# CNTKの動作確認
Jupyter Notebookから、下記のコードを入力すると、CNTKのバージョンを確認することが出来ます。

``` python:
import cntk as C
C.__version__
```

![1-009_CNTKバージョン確認..png](https://qiita-image-store.s3.amazonaws.com/0/204058/d3586d59-ff59-4187-3b71-077578a14cad.png)

# 次回
次回は、CNTKを使って簡単なプログラムを書いてみます。