既存の py ファイルを #AzureML で実行・管理する方法

この投稿は、Azure AI Advent Calendar に参加しています。

Azure Machine Learning とは無関係に開発した、既存の py ファイルを AzureML のワークスペースで実行する方法と、そのメリットを紹介します。
おまけに VSCode の拡張機能込みでローカルの Azure ML 開発環境の作り方も紹介。公式の手順 も公開されてるし全然難しくないんですが、たまたま最近、環境構築でちょっと困っている人を見かけたので。

Azure Machine Learning のメリットと言えば

  • 基本的なライブラリや Azure ML に必要なライブラリが組み込まれた 仮想マシンを手間なく作成してくれる
  • Training Cluster は自動的にシャットダウンされるので、余計な課金を気にしなくてよい(設定にもよるけど)
  • 実験(=スクリプトの実行)の結果を自動的に管理してくれる

です。

メリットが強力なので、既存の py ファイルも Azure ML で実行するのがいいと思います。
既存のファイルに対して、ちょいちょいと簡単に対応できます。実験や結果の管理ができるのだから、やらない手はないでしょう。


ローカル PC に開発環境を構築する手順

公式ドキュメント のままですが、こんな感じ。

1. Anaconda インストール
ローカルのあれこれがトラブルの元なので Anaconda を推奨

2. Anaconda Prompt で環境作成とアクティベート
今のところ、Azure ML SDK は Python 3.6 がおすすめ

conda create -n myenv python=3.6
conda activate myenv

3. 環境固有の ipython, jupyter をインストール、アクティベート

conda install notebook ipykernel
ipython kernel install --user --name myenv --display-name "Python (myenv)"

4. Azure ML SDK インストール

pip install azureml-sdk[notebooks,automl]

5. (必要に応じて)他のパッケージを conda インストールまたは pip インストール

6. VSCode に “Azure Machine Learning” 拡張機能をインストール
まだ入れてなかった人は先生に反省文を提出するレベルに必須

これでローカルの開発環境は完成。


VSCode 内で py ファイルを実行できることを確認

いよいよ既存の py ファイルを Azure ML で実験します。

といっても、ローカルの VSCode 上で py を実行できないとスタートラインにも立ててないので、まずはそれを確認します。
以下の説明では、vscode-tools-for-ai にある MNIST (またそれか!)を使います。実際に自分でも試してみたいという人は git clone なり ZIP ダウンロードなりでローカルに持ってきてください。

なお vscode-tools-for-ai にある MNIST の train.py は、Tensorflow 1 系を使っています。環境にインストールが必要です。
今回限定の注意点としては 2 系の Tensorflow はダメです。理由はスクリプト中で Tensorflow の placeholder を使っているから。

1. VSCode で vscode-tools-for-ai フォルダーを開いて、train.py を開く

2. Python のインタープリターを選択
拡張機能インストール済みの VSCode なら、左下に “Python 3.6.5” 的な表記があるので、これをクリックして、PC に作成済みの環境の中から今回使用するものを選択します。
または Ctrl + Shift + p でコマンドパレットを開いて “python select interpreter” と入力しても OK

3. (必須ではない)必要に応じて pylint をインストール
この場合、一旦 VSCode を終了して Anaconda Prompt で conda インストールするのがよさそう

4. F5 キーなり Ctrl + F5 キーなりメニュー選択で train.py を実行
環境構築に間違いが無ければ、ローカル PC の CPU / GPU を使って動きます。


Azure ML で実行するためにスクリプトを編集

前置きが長くなりました。
ここまでが一回やっておけば今後は不要だったり、手順が分かってササっとできる手順。

これができていてローカルでの動作が確認できれば、既存のスクリプトを変更なしで Azure ML で実験することができます。

が、以下の操作をすることで、実験のメトリックを自動的に保存、管理することができるようになります。
今回はそれを目指します。簡単です。

1. train.py と同じフォルダー (mnist-vscode-docs.sample) に ” amlrun.py” ファイルを新規作成
ファイルの内容は以下の通り。全くそのままコピペです

import azureml
from azureml.core import Run

# access the Azure ML run
# init run param to check if running within AML
def get_AMLRun():
    try:
        run = Run.get_submitted_run()
        return run
    except Exception as e:
        print("Caught = {}".format(e.message))
        return None

2. train.py を開いて、以下のインポートを追加
追加する場所は、”from utils import prepare_data” の下くらい

from amlrun import get_AMLRun

3. Azure ML 実行オブジェクトを初期化
Tensorflow の初期化付近に入れます。

run = get_AMLRun()

4. AML 実行オブジェクトの log を使って、記録したいメトリックを出力
例えば、こんな感じ

        # log accuracies to AML logger if using AML
        if run != None:
            run.log('Validation Accuracy', np.float(acc_val))
            run.log('Training Accuracy', np.float(acc_train))

以上でスクリプトファイルの編集は終わり。

  • amlrun.py をひな形のままコピペで作成
  • train.py で AML 実行オブジェクトを作成、初期化、メトリックの出力

が必要な操作でした。


Azure ML ワークスペース上で実験

いよいよ、Azure ML 上でスクリプトを実行します。

1. VSCode で Azure アクティビティバーを開く
拡張機能のインストールをしていれば “MACHINE LEARNING” タブが表示されているはず

2. 対象のワークスペースの Experiments を右クリックして [Create Experiment] を選択して実験を作成
この後の手順で既存の Experiment を使うのであればこの手順は不要

3. Experiment の名前を入力

4. Experiment ができたら、右クリックして [Run Experiment]

5. 実験を実行するコンピュートリソースを選択
ML studio で作成した Target Cluster コンピュートを利用することもローカルの CPU / GPU を利用することも可能

6. 実行するスクリプトを指定
ここではもちろん “train.py”

7. AzureML での Experiment 定義ファイルが表示されるので “Submit experiment” をクリックして登録

8. 指定したコンピュートリソースを使用して実験が開始
実行状況は VSCode 上でも確認可能。ただしステータスの更新には数十秒程度タイムラグがあるのでどうしても気になる場合は ML studio (ml.azure.com) で状況を見ることも可能

9. 実験が終了したら、収集したメトリックを表示して確認


以上が、既存の py ファイルを Azure ML で実行・管理する方法です。


ローカルで、あるいはクラウド上の Python 実行環境で学習して、ログファイルを手作業で管理したり、(場合によっては)自分で結果を記録したりということをせずに実行の履歴を管理したり、正確に簡単にメトリックを確認できます。

これだけのために Azure ML を使ってもいいレベルです。
必要なら、この後 MLOps に繋げることもできるでしょう。

「PC 持ってるし、別に Azure じゃなくても」と考えるのは絶対に損。
がしがし活用しましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中