Azure AutoMLで作ったモデルをPythonから推論してみた

はじめに

前回KaggleのTPSコンペのデータを用いてAzure Auto MLからモデルを作成しましたが、(前回の記事は こちら )これを今度はPythonから推論してみようと思います。

開発環境

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

実行してみます!

モデルを作成するところで終わっていたので、まずはデプロイするところからやってみます。

デプロイ

「モデル」タグから一番精度の良いものを選択し、

automl2.png

「デプロイ」をクリックします。

image.png
  • リアルタイムエンドポイント
  • Webサービスへの配置

の2つを選べますが、今回はWebサービスの方でデプロイを行います。

image.png

「名前」と「コンピューティングの種類」を入力したらデプロイできます。

デプロイ完了後、推論を行ってみます。

「テスト」タブに移って実行すると…

image.png
結果がJSON形式で返ってきました。

次に「使用」タブのところでPythonコードが載っているのでこれを回してみます。

predict.py
import urllib.request
import json
import os
import ssl

def allowSelfSignedHttps(allowed):

    if allowed and not os.environ.get('PYTHONHTTPSVERIFY', '') and getattr(ssl, '_create_unverified_context', None):
        ssl._create_default_https_context = ssl._create_unverified_context

allowSelfSignedHttps(True) 

data =  {
  "Inputs": {
    "data": [
      {
        "id": 0,
        "product_code": "example_value",
        "loading": 0.0,
        "attribute_0": "example_value",
        "attribute_1": "example_value",
        "attribute_2": 0,
        "attribute_3": 0,
        "measurement_0": 0,
        "measurement_1": 0,
        "measurement_2": 0,
        "measurement_3": 0.0,
        "measurement_4": 0.0,
        "measurement_5": 0.0,
        "measurement_6": 0.0,
        "measurement_7": 0.0,
        "measurement_8": 0.0,
        "measurement_9": 0.0,
        "measurement_10": 0.0,
        "measurement_11": 0.0,
        "measurement_12": 0.0,
        "measurement_13": 0.0,
        "measurement_14": 0.0,
        "measurement_15": 0.0,
        "measurement_16": 0.0,
        "measurement_17": 0.0
      }
    ]
  },
  "GlobalParameters": {
    "method": "predict"
  }
}

body = str.encode(json.dumps(data))

url = 'http://XXX'
api_key = '' 

headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}

req = urllib.request.Request(url, body, headers)

try:
    response = urllib.request.urlopen(req)

    result = response.read()
    print(result)
except urllib.error.HTTPError as error:
    print("The request failed with status code: " + str(error.code))

# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure

    print(error.info())
    print(error.read().decode("utf8", 'ignore'))
image.png
このように先ほどと同じ結果が返ってきました!

この記事を書いた人

azure-recipe-user