【Python SDK v2】Azure AutoMLで作ったモデルをPythonからデプロイする

はじめに

前回PythonからAzure AutoMLを使ってトレーニングを行いました。今回はトレーニングしてできたモデルをデプロイしてみようと思います。

開発環境

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

モデルの登録

まずは前回トレーニングしたジョブの中で一番精度が良いモデルのパスを取得します。
そのためにはまずジョブの名前(ジョブID)、モデル名が必要となります。

ジョブIDの取得

前回のトレーニング時にジョブの返り値をprintするようにしていました。

その結果

この中の

nameのところに書いているのがジョブの名前およびジョブIDです。

ドキュメントを参照してみると、statusnameだけを取り出したい場合は次のようにします。

このstatusが

となったのを確認したらベストモデルの名前を探してみます。

ベストモデルの名前

では、ジョブの名前がわかったので、今度は1番良いモデルの名前を得るためにMLClientクラスからジョブの詳細を出します。

実行すると

この中に

という項目があります。これが一番良いモデルの名前です。

モデル登録

では、モデル名がわかったのでモデル登録をしていきます。

AutoMLで作成されたモデルはdatastoresの固定の場所に入るため、先ほど取得したモデルの名前をdcid.の次に入力します。

実際に実行してPythonからモデルを登録してみると…
image.png
モデル一覧にちゃんとできていました。

モデルのデプロイ

まずは登録したモデルのエンドポイントを作成します。

エンドポイント作成

実行後、このように作成できました!
image.png

Pythonからエンドポイントが作成できたかどうか調べるときは次のコードでできます。

MLClientクラスを使ってstatusチェックしたいエンドポイント名を入力すると、

こちらが返ってきます。

エンドポイントが正常に作成されていたら、上記のようにSucceededとなります。

デプロイ

それでは登録したモデルのデプロイを行います。

conda_env_v_1_0_0.ymlscoring_file_v_2_0_0.pyは作成された1番良いモデルの「出力とログ」から取得しました。

出力とログ

「出力とログ」にはベストモデルの説明するためのexplanationフォルダとoutputsフォルダが生成されています。
image.png
この「outputs」フォルダの中身はコチラ
image.png
onnx形式のモデルや3種類のscoring_fileがあります。

今回はcondaファイルはバージョン1を選択しましたが、scoring_fileの方がバージョン2なので、condaファイルは今後修正が必要かと思われます。

scoring_file_v_2_0_0.pyの中身を見てみるとこんな感じです。

これでデプロイ行い、完了後テストを行うと…

image.png

このように結果が返ってきました。

推論

「使用」タブからpythonコードを取得できるので、これを使って推論を行います。

修正した箇所はapi_keyのみです。
ここは主キーのところから取得できます。

無題.png

実行したら、

と結果が返ってきました。今回のcreditcardの学習についてはClass列がfalseとtrueどちらになるかを予測するものだったので、動いていることが確認できました。

まとめ

  • AutoMLをPythonからデプロイしてみた
  • ベストモデルの名前はMLClientのjobsの詳細で取得可能

この記事を書いた人

azure-recipe-user