AutoML モデルをオンライン エンドポイントにデプロイする方法
[アーティクル]
04/04/2023
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
前提条件
AutoML でトレーニングされた機械学習モデル。 詳細については、「チュートリアル: Azure Machine Learning スタジオでコードなし AutoML を使用して分類モデルをトレーニングする 」または「チュートリアル: 自動機械学習を使用して需要を予測する 」を参照してください。
Azure Machine Learning スタジオからのデプロイとコードなし
[自動 ML] ページからの AutoML でトレーニングされたモデルのデプロイは、コードなしの操作です。 つまり、スコアリング スクリプトと環境は、どちらも自動的に生成されるので、用意する必要はありません。
スタジオの [自動 ML] ページにアクセスします
実験を選択して実行します
[モデル] タブを選択します
デプロイするモデルを選択します
モデルを選択すると、[デプロイ] ボタンがドロップダウン メニューに表示されます
[Deploy to real-time endpoint](リアルタイム エンドポイントへのデプロイ) オプションを選択します
システムによって、デプロイに必要なモデルと環境が生成されます。
ウィザードを完了して、モデルをオンライン エンドポイントにデプロイします
スタジオまたはコマンド ラインから手動でデプロイする
デプロイをより細かくコントロールする場合は、トレーニング アーティファクトをダウンロードしてデプロイできます。
デプロイに必要なコンポーネントをダウンロードするには、次のようにします。
自動 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 の例リポジトリ から取得した次のコードは、必要なすべての入力をキャプチャする、エンドポイント/オンライン/マネージド/サンプル/ を示しています。
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
のファイルで、以下のパスにあるキーの値を変更します。
パス
変更後の値
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 を使用してマネージド オンライン エンドポイントにデプロイする方法の詳細については、Python SDK v2 を使用した機械学習モデルのマネージド オンライン エンドポイントへのデプロイ に関するページを参照してください。
次のステップ