オンライン エンドポイントを使用して機械学習モデルをデプロイおよびスコア付けする

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

この記事では、リアルタイム推論で使うためにモデルをオンライン エンドポイントにデプロイする方法について説明します。 まずローカル コンピューターにモデルをデプロイして、発生するエラーをデバッグします。 次に、Azure でそのモデルをデプロイしてテストし、デプロイ ログを表示し、サービス レベル アグリーメント (SLA) を監視します。 この記事の終わりまでに、リアルタイム推論に使用できるスケーラブルな HTTPS/REST エンドポイントが用意されています。

オンライン エンドポイントは、リアルタイムの推論に使用されるエンドポイントです。 オンライン エンドポイントには、2 つの種類があります。マネージド オンライン エンドポイントKubernetes オンライン エンドポイントです。 エンドポイントの詳細、およびマネージド オンライン エンドポイントと Kubernetes オンライン エンドポイントの違いについては、Azure Machine Learning のエンドポイントの概要に関する記事をご覧ください。

マネージド オンライン エンドポイントは、ターンキー方式で機械学習モデルを展開するのに役立ちます。 マネージド オンライン エンドポイントは、スケーラブルでフル マネージドの方法で Azure の強力な CPU および GPU マシンと動作します。 マネージド オンライン エンドポイントは、モデルの提供、スケーリング、セキュリティ保護、監視を行います。基になるインフラストラクチャの設定と管理のオーバーヘッドがなくなります。

このドキュメントの主な例では、デプロイにマネージド オンライン エンドポイントを使用します。 代わりに Kubernetes を使用する場合は、マネージド オンライン エンドポイントに関する説明に沿って本ドキュメント内に記載されている注記を参照してください。

前提条件

適用対象: Azure CLI ML 拡張機能 v2 (現行)

この記事の手順に従う前に、次の前提条件が満たされていることをご確認ください。

  • Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure Machine Learning の操作に対するアクセスを許可するために使用されます。 この記事の手順を実行するには、ユーザー アカウントに、Azure Machine Learning ワークスペースの所有者共同作成者ロール、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* を許可するカスタム ロールを割り当てる必要があります。 スタジオを使ってオンライン エンドポイントやデプロイを作成するか管理する場合は、リソース グループ所有者からのアクセス許可 "Microsoft.Resources/deployments/write" がさらに必要になります。 詳細については、「Azure Machine Learning ワークスペースへのアクセスの管理」を参照してください。

  • (省略可能) ロ―カルでデプロイするには、ローカル コンピューターに Docker エンジンをインストールする必要があります。 問題のデバッグを容易にするため、このオプションを "強くお勧めします"。

  • デプロイ用に十分な仮想マシン (VM) クォータが割り当てられていることを確認してください。 Azure Machine Learning では、一部の VM SKU で、アップグレードを実行するためにコンピューティング リソースの 20% が予約されます。 たとえば、1 つのデプロイで 10 個のインスタンスを要求する場合は、VM SKU のコア数ごとに 12 個分のクォータが必要です。 この追加分のコンピューティング リソースを考慮していないと、エラーが発生します。 一部の VM SKU は、この追加クォータの予約の対象外です。 クォータ割り当てについて詳しくは、「デプロイのための仮想マシン クォータの割り当て」をご覧ください。

  • または、Azure Machine Learning の共有クォータ プールからのクォータを期間限定で使うこともできます。 期間限定でこのプールからのクォータにアクセスしてテストを実行できます。 スタジオを使ってモデル カタログから Llama-2、Phi、Nemotron、Mistral、Dolly、Deci-DeciLM モデルをマネージド オンライン エンドポイントにデプロイした場合、Azure Machine Learning では、テストを実行できるように、少しの間、その共有クォータ プールにアクセスできます。 共有クォータ プールについて詳しくは、「Azure Machine Learning の共有クォータ」をご覧ください。

システムを準備する

環境変数の設定

