はじめに
前回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
実行してみます!
モデルを作成するところで終わっていたので、まずはデプロイするところからやってみます。
デプロイ
「デプロイ」をクリックします。
- リアルタイムエンドポイント
- Webサービスへの配置
の2つを選べますが、今回はWebサービスの方でデプロイを行います。
「名前」と「コンピューティングの種類」を入力したらデプロイできます。
デプロイ完了後、推論を行ってみます。
「テスト」タブに移って実行すると…
結果がJSON形式で返ってきました。
次に「使用」タブのところでPythonコードが載っているのでこれを回してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
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')) |