LoginSignup
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-12-02

はじめに

前回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
このように先ほどと同じ結果が返ってきました!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1