Azure Machine Learning Workbench とは

Azure Machine Learning Workbench(以下、 Workbench)は、 Microsoft Azure(以下、 Azure)上で提供される Azure Machine Learning サービスにおけるクライアント環境で、ローカルマシン上または Azure 上で機械学習を実行することができます。

Workbench そのものはローカルマシン上で動作させることができるのですが、 Azure の機能を利用しているため、 Azure のサブスクリプションが必要になります。

TensorFlow とは

TensorFlow は、 Google が開発した機械学習のための Python 用の計算ライブラリーです1。主にディープニューラルネットワーク(ディープラーニング)を実行するのに利用されます。

Workbench で TensorFlow を実行する

Azure に実験アカウントを作成する

実験(experimentation)とは、機械学習のモデルを作成・実行する際に利用する管理単位です。アカウント中には複数のワークスペースを作成することができます。

Azure ポータル上で実験を作成するには、「Create a resource」から、検索ボックスに “Machine Learning Experimentation” と入力し、表示された項目を選択します。

表示されるウィンドウ中に、必要な項目を入力して作成します。「Model Management pricing tier」という項目は、選択した項目に応じて費用が異なるため、お試しで実行したいだけの場合は、 “DEVTEST” という無料の価格レベルを設定します。

Workbench をインストールする

Azure ポータル上で作成した実験アカウントを表示すると、 Overview のブレード内に、 Workbench のダウンロードリンクが表示されます。 Windows または macOS の利用している方をクリックすると、インストーラーのダウンロードが開始します。

ダウンロードしたインストーラーを起動し、指示にしたがいインストールを行います。

プロジェクトを作成する

インストールした Workbench を起動すると、 Microsoft アカウントへのログインを要求されます。ログインすると、アカウントに紐づいたワークスペースが表示されます。ワークスペースが存在しない場合は、作成方法が表示されます。

画面左上の「Projects」という横にあるプラスアイコンから、 “New Project” をクリックして、新しいプロジェクトを作成します。作業環境であるワークスペース中に、実際の作業内容であるプロジェクトを複数配置することができます。

プロジェクト名と、作業用フォルダーを指定し、さらに TensorFlow を利用するためにプロジェクトテンプレートに “MNIST using TensorFlow” を選択します2

ノートブックを作成する

Workbench には、 Jupyter Notebook があらかじめインストールされています。 Workbench 左側のノートアイコンを選択し、新規ノートブックを作成します。

ノートブックを選択し、 “Start Notebook Server” をクリックして Jupyter のカーネルを起動します。起動したら、ノートブックの Kernel メニューから、「<プロジェクト名> docker」カーネルに変更して Restart からカーネルの再起動を行います(デフォルトのカーネルは「<プロジェクト名> local」)。このときブラウザーで Jupyter ノートブックが開くかもしれませんが、そのまま閉じてしまって構いません。

Docker のカーネルを利用するのは、プロジェクトテンプレートで “MNIST using TensorFlow” を選択したため、 Docker コンテナにはあらかじめ TensorFlow がインストールされているのですが、 Workbench と一緒にインストールされた Python には TensorFlow がインストールされていないためです。 Docker が利用できないなどで、 Workbench 同梱の Python に TensorFlow をインストールしたい場合は、 File メニューの「Open Command Prompt」で起動したターミナルから、 pip コマンドで TensorFlow をインストールします。

$ pip install tensorflow

コードを作成・実行する

Jupyter ノートブックが起動したので、あとは普通に TensorFlow を利用するコードを書きます。カーネルが起動してからコードが実行できるようになるまで少し時間がかかるかもしれません。

作成したノートブックには、 azureml というパッケージの処理が含まれます。これは Workbench で学習の結果を記録するのに利用するものです。

from azureml.logging import get_azureml_logger
logger = get_azureml_logger()

学習過程で求められる損失関数の値や精度といったメトリクスをこのロガーで出力すると、 Jupyter Notebook 上でグラフとして出力されます。注意すべき点として、 TensorBoard のように学習途中に都度出力するのではなく、メトリクスをリストに保存して、最後にまとめて出力する必要があります。

# メトリクス保存用のリスト
metrics = []

# 学習
for step in range(0, NUM_STEPS):
    # 学習実行
    value = sess.run([loss_func])
        # メトリクスの保存
        metrics.append(value)

# メトリクスの出力
logger.log('Metrics', metrics)

プロジェクトフォルダーの下に、 tf_mnist.py というコードが存在します。ここでは、このコードをそのままノートブックにコピーして実行してみましょう。

以下のリンクからノートブックがダウンロードできます。単純にために学習パラメーターを少しいじっています。

ノートブックをダウンロード

結果を確認する

ウィンドウ右上の「«」をクリックしてジョブ一覧を表示し、ノートブックを実行したジョブを選択すると、以下のような結果が表示できます。

まとめ

Azure Machine Learning Workbench(Workbench)を利用して TensorFlow を実行する手順を示しました。 Workbench はローカルマシン上で機械学習を実行するための試行錯誤できる環境を揃えています。

本記事では解説しませんでしたが、最初に述べたように Azure 上で実行することもできます。例えば強力な GPU インスタンスを用意して学習するといったワークフローも考えられます。ローカルマシンでの実行と、 Azure 上のリモートマシンでの実行は簡単に切り替えることができるため、テスト用の小規模データでの実験をローカルマシンで行い、本番用の大規模データを実行する際はリモートマシンで行う、といったようなことも簡単に行えます。 Azure が使えるデータ分析業務の場合は、ぜひ Workbench を使ってください。


  1. JavaScript で動作する TensorFlow.js もあります。 
  2. もし “Blank Project” を選択してしまった場合は、プロジェクトの環境アイコン(立方体のアイコン)から docker を選択し、「Conda Dependencies File」の目のアイコンをクリックして YAML ファイルを開き、 dependencies キーに pandas と tensorflow を追加します。なお、同一の設定ファイルは、プロジェクトフォルダー直下の aml_config というフォルダーの中に存在します。