Azure Machine Learning Studio: PowerShellによるWeb Serviceのデプロイと運用を検証する② エンドポイント作成編

Michaelです。
今回は、前回に引き続きAzure Machine Learning Studio (ML Studio)のPowerShell用モジュール「AzureMLPS」を使用して、PowerShellによるWeb Serviceのデプロイと運用について検証していきます。
2回目は、PowerShellを使ってモデルとWeb Serviceエンドポイントの作成を行っていきます。

Web Serviceエンドポイント作成フロー

前回も紹介したように、Web Serviceのデプロイと運用をするために以下の3操作をプログラムで実行してみます。

1. 学習用Web Serviceでモデルを作成
2. 予測用Web Serviceにエンドポイントを追加
3. 追加したエンドポイントのモデルを置換

1. 学習用Web Serviceでモデルを作成

それでは、実際にPowerShellでAzure ML Studioを操作してみます。
まずは、AzureMLPS とモデル名等の各種設定を定義しておきます。学習用Web Serviceで作成したモデルはAzure Storageに保存されるため、書き込みのためにストレージアカウント名とキーも設定しておきます。

続いて、学習用Web Serviceでモデルを作成します。モデル作成のスクリプトは以下のようになります。

なお、モデル作成ジョブの設定値は学習用Web Serviceの「Batch Execution」リファレンスの「Sample Request Payload」を参照して設定して下さい。

上記スクリプトを実行すると学習用Web Serviceが実行され、成功すると指定したBlob Storageの指定ディレクトリにモデル(.ilearner)とその精度評価データ(.csv)が出力されます。

2. 予測用Web Serviceにエンドポイントを追加

次に、予測用Web Serviceにエンドポイントを追加します。
Web Serviceには、作成段階で1つのデフォルトエンドポイントが作成されますが、このエンドポイントはモデルの更新ができないため、1モデルを更新しながら運用する場合でも、1つは新規エンドポイントを作成する必要があります。
エンドポイントを追加するスクリプトは以下のようになります。

上記スクリプトまでを実行するとWeb Serviceにエンドポイントが追加されます。ここで作成されるエンドポイントはデフォルトエンドポイントのコピーであるため、まだ予測モデルは適用されていません。試しに、モデル作成時に使用した評価データをテストデータとして予測してみると、データが全く異なるため実際の分類とは異なるスコアリングがされたデータが返ってきました。

・予測モデルの精度評価

・作成したエンドポイントの精度評価

3. 追加したエンドポイントのモデルを置換

最後に、エンドポイントのモデルを新規に作成したモデルで置換します。
モデル置換に使用するPatch-AmlWebServiceEndpointコマンドレットは若干設定の複雑なコマンドレットで、設定値に設定先エンドポイント、Blob Storage上のモデルのパスのほか、置換する予測用Experiment上のモデルの名称を指定する必要があります。

モデルのパスについてはモデル作成時のレスポンスを参照すれば取得でき、予測用Experiment上のモデルの名称についてはGet-AmlTrainedModelコマンドレットで取得できます。
エンドポイントのモデルを置換するスクリプトは以下のようになります。

上記スクリプトを実行するとエンドポイントのモデルが置き換わり、新規作成したモデルで予測ができるになります。モデル置換後のエンドポイントで再度評価データをスコアリングしてみると、モデル評価と全く同じスコアリング結果が得られていることがわかりました。

・予測モデルの精度評価

・モデル置換前の精度評価

・モデル置換後の精度評価

まとめ

今回は、1つのモデルについて学習からエンドポイント作成までを行いました。この一連の流れが、モデルとエンドポイントの作成の基本となり、ループ処理を加えることでバッチ的に複数のモデルとエンドポイントを作成できます。
次回は、作成したスクリプトにループ処理を追加して複数のモデルとエンドポイントを作成してみます。

この記事を書いた人

azure-recipe-user