まだ Azure CLI の既定値を設定していない場合は、既定の設定を保存する必要があります。 サブスクリプション、ワークスペース、およびリソース グループの値を複数回渡さないようにするには、次のコードを実行します。

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

examples リポジトリをクローンします

このアーティクルに従って、まずサンプル リポジトリ (azureml-examples) を複製します。 その後、次のコードを実行してリポジトリの cli/ ディレクトリに移動します。

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli

ヒント

--depth 1 を使用すると、リポジトリに対する最新のコミットだけが複製されるので、操作の完了にかかる時間を短縮できます。

このチュートリアルのコマンドは、cli ディレクトリ内のファイル deploy-local-endpoint.shdeploy-managed-online-endpoint.sh に入っています。また、YAML 構成ファイルは endpoints/online/managed/sample/ サブディレクトリ内にあります。

注意

Kubernetes オンライン エンドポイントの YAML 構成ファイルは、endpoints/online/kubernetes/サブディレクトリにあります。

エンドポイントを定義する

オンライン エンドポイントを定義するには、エンドポイント名認証モードを指定します。 マネージド オンライン エンドポイントについて詳しくは、「オンライン エンドポイント」をご覧ください。

エンドポイント名を設定する

エンドポイント名を設定するには、次のコマンドを実行します。 YOUR_ENDPOINT_NAME を Azure リージョンでの一意の名前に置き換えます。 名前付け規則の詳細については、「エンドポイントの制限」を参照してください。

Linux の場合は、次のコマンドを実行します。

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

エンドポイントを構成する

次のスニペットは、endpoints/online/managed/sample/endpoint.yml ファイルを示しています。

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

エンドポイント YAML 形式のリファレンスを次の表で説明します。 これらの属性の指定方法については、オンライン エンドポイント YAML リファレンスに関する記事を参照してください。 マネージド エンドポイントに関する制限については、オンライン エンドポイントの制限に関する記事を参照してください。

Key 説明
$schema (省略可能) YAML スキーマ。 上記のコード スニペットをブラウザーで表示すると、YAML ファイルで使用可能なすべてのオプションを確認できます。
name エンドポイントの名前。
auth_mode キーベースの認証に key を使用します。
Azure Machine Learning のトークン ベースの認証に aml_token を使用します。
Microsoft Entra トークンベースの認証 (プレビュー) の場合は aad_token を使います。
認証の詳細については、オンライン エンドポイントのクライアントを認証するに関する記事を参照してください。

デプロイを定義する

デプロイは、実際の推論を実行するモデルをホストするのに必要なリソースのセットです。 この例では、回帰を実行する scikit-learn モデルをデプロイし、スコアリング スクリプト score.py を使って、指定された入力要求に基づいてそのモデルを実行します。

デプロイの主な属性については、「オンライン デプロイ」をご覧ください。

デプロイを構成する

デプロイ構成では、デプロイするモデルの場所が使われます。

次のスニペットは、デプロイを構成するのに必要なすべての入力が指定された endpoints/online/managed/sample/blue-deployment.yml ファイルを示しています。

blue-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

blue-deployment.yml ファイルで、次のデプロイ属性が指定されています。

  • model - path (ファイルのアップロード元) を使って、モデルのプロパティをインラインで指定します。 CLI によって自動的にモデル ファイルがアップロードされ、自動生成された名前でモデルが登録されます。
  • environment - ファイルのアップロード元を含むインライン定義を使って、CLI によって自動的に conda.yaml ファイルがアップロードされ、環境が登録されます。 後で、環境を構築するために、デプロイで基本イメージに image (この例では、その mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) が使われ、conda_file の依存関係がその基本イメージの上にインストールされます。
  • code_configuration - デプロイ中に、開発環境からローカル ファイル (スコアリング モデル用の Python ソースなど) がアップロードされます。

YAML スキーマの詳細については、オンライン エンドポイント YAML リファレンスに関するドキュメントを参照してください。

Note

