Azure AutoMLのトレーニング~推論で必要なものをPythonから取ってみた

はじめに

Azure AutoMLのトレーニングから推論に関わる

  • トレーニング送信したジョブのstatus
  • ベストモデル名
  • デプロイ状況
  • RESTエンドポイントやAPIキー

これらをPythonから取得する方法について紹介します。

開発環境

  • OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
  • Visual Studio Code 1.73.1
  • Python 3.8

ジョブIDからStatusとベストモデル名を取得する方法

PythonからAutoMLのトレーニングを送信した後、それが終わったのかどうか知るためにはstatusが必要です。また、トレーニングしたモデルを登録する場合、ベストモデルの名前が必要です。(登録時はそのモデルがあるパスも必要ですが、モデルの名前さえあればパス名もわかります。)

このstatusとモデル名は、どちらもジョブIDから一気に取得できます。
ということで、まずはそのジョブIDを取ってきましょう。

ジョブIDの取得方法その①

1つ目の方法はStudioからの取得です(下記画像の赤線部分)。

無題.png

ジョブIDの取得方法その②

もしくはトレーニング送信時に、ジョブを表示させるようにしていたらそこからジョブIDを取得することもできます。参考:AutoMLのPythonからトレーニングの記事

トレーニング送信時

これで送信時にジョブの内容が返ってきます。

nameにジョブIDがのってます。

これでジョブiDがわかったので、これを使ってジョブのstatusとベストモデル名を取得します。

statusとモデル名の取得

下記コードのようにMLClientクラスを使って実行すればOKです。

ワークスペースへ接続するためのサブスクリプションIDリソース名ワークスペース名の取得方法は過去の記事をご覧ください。

get()nameに取得したいモデルが入っているジョブ名を入れます。

実行したら次の結果が返ってきます。

statusとベストモデルの名前はそれぞれ次のところを確認。

Completedのほかに
実行中→Running、実行失敗→Failed、停止中→Stoppedなどがあります。

ベストモデルの名前はよく見るとジョブIDの後ろに「_〇(数字)」がついています。
この数字の意味は、トレーニングで作成されたモデルの順番を表しています。

取ってきたベストモデルの名前を使ってPythonからモデル登録をする方法はこちらの記事を参照ください!

モデル登録したら、今度はエンドポイントを作成してモデルをデプロイになります。
ということで次はデプロイのステータスを確認してみましょう。

デプロイ状況を確認する方法

Pythonからデプロイが完了したかどうかの確認もMLClientクラスを使えばいけます。
ジョブ確認時はjobsメソッドを使いましたが、デプロイに関してはonline_depolymentsメソッドを使います。

nameにはデプロイ名を、endpoint_nameにはエンドポイント名を入れます。
上記を実行した結果がコチラ↓

デプロイ状況はprovisioning_stateで確認できます。

デプロイ完了を確認したら今度は推論です。
推論するときはRESTエンドポイントとAPIキーが必要なので、これをPythonから取ってきましょう。

RESTエンドポイント・APIキーの取得方法

Studioからとってくる場合は画像の赤線のところから取得できます。
無題.png
この2つをPythonから取ってみましょう。
エンドポイント名を使えばどちらも簡単に取得できます。

RESTエンドポイント

online_endpointsgetメソッドを使います。

ここのnameのところには、デプロイ時に指定したエンドポイント名を入れましょう。
返ってくる結果がコチラ

scoring_uriの部分がRESTエンドポイントです。他にもopenapi_uriにはswagger URIがあります。

APIキー

同じくonline_endpointsget_keysメソッドを使えば取得できます。

実行したらAPIキーが返ってきます。

RESTエンドポイントとAPIキーを使ってPythonから推論する方法についてはこちらの記事をご覧ください!

まとめ

今回はAzure AutoMLでトレーニング~推論まで行うときに必要なものをPythonから取得する方法を紹介しました。何か必要になったらとりあえずMLClientを、って感じですね。

MLCLientクラスの公式ドキュメント

この記事を書いた人

azure-recipe-user