Share via


ローカルでモデルをデプロイする

Azure Machine Learning を使用して Azure Machine Learning コンピューティング インスタンス にモデルを Web サービスとしてデプロイする方法を説明します。 次のいずれかの条件に当てはまる場合はコンピューティング インスタンスを使用します。

  • モデルを迅速にデプロイおよび検証する必要があります。
  • 開発中のモデルをテストします。

ヒント

コンピューティング インスタンスの Jupyter Notebook から、同じ VM 上の Web サービスへのモデルのデプロイは、"ローカル デプロイ" です。 この場合、"ローカル" コンピューターはコンピューティング インスタンスです。

注意

Azure Machine Learning のエンドポイント (v2) では、デプロイが改善され、シンプルになります。 エンドポイントは、リアルタイム シナリオとバッチ推論の両方をサポートします。 エンドポイントは、複数のコンピューティングの種類にわたってモデル デプロイを起動および管理するための統一インターフェイスを提供します。 「Azure Machine Learning エンドポイントとは」を参照してください。

前提条件

コンピューティング インスタンスへデプロイする

ローカル デプロイを示すノートブックの例がコンピューティング インスタンスに含まれています。 次の手順を使用してノートブックを読み込み、モデルを Web サービスとして VM にデプロイします。

  1. Azure Machine Learning スタジオで、[ノートブック] を選択し、[サンプル ノートブック] の下にある [how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb] を選択します。 このノートブックをユーザー フォルダーに複製します。

  2. 手順 1 で複製したノートブックを見つけて、このノートブックを実行するコンピューティング インスタンスを選択または作成します。

    ノートブックで実行されているローカル サービスのスクリーンショット

  3. ノートブックには、サービスが実行されている URL とポートが表示されます。 たとえば、「 https://localhost:6789 」のように入力します。 また、print('Local service port: {}'.format(local_service.port)) を含むセルを実行して、ポートを表示することもできます。

    実行されているローカル サービス ポートのスクリーンショット

  4. コンピューティング インスタンスからサービスをテストするには、URL https://localhost:<local_service.port> を使用します。 リモート クライアントからテストするには、コンピューティング インスタンスで実行されているサービスのパブリック URL を取得します。 パブリック URL は、次の形式を使用して決定できます。

    • ノートブック VM: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score
    • コンピューティング インスタンス: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score

    たとえば、次のように入力します。

    • ノートブック VM: https://vm-name-6789.northcentralus.notebooks.azureml.net/score
    • コンピューティング インスタンス: https://vm-name-6789.northcentralus.instances.azureml.net/score

サービスをテストする

実行中のサービスにサンプル データを送信するには、次のコードを使用します。 値 service_url を、前の手順で取得した URL に置き換えます。

注意

コンピューティング インスタンスでのデプロイに対して認証を行う場合、認証は Azure Active Directory を使用して行われます。 コード例の interactive_auth.get_authentication_header() を呼び出すと、AAD を使用してあなたが認証され、コンピューティング インスタンスでのサービスに対する認証に使用できるヘッダーが返されます。 詳細については、「Azure Machine Learning のリソースとワークフローの認証を設定する」を参照してください。

Azure Kubernetes Service または Azure Container Instances でのデプロイに対して認証を行う場合は、別の認証方法が使用されます。 詳細については、「Web サービスとしてデプロイされた Azure Machine モデルの認証を構成する」を参照してください。

import requests
import json
from azureml.core.authentication import InteractiveLoginAuthentication

# Get a token to authenticate to the compute instance from remote
interactive_auth = InteractiveLoginAuthentication()
auth_header = interactive_auth.get_authentication_header()

# Create and submit a request using the auth header
headers = auth_header
# Add content type header
headers.update({'Content-Type':'application/json'})

# Sample data to send to the service
test_sample = json.dumps({'data': [
    [1,2,3,4,5,6,7,8,9,10],
    [10,9,8,7,6,5,4,3,2,1]
]})
test_sample = bytes(test_sample,encoding = 'utf8')

# Replace with the URL for your compute instance, as determined from the previous section
service_url = "https://vm-name-6789.northcentralus.notebooks.azureml.net/score"
# for a compute instance, the url would be https://vm-name-6789.northcentralus.instances.azureml.net/score
resp = requests.post(service_url, test_sample, headers=headers)
print("prediction:", resp.text)

次のステップ