コンピューティング先としてマネージド オンライン エンドポイントではなく Kubernetes エンドポイントを使うには:

  1. Azure Machine Learning スタジオを使用して、Kubernetes クラスターを作成し、Azure Machine Learning ワークスペースにコンピューティング先としてアタッチします。
  2. Kubernetes をターゲットにするには、マネージド エンドポイント YAML ではなく、エンドポイント YAML を使います。 YAML を編集して compute の値を登録済みコンピューティング先の名前に変更する必要があります。 Kubernetes デプロイに適用できる追加プロパティがある、この deployment.yaml を使うことができます。

マネージド オンライン エンドポイントに関してこの記事で使われているすべてのコマンドは、Kubernetes エンドポイントにも適用されます。ただし、次の機能は Kubernetes エンドポイントには適用されません。

スコアリング スクリプトを理解する

ヒント

オンライン エンドポイントのスコアリング スクリプトの形式は、前のバージョンの CLI や Python SDK で使用されている形式と同じです。

code_configuration.scoring_script で指定されているスコアリング スクリプトには、init() 関数と run() 関数が含まれている必要があります。

この例では、score.py ファイル: score.py を使用します

import os
import logging
import json
import numpy
import joblib


def init():
    """
    This function is called when the container is initialized/started, typically after create/update of the deployment.
    You can write the logic here to perform init operations like caching the model in memory
    """
    global model
    # AZUREML_MODEL_DIR is an environment variable created during deployment.
    # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
    # Please provide your model's folder name if there is one
    model_path = os.path.join(
        os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
    )
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)
    logging.info("Init complete")


def run(raw_data):
    """
    This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
    In the example we extract the data from the json input and call the scikit-learn model's predict()
    method and return the result back
    """
    logging.info("model 1: request received")
    data = json.loads(raw_data)["data"]
    data = numpy.array(data)
    result = model.predict(data)
    logging.info("Request processed")
    return result.tolist()

init() 関数は、コンテナーが初期化または起動された時に呼び出されます。 初期化は、通常、デプロイが作成または更新された直後に実行されます。 init 関数は、モデルをメモリにキャッシュするなど (この score.py ファイル内で示されている)、グローバルな初期化操作のロジックを記述する場所です。

run() 関数は、エンドポイントが呼び出されるたびに呼び出され、実際のスコアリングと予測を実行します。 この score.py ファイル内では、run() 関数で、 JSON 入力からデータを抽出し、scikit-learn モデルの predict() メソッドを呼び出してから、予測結果を返しています。

ローカル エンドポイントを使ってデプロイしローカルでデバッグする

Azure にデプロイする前にローカルでエンドポイントをテスト実行してコードと構成を検証しデバッグすることをお勧めします。 Azure CLI と Python SDK ではローカルのエンドポイントとデプロイがサポートされていますが、Azure Machine Learning スタジオと ARM テンプレートではサポートされていません。

ローカルにデプロイするには、Docker エンジンをインストールして実行する必要があります。 通常、Docker エンジンは、コンピューターの起動時に起動します。 起動しない場合は、Docker エンジンをトラブルシューティングします。

ヒント

Azure Machine Learning 推論 HTTP サーバー Python パッケージを使用して、Docker エンジンなしでスコアリング スクリプトをローカルでデバッグできます。 推論サーバーを使用したデバッグは、ローカル エンドポイントにデプロイする前にスコアリング スクリプトをデバッグするのに役立ちます。これにより、デプロイ コンテナーの構成の影響を受けることなくデバッグできます。

Azure にデプロイする前にオンライン エンドポイントをローカルでデバッグする方法について詳しくは、「オンライン エンドポイントのデバッグ」をご覧ください。

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

最初にエンドポイントを作成します。 必要に応じて、ローカル エンドポイントの場合は、この手順をスキップして直接デプロイを作成し (次の手順)、これにより必要なメタデータを作成します。 モデルをローカル環境にデプロイすると、開発とテストに役立ちます。

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

ここで、エンドポイントの下に blue という名前のデプロイを作成します。

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

