AutoML モデルをオンライン エンドポイントにデプロイする方法
[アーティクル] 09/03/2024
15 人の共同作成者
フィードバック
この記事の内容
適用対象: Azure CLI ml extension v2 (現行) Python SDK azure-ai-ml v2 (現行)
この記事では、AutoML でトレーニングされた機械学習モデルをオンラインのリアルタイム推論エンドポイントにデプロイする方法について説明します。 自動機械学習 (自動 ML または AutoML とも呼ばれます) は、機械学習モデルを開発する時間のかかる反復的なタスクを自動化するプロセスです。 詳細については、「自動機械学習 (AutoML) とは 」を参照してください
次のセクションでは、以下を使用して、AutoML でトレーニングされた機械学習モデルをオンライン エンドポイントにデプロイする方法について説明します。
Azure Machine Learning Studio
Azure Machine Learning CLI v2
Azure Machine Learning Python SDK v2
前提条件
Azure Machine Learning スタジオからのデプロイとコードなし
[自動 ML] ページからの AutoML でトレーニングされたモデルのデプロイは、コードなしの操作です。 つまり、スコアリング スクリプトと環境は、どちらも自動的に生成されるので、用意する必要はありません。
Azure Machine Learning スタジオの [自動 ML] ページに移動します。
実験を選択して実行します。
[モデル + 子ジョブ] タブを選択します。
デプロイするモデルを選択します。
モデルを選択すると、[デプロイ] ボタンがドロップダウン メニューで使用可能になります。
[リアルタイム エンドポイント] オプションを選択します。
システムによって、デプロイに必要なモデルと環境が生成されます。
スタジオまたはコマンド ラインから手動でデプロイする
デプロイをより細かく制御する必要がある場合は、トレーニング成果物をダウンロードしてデプロイできます。
デプロイに必要なコンポーネントをダウンロードするには:
自動 ML 実験にアクセスして、Machine Learning ワークスペースで実行します。
[モデル + 子ジョブ] タブを選択します。
使用するモデルを選択します。 モデルを選択すると、[ダウンロード] ボタンが有効になります。
[ダウンロード] を選択します。
次のものを含む zip ファイルを受け取ります。
conda_env_<VERSION>.yml という名前の Conda 環境仕様のファイル
scoring_file_<VERSION>.py という名前の Python スコアリング ファイル
model.pkl という名前の Python .pkl ファイルにあるモデル自体
これらのファイルを使用してデプロイする場合は、スタジオまたは Azure CLI を使用できます。
Azure Machine Learning スタジオの [モデル] ページにアクセスします。
[+ 登録] > [ローカル ファイルから] を選択します。
自動 ML 実行からダウンロードしたモデルを登録します。
[環境] ページにアクセスし、[カスタム環境] を選択し、[+ 作成] を選択してデプロイ用の環境を作成します。 ダウンロードした Conda yaml を使用してカスタム環境を作成します。
モデルを選択し、[デプロイ] ドロップダウン メニューから [リアルタイム エンドポイント] を選択します。
ウィザードのすべての手順を完了して、オンライン エンドポイントとデプロイを作成します。
適用対象: Azure CLI ml 拡張機能 v2 (現行)
CLI からデプロイを作成するには、ML v2 拡張機能を持つ Azure CLI が必要です。 確認するには以下のコマンドを実行します。
az version
エラー メッセージが表示された場合、または応答に Extensions: ml
が表示されない場合は、「Extensions: ml
」の手順に従ってください。
サインイン。
az login
複数の Azure サブスクリプションにアクセスできる場合は、アクティブなサブスクリプションを設定できます。
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
デプロイを作成する場所に、既定のリソース グループとワークスペースを設定します。
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
スコアリング ファイルを独自のディレクトリに配置する
src というディレクトリを作成します。 ダウンロードしたスコアリング ファイルを保存します。 このディレクトリは Azure にアップロードされ、推論を行うために必要なすべてのソース コードが含まれています。 AutoML モデルの場合、スコアリング ファイルは 1 つだけです。
エンドポイントおよびデプロイ yaml ファイルを作成する
コマンド ラインからオンライン エンドポイントを作成するには、endpoint.yml と deployment.yml ファイルを作成します。 Azure Machine Learning の例リポジトリ から取得した次のコードは、必要なすべての入力をキャプチャする、endpoints/online/managed/sample/ を示しています。
automl_endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
automl_deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yaml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
[AutoML モデル] ページからダウンロードしたファイルを使用するには、このファイルを変更する必要があります。
ファイル automl_endpoint.yml と automl_deployment.yml を作成し、前の例の内容を貼り付けます。
エンドポイントの name
の値を変更します。 エンドポイント名は、Azure リージョン内で一意である必要があります。 エンドポイント名は、大文字または小文字で始まり、'-' と英数字のみで構成されている必要があります。
automl_deployment.yml ファイルで、以下のパスにあるキーの値を変更します。
Path
変更後の値
model:path
ダウンロードした model.pkl ファイルへのパス。
code_configuration:code:path
スコアリング ファイルを配置したディレクトリ。
code_configuration:scoring_script
Python スコアリング ファイルの名前 (scoring_file_<VERSION>.py )。
environment:conda_file
ダウンロードされた Conda 環境ファイル (conda_env_<VERSION>.yml ) のファイル URL。
コマンド ラインから次を実行します。
適用対象: Azure CLI ml 拡張機能 v2 (現行)
az ml online-endpoint create -f automl_endpoint.yml
az ml online-deployment create -f automl_deployment.yml
デプロイを作成したら、「モデルを使用してデータをスコアリングするエンドポイントの呼び出し 」で説明されているようにスコアリングできます。
適用対象 : Python SDK azure-ai-ml v2 (現行)
Python SDK v2 をインストールする必要がある場合は、次のコマンドを使用してインストールします。
pip install azure-ai-ml azure-identity
詳細については、Azure Machine Learning SDK v2 for Python のインストール に関するページを参照してください。
スコアリング ファイルを独自のディレクトリに配置する
src というディレクトリを作成します。 ダウンロードしたスコアリング ファイルを保存します。 このディレクトリは Azure にアップロードされ、推論を行うために必要なすべてのソース コードが含まれています。 AutoML モデルの場合、スコアリング ファイルは 1 つだけです。
Azure Machine Learning ワークスペースに接続する
必要なライブラリをインポートします。
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
ワークスペースの詳細を構成し、ワークスペースへのハンドルを取得します。
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
エンドポイントとデプロイを作成する
マネージド オンライン エンドポイントとデプロイを作成します。
オンライン エンドポイントを構成します。
ヒント
name
: エンドポイントの名前。 Azure リージョンで一意である必要があります。 エンドポイント名は、大文字または小文字で始まり、'-' と英数字のみで構成されている必要があります。 名前付け規則の詳細については、「エンドポイントの制限 」を参照してください。
auth_mode
: キーベースの認証に key
を使用します。 Azure Machine Learning のトークン ベースの認証に aml_token
を使用します。 key
には有効期限がありませんが、aml_token
には有効期限があります。 認証の詳細については、オンライン エンドポイントの認証 に関する記事を参照してください。
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
エンドポイントを作成します。
先ほど作成した MLClient
を使用して、ワークスペースにエンドポイントを作成します。 このコマンドを実行すると、エンドポイントの作成が開始されます。 エンドポイントの作成が続行されている間、確認応答が返されます。
ml_client.begin_create_or_update(endpoint)
オンライン デプロイを構成します。
デプロイは、実際の推論を実行するモデルをホストするのに必要なリソースのセットです。 ManagedOnlineDeployment
クラスを使用してエンドポイントのデプロイを作成します。
model = Model(path="./src/model.pkl")
env = Environment(
conda_file="./src/conda_env_v_1_0_0.yml",
image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=online_endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="./src", scoring_script="scoring_file_v_2_0_0.py"
),
instance_type="Standard_DS2_v2",
instance_count=1,
)
この例では、[AutoML モデル] ページからダウンロードしたファイルは src ディレクトリ内にあります。 状況に合わせてコード内のパラメーターを変更できます。
パラメーター
変更後の値
model:path
ダウンロードした model.pkl ファイルへのパス。
code_configuration:code:path
スコアリング ファイルを配置したディレクトリ。
code_configuration:scoring_script
Python スコアリング ファイルの名前 (scoring_file_<VERSION>.py )。
environment:conda_file
ダウンロードされた Conda 環境ファイル (conda_env_<VERSION>.yml ) のファイル URL。
配置を作成します。
先ほど作成した MLClient
を使用して、ワークスペースにデプロイを作成します。 このコマンドによって、デプロイの作成が開始されます。 デプロイの作成が続行されている間、確認応答が返されます。
ml_client.begin_create_or_update(blue_deployment)
デプロイを作成した後、サンプル データを使用してエンドポイントをテストする に関するページの説明に従って、デプロイをスコア付けできます。
SDK を使用したマネージド オンライン エンドポイントへのデプロイの詳細については、「オンライン エンドポイントを使用して機械学習モデルをデプロイおよびスコア付けする 」を参照してください。
関連するコンテンツ