LoginSignup
0
0

More than 5 years have passed since last update.

Azure Batch AIでCNTKのサンプルプログラムを動かしてみる(その3:ジョブ実行編)

Last updated at Posted at 2018-05-11

はじめに

本稿では前回までに引き続き、Azure Batch AIでCNTKのサンプルジョブを実行してみます。
今回は、BatchAIクラスターでのジョブ実行を試してみます。

Batch AIサンプルジョブ実行

今回は、Github上でMicrosoftが公開しているサンプルプログラムを利用して、MNISTデータセットを使ったCNNの学習処理を行うジョブを作成してみます。

ジョブ実行手順

1. サンプルプログラムのデータをダウンロード

 i. こちらからMNISTデータセットのファイルをダウンロードします。
 ※Zipファイルになっており、展開するとTrain-28x28_cntk_text.txt、Test-28x28_cntk_text.txtの2ファイルが入っています。
 ii. こちらからConvNet_MNIST.cntkを取得します。
 ※こちらの「Clone or download」ボタンから、関連ファイル一式をまとめてダウンロードできます。

2. プログラムとデータをAzure File Storageにアップロード

 i. Azure File Storageにディレクトリ作成
  前回作成したファイル共有に、ディレクトリを3つ作成します。(「external」「cntk_samples」「mnist_dataset」)
  06_02_ファイルアップロード01.png
  06_02_ファイルアップロード02.png
 ii. mnist_datasetに1-i.で取得したTrain-28x28_cntk_text.txt、Test-28x28_cntk_text.txtを、cntk_samplesに1-ii.で取得したConvNet_MNIST.cntkを、それぞれアップロードします。
  06_02_ファイルアップロード04.png

3. ジョブの作成・実行

 i. まず、ポータルの[すべてのサービス]→[バッチ AI]→[概要]→前回作成したBatch AIクラスター名を選択します。
  06_01_BatchAIジョブ作成01.png

 ii. [概要]→[+追加 Batch AI ジョブ]から、ジョブを作成します。
  06_01_BatchAIジョブ作成02.png

 iii. ジョブ名称(任意の名称)を入力し、サブスクリプション・優先度・ノード数・利用するBatch AIクラスター(前回の手順で作成したもの)を選択します。
  ※実験名は空欄でも実行できます。
  06_01_BatchAIジョブ作成03.png

 iv. [ツールの種類]で「CNTK」を選択すると、CNTK実行のための設定項目が表示されます。
  ・ [言語の種類]では、今回BrainScriptを利用するので「BrainScript」を選択します。
  ・ [構成ファイル]では、実行するCNTKファイルのパスを入力します。
   (今回は「\$AZ_BATCHAI_INPUT_CONFIG/Convnet_MNIST.cntk」と入力します。)
  ・ [コマンドライン引数]では、CNTKファイル実行時の引数を指定します。
   (今回は、「rootDir=. dataDir=\$AZ_BATCHAI_INPUT_DATASET outputDir=\$AZ_BATCHAI_OUTPUT_MODEL」と入力します。)
   ※「\$AZ_BATCHAI_INPUT_CONFIG」「\$AZ_BATCHAI_INPUT_DATASET」「\$AZ_BATCHAI_OUTPUT_MODEL」については、後述します。
  06_01_BatchAIジョブ作成04.png

 v. 標準出力の出力先と入力ディレクトリ(CNTKファイルやデータセットの参照先)を指定します。
  今回は、
  ・ ID: CONFIG、 パスプレフィックス:\$AZ_BATCHAI_MOUNT_ROOT/external、パスのサフィックス: cntk_samples
  ・ ID: DATASET、 パスプレフィックス:\$AZ_BATCHAI_MOUNT_ROOT/external、パスのサフィックス: mnist_dataset
  の2つを登録します。
  ※IDは $AZ_BATCHAI_(INPUT or OUTPUT)_[ID名]として、変数に追加されます。
  ※パスのサフィックスは、2.で作成したディレクトリ名です。
  ※[追加]ボタン押下後、ID/パスが空欄だと[選択]を押せないケースがあるようです。
   その場合、ID/パスのところに任意の適当な文字を入れておくと、[選択]を押せるようになります。
   (実際に登録されるのは、入力欄の下に表示された項目のみです。)
  06_01_BatchAIジョブ作成05.png

 vi. 出力ディレクトリ(モデルファイルの出力先)を指定します。
  06_01_BatchAIジョブ作成06.png

 vii. コンテナーの設定で、CNTK実行環境のコンテナイメージを選択します。
  今回は、「microsoft/cntk:2.1-gpu-python3.5-cuda8.0-cudnn6.0」のイメージを選択します。
  06_01_BatchAIジョブ作成07.png
 [OK]ボタンを押すと、ジョブが登録され、クラスタ上で実行されます。
  ※クラスターメニューの[ジョブ]から、登録したジョブ名を選択すると、実行状況を確認することが出来ます。
  06_02_ジョブ実行03.png
  ファイル共有を確認すると、サブスクリプションID名のディレクトリが作成されており、その下層をたどっていくと、出力されたモデルファイルやログが格納されています。
 06_02_ジョブ実行04.png

これまで、CNTKを呼び出すにはpython等で色々コードを書く必要がありましたが、BatchAIではGUIが拡充されており、
コードをあまり書かなくても、モデル作成まで実施できるようになっています。
クラスタの増減も簡単にできる為、DeepLearningをちょっと試してみたい、という時にはかなり便利かもしれません。

補足

クラスタを使わないときは、Batch AIのクラスターメニュー→[スケール]から、[ノードのターゲット数]を「0」に指定するとノードが削除されるため、ノードの課金が停止されます。
 ※[ノードのターゲット数]が1以上だと、ノード数分の課金がかかり続けるので注意が必要です。
  (特に、GPUを使えるNシリーズは単価が高いのでご注意ください..)
  06_05_クラスタ削減.png

 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0