--local フラグは、エンドポイントを Docker 環境にデプロイするよう CLI に命令するものです。

ヒント

お使いのエンドポイントをローカルでテストおよびデバッグするには、Visual Studio Code を使用します。 詳細については、Visual Studio Code でオンライン エンドポイントをローカルでデバッグする方法に関する記事を参照してください。

ローカル デプロイが成功したかどうかを確認する

デプロイ状態を調べて、エラーなしでモデルがデプロイされたかどうかを確認します。

az ml online-endpoint show -n $ENDPOINT_NAME --local

出力は次の JSON のようになります。 provisioning_stateSucceeded です。

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

次の表は、provisioning_state に指定できる値です。

Value 説明
作成 リソースを作成しています。
更新中 リソースを更新しています。
削除中 リソースは削除中です。
Succeeded 作成/更新操作が成功しました。
Failed 作成/更新/削除操作が失敗しました。

ローカル エンドポイントを呼び出し、モデルを使用してデータをスコアリングする

エンドポイントを呼び出してモデルをスコアリングするには、invoke コマンドを使い、JSON ファイルに格納されているクエリ パラメーターを渡します。

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

REST クライアント (curl など) を使用する場合は、スコアリング URI が必要です。 スコアリング URI を取得するには、az ml online-endpoint show --local -n $ENDPOINT_NAME を実行します。 返された値で、scoring_uri 属性を探します。

呼び出し操作からの出力をログで確認する

例の score.py ファイルでは、run() メソッドがいくつかの出力をコンソールにログしています。

この出力は、get-logs コマンドを使って確認できます。

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

オンライン エンドポイントを Azure にデプロイする

次に、オンライン エンドポイントを Azure にデプロイする 運用環境の場合のベスト プラクティスとして、デプロイで使うモデルと環境を登録することをお勧めします。

モデルと環境を登録する

登録済みの名前とバージョンをデプロイの間に指定できるように、Azure にデプロイする前にモデルと環境を登録することをお勧めします。 資産を登録すると、それらをデプロイ作成のたびにアップロードする必要なく再使用できるようになるため、再現性と追跡可能性が向上します。

Note

Azure へのデプロイとは異なり、ローカル デプロイでは、登録済みのモデルと環境の使用はサポートされていません。 代わりに、ローカル デプロイでは、ローカル モデル ファイルが使われ、ローカル ファイルのみを含む環境が使われます。 Azure へのデプロイの場合は、ローカル資産か登録済み資産 (モデルと環境) のどちらかを使うことができます。 この記事のこの項では、Azure へのデプロイで登録済み資産を使っていますが、代わりにローカル資産を使うこともできます。 ローカル デプロイの場合の使用するローカル ファイルをアップロードするデプロイ構成の例は、「デプロイを構成する」をご覧ください。

モデルと環境を登録するには、model: azureml:my-model:1 または environment: azureml:my-env:1 という形式を使います。 登録するためには、modelenvironment の YAML 定義を別々の YAML ファイルに抽出し、az ml model create コマンドと az ml environment create コマンドを使用します。 これらのコマンドの詳細については、az ml model create -haz ml environment create -h を実行してください。

  1. モデルの YAML 定義を作成します。

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. モデルを登録します。

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. 環境の YAML 定義を作成します。

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. 環境を登録します。

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

モデルを資産として登録する方法の詳細については、「CLI を使用して、Machine Learning でモデルを資産として登録する」を参照してください。 環境の作成の詳細については、「CLI および SDK (v2) を使用した Azure Machine Learning 環境の管理」を参照してください。

登録済み資産を使うデプロイを構成する

デプロイ構成では、デプロイする登録済みモデルと、登録済み環境が使われます。

デプロイ定義で登録済み資産 (モデルと環境) を使います。 次のスニペットでは、デプロイを構成するのに必要な入力内容がすべて指定されている endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml ファイルを示しています。

blue-deployment-with-registered-assets.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

CPU と GPU の異なるインスタンス タイプおよびイメージを使用する

ローカル デプロイの場合も Azure へのデプロイの場合も、デプロイ定義で、CPU または GPU のインスタンス種類とイメージを指定できます。

blue-deployment-with-registered-assets.yml ファイル内のデプロイ定義では、汎用型の Standard_DS3_v2 インスタンスと非 GPU Docker イメージ mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest が使われています。 GPU コンピューティングの場合は、GPU コンピューティング タイプの SKU と GPU の Docker イメージを選択します。

サポートされる汎用タイプと GPU インスタンス タイプについては、マネージド オンライン エンドポイントでサポートされる VM SKU に関するページを参照してください。 Azure Machine Learning CPU と GPU の基本イメージの一覧については、「Azure Machine Learning 基本イメージ」を参照してください。

Note

コンピューティング先としてマネージド エンドポイントではなく Kubernetes を使う場合は、「Azure Machine Learning での Kubernetes コンピューティング先の概要」をご覧ください。

次に、オンライン エンドポイントを Azure にデプロイする

Deploy to Azure (Azure へのデプロイ)

  1. Azure クラウドにエンドポイントを作成します。

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. エンドポイントの下に blue という名前のデプロイを作成します。

    az ml online-deployment create -name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    デプロイ作成では、基になる環境やイメージを初めて構築しているかどうかによって、最長で 15 分かかる可能性があります。 同じ環境を使う後続のデプロイは、より迅速に処理されます。

    ヒント

    • CLI コンソールをブロックしたくない場合は、コマンドに --no-wait フラグを追加してください。 ただし、このオプションを使うと、デプロイ状態が対話的に表示されなくなります。

    重要

    デプロイの作成に使われるコード az ml online-deployment create--all-traffic フラグを指定すると、新規作成されたブルー デプロイにエンドポイント トラフィックの 100% が割り当てられるようになります。 これは開発環境とテスト環境では役立ちますが、運用環境では、明示的なコマンドによって新しいデプロイにトラフィックをルーティングする必要がある場合があります。 たとえば、az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100" のようにします。

デプロイでのエラーをデバッグするには、「オンライン エンドポイントのデプロイとスコアリングのトラブルシューティング」をご覧ください。

エンドポイントの状態を確認する

  1. show コマンドを使って、エンドポイントとデプロイについて provisioning_state に情報を表示します。

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. list コマンドを使って、ワークスペース内のすべてのエンドポイントを表形式で一覧表示します。

    az ml online-endpoint list --output table
    

オンライン デプロイの状態を確認する

ログを調べて、モデルがエラーなしでデプロイされたかどうかを確認します。

  1. コンテナーからのログ出力を表示するには、次の CLI コマンドを使用します。

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

    既定では、ログは推論サーバー コンテナーからプルされます。 ストレージ初期化子コンテナーのログを表示するには、--container storage-initializer フラグを追加します。 デプロイのログについて詳しくは、「コンテナー ログを取得する」をご覧ください。

エンドポイントを呼び出し、モデルを使用してデータをスコアリングする

  1. invoke コマンドか任意の REST クライアントを使ってエンドポイントを呼び出しデータをスコアリングします。

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. エンドポイントに対する認証に使うキーを取得します。

    ヒント

    認証キーを取得できる Microsoft Entra セキュリティ プリンシパルは、Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action を許可するカスタム ロールにそれを割り当てることで制御できます。 ワークスペースに対する認可の管理について詳しくは、「Azure Machine Learning ワークスペースへのアクセスの管理」をご覧ください。

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. curl を使ってデータをスコアリングします。

    SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
    
    curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
    

    show コマンドと get-credentials コマンドを使って認証資格情報を取得していることに注目してください。 また、--query フラグを使って必要な属性のみをフィルターしていることに注目してください。 --query フラグについて詳しくは、Azure CLI コマンドの出力に対するクエリに関する記事をご覧ください。

  4. 起動ログを表示するには、再度 get-logs を実行します。

(省略可能) デプロイを更新する

コード、モデル、または環境を更新する場合は、YAML ファイルを更新し、次に az ml online-endpoint update コマンドを実行します。

注意

単一の update コマンドでインスタンス数 (デプロイをスケーリングするため) と他のモデル設定 (コード、モデル、環境など) を更新する場合、最初にスケーリング操作が実行され、その後に他の更新が適用されます。 運用環境では、これらの操作を個別に実行することをお勧めします。

update の動作を理解するには:

  1. ファイル online/model-1/onlinescoring/score.py を開きます。

  2. init() 関数の最後の行を変更します。logging.info("Init complete") の後に、logging.info("Updated successfully") を追加してください。

  3. ファイルを保存します。

  4. 次のコマンドを実行します。

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    注意

    YAML を使用した更新は宣言型です。 つまり YAML の変更は、基になる Azure Resource Manager リソース (エンドポイントとデプロイ) に反映されます。 この宣言型アプローチによって GitOps が促進されます。つまり、エンドポイントとデプロイに対する "すべて" の変更は YAML を経由することになります (instance_count も含む)。

    ヒント

    • --set パラメーターなどの汎用更新パラメーターを CLI の update コマンドで使用すると、YAML 内の属性をオーバーライドしたり、"あるいは" 特定の属性を YAML ファイルに渡さずに設定したりできます。 個別の属性に対する --set の使用は、特に開発およびテストのシナリオで利便性を発揮します。 たとえば、最初のデプロイの instance_count 値をスケールアップするのであれば、--set instance_count=2 フラグを使用できます。 ただし、YAML が更新されないため、この手法に GitOps を促進する効果はありません。
    • YAML ファイルの指定は必須ではありません。 たとえば、特定のデプロイに対して異なるコンカレンシー設定をテストする場合は、az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4 などを試すことができます。 これにより、既存のすべての構成は保持され、指定されたパラメーターのみが更新されます。
  5. エンドポイントの作成時または更新時に実行される init() 関数に変更を加えたため、Updated successfully というメッセージがログに記録されます。 次を実行してログを取得します。

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

update コマンドは、ローカル デプロイでも動作します。 同じ az ml online-deployment update コマンドを --local フラグと共に使用します。

この項で示すデプロイの更新は、インプレース ローリング更新の例です。

  • マネージド オンライン エンドポイントの場合、デプロイは一度に 20% のノードずつ新しい構成に更新されます。 つまり、デプロイに 10 個のノードがある場合は、一度に 2 つのノードが更新されます。
  • Kubernetes オンライン エンドポイントの場合は、デプロイ インスタンスが新しい構成で新規作成され前のデプロイ インスタンスが削除されるということが繰り返されます。
  • 運用環境で使用する場合は、ブルーグリーン デプロイを検討することをお勧めします。これは、Web サービスを更新するためのより安全な代替手段を提供します。

(省略可能) 自動スケーリングを構成する

自動スケールでは、アプリケーションの負荷を処理するために適切な量のリソースが自動的に実行されます。 マネージド オンライン エンドポイントでは、Azure Monitor 自動スケーリング機能との統合によって、自動スケーリングをサポートします。 自動スケールを構成するには、「オンライン エンドポイントを自動スケーリングする方法」をご覧ください。

(省略可能) Azure Monitor を使用して SLA を監視する

メトリックを表示し、SLA に基づいてアラートを設定するには、オンライン エンドポイントの監視に関するページの手順を実行します。

(省略可能) Log Analytics と統合する

CLI の get-logs コマンドまたは SDK の get_logs メソッドで取得できるのは、自動的に選ばれたインスタンスからのログの最後の数百行だけです。 一方、Log Analytics は、ログを永続的に保存して分析する手段となります。 ログの使用の詳細については、「オンライン エンドポイントを監視する」を参照してください。

エンドポイントとデプロイを削除する

エンドポイントと、その基にあるデプロイすべてを削除します。

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait