CLI (v2) マネージド オンライン デプロイ YAML スキーマ

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

ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json にあります。

Note

このドキュメントで詳しく説明されている YAML 構文は、最新バージョンの ML CLI v2 拡張機能の JSON スキーマに基づいています。 この構文は、ML CLI v2 拡張機能の最新バージョンでのみ動作することが保証されています。 以前のバージョンの拡張機能のスキーマについては、https://azuremlschemasprod.azureedge.net/ でご確認いただけます。

YAML 構文

キー Type 説明 使用できる値 既定値
$schema string YAML スキーマ。 Azure Machine Learning 用 VS Code 拡張機能を使用して YAML ファイルを作成する場合は、ファイルの先頭に $schema を含めることで、スキーマとリソースの入力候補を呼び出すことができます。
name string 必須。 デプロイの名前。

名前付け規則はここで定義されています。
description string デプロイの説明。
tags object デプロイのタグの辞書。
endpoint_name string 必須。 デプロイの作成先となるエンドポイントの名前。
model 文字列またはオブジェクト デプロイに使用するモデル。 この値は、ワークスペース内の既存のバージョン管理されたモデルへの参照またはインライン モデルの仕様のいずれかです。

既存のモデルを参照するには、azureml:<model-name>:<model-version> 構文を使用します。

モデルをインラインで定義するには、モデル スキーマに従います。

運用シナリオのベスト プラクティスとして、モデルを個別に作成し、ここで参照します。

カスタム コンテナーのデプロイ シナリオでは、このフィールドは省略可能です。
model_mount_path string カスタム コンテナーにモデルをマウントするためのパス。 カスタム コンテナーのデプロイ シナリオにのみ適用されます。 model フィールドが指定されている場合は、コンテナー内のこのパスにマウントされます。
code_configuration object スコアリング コード ロジックの構成。

カスタム コンテナーのデプロイ シナリオでは、このフィールドは省略可能です。
code_configuration.code string モデルのスコアリングに使用するソース コード ディレクトリへのローカル パス。
code_configuration.scoring_script string ソース コード ディレクトリ内のスコアリング ファイルへの相対パス。
environment_variables object デプロイ コンテナーで設定する環境変数のキーと値のペアの辞書。 これらの環境変数には、スコアリング スクリプトからアクセスできます。
environment 文字列またはオブジェクト 必須です。 デプロイに使用する環境。 この値は、ワークスペース内の既存のバージョン管理された環境への参照、またはインライン環境仕様のいずれかになります。

既存の環境を参照するには、azureml:<environment-name>:<environment-version> 構文を使用します。

環境をインラインで定義するには、環境スキーマに従います。

運用シナリオのベスト プラクティスとして、環境を別途作成し、ここで参照することをお勧めします。
instance_type string 必須。 デプロイに使用する VM サイズ。 サポートされているサイズの一覧については、マネージド オンライン エンドポイント SKU の一覧に関するページを参照してください。
instance_count 整数 (integer) 必須です。 デプロイに使用するインスタンスの数。 予想されるワークロードに基づいて値を指定します。 高可用性を確保するために、Microsoft では 3 以上に設定することを推奨しています。

instance_count は、az ml online-deployment update コマンドを使用して、デプロイの作成後に更新できます。

アップグレードを実行するために 20% 余分に予約されています。 詳細については、デプロイの仮想マシン クォータの割り当てを参照してください
app_insights_enabled boolean ワークスペースに関連付けられた Azure Application Insights インスタンスとの統合を有効にするかどうかを指定します。 false
scale_settings object デプロイのスケール設定です。 現在サポートされているスケールの種類は default のみであるため、このプロパティを指定する必要はありません。

この default のスケールの種類を使用すると、デプロイの作成後に instance_count プロパティを更新してインスタンス数を手動でスケーリングするか、自動スケーリング ポリシーを作成するかのいずれかを行うことができます。
scale_settings.type string スケールの種類。 default default
data_collector object デプロイのデータ収集設定。 構成可能なプロパティのセットについては、「DataCollector」を参照してください。
request_settings object デプロイのスコアリング要求の設定。 構成可能なプロパティのセットについては、RequestSettings を参照してください。
liveness_probe object コンテナーの正常性を定期的に監視するための liveness probe の設定。 構成可能なプロパティのセットについては、ProbeSettings を参照してください。
readiness_probe object コンテナーがトラフィックを処理する準備ができているかどうかを検証する readiness probe 設定。 構成可能なプロパティのセットについては、ProbeSettings を参照してください。
egress_public_network_access string 注: このキーは、従来のネットワークの分離方法を使用して、デプロイ用の送信通信をセキュリティで保護するときに適用されます。 代わりにワークスペース マネージド VNet を使用して、デプロイ用の送信通信をセキュリティで保護することを強くお勧めします。

このフラグにより、デプロイとデプロイで使用される Azure リソースとの間の通信を制限することで、デプロイがセキュリティで保護されます。 disabled に設定することで、デプロイで必要なモデル、コード、イメージのダウンロードがプライベート エンドポイントによってセキュリティ保護されるようにします。 このフラグは、マネージド オンライン エンドポイントにのみ適用されます。
enabled, disabled enabled

RequestSettings

キー Type 説明 既定値
request_timeout_ms 整数 (integer) スコアリングのタイムアウト (ミリ秒)。 許容される最大値は 180000 ミリ秒であることに注意してください。 詳細については、 オンライン エンドポイントの制限を 参照してください。 5000
max_concurrent_requests_per_instance integer デプロイで許可されるインスタンスあたりの最大同時要求数。

注:Azure Machine Learning 推論サーバーまたは Azure Machine Learning 推論用イメージを使用している場合は、同時要求を処理するようにモデルを構成する必要があります。 そのためには、WORKER_COUNT: <int> を環境変数として渡します。 WORKER_COUNT の詳細については、Azure Machine Learning 推論サーバーのパラメーターに関するページを参照してください

注: モデルが 1 つのノードで同時に処理できる要求の数に設定してください。 この値をモデルの実際のコンカレンシーよりも大きく設定すると、遅延が大きくなることがあります。 この値を低く設定すると、使用率の低いノードが発生する可能性があります。 低すぎると、システムが高速に失敗することを選択するため、要求が 429 HTTP 状態コードで拒否される可能性もあります。 詳細については、「オンライン エンドポイントのトラブルシューティング: HTTP 状態コード」を参照してください。
1
max_queue_wait_ms integer (非推奨)要求がキューに残る最大時間 (ミリ秒単位)。 (ネットワーク/キューの遅延を考慮して増 request_timeout_ms やします) 500

ProbeSettings

キー Type 説明 既定値
initial_delay 整数 (integer) コンテナーの起動後、プローブが開始されるまでの秒数。 最小値は 1 です。 10
period 整数 (integer) プローブを実行する頻度 (秒単位)。 10
timeout 整数 (integer) プローブがタイムアウトするまでの秒数。最小値は 1 です。 2
success_threshold 整数 (integer) 失敗した後、プローブが成功と見なされるために必要な最小連続成功数。 readiness probe 用の最小値は 1 です。 liveness probe 用の値は 1 で固定されています。 1
failure_threshold 整数 (integer) プローブが失敗した場合、システムは failure_threshold 回の試行を行った後、中断されます。 liveness probe の場合に中断されると、コンテナーが再起動されます。 readiness probe の場合は、コンテナーは Unready (準備が未完了) とマークされます。 最小値は 1 です。 30

DataCollector

キー Type 説明 既定値
sampling_rate float 収集するデータの割合 (10 進数の割合として表されます)。 たとえば、値 1.0 は、データを 100% 収集することを表します。 1.0
rolling_rate string ストレージ内のデータをパーティション分割する速度。 使用可能な値: Minute、Hour、Day、Month、Year。 Hour
collections object 個々の collection_name と、このデプロイ用のそれぞれの設定のセット。
collections.<collection_name> object 収集する運用推論データの論理的なグループ化 (例: model_inputs)。 予約名は requestresponse の 2 つがあり、それぞれ HTTP 要求と応答ペイロードのデータ収集に対応しています。 他のすべての名前は任意であり、ユーザーが定義できます。

: 各 collection_name は、運用推論データを収集するために、デプロイ score.py で使用される Collector オブジェクトの名前と対応している必要があります。 提供されている Python SDK を使用したペイロード データ収集とデータ収集の詳細については、「運用環境のモデルからデータを収集する」を参照してください。
collections.<collection_name>.enabled boolean 指定した collection_name に対してデータ収集を有効にするかどうか。 'False''
collections.<collection_name>.data.name string 収集されたデータと共に登録するデータ資産の名前。 <endpoint>-<deployment>-<collection_name>
collections.<collection_name>.data.path string 収集されたデータをデータ資産として登録する必要がある Azure Machine Learning データストアの完全パス。 azureml://datastores/workspaceblobstore/paths/modelDataCollector/<endpoint_name>/<deployment_name>/<collection_name>
collections.<collection_name>.data.version 整数 収集されたデータと共に BLOB ストレージに登録されるデータ資産のバージョン。 1

注釈

az ml online-deployment コマンドは、Azure Machine Learning マネージド オンライン デプロイメントを管理するために使用できます。

例は、GitHub リポジトリの例にあります。 以下にいくつか示します。

YAML: basic

$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
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: green
endpoint_name: my-endpoint
model:
  path: ../../model-2/model/
code_configuration:
  code: ../../model-2/onlinescoring/
  scoring_script: score.py
environment:
  conda_file: ../../model-2/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

YAML: システム割り当て ID

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score_managedidentity.py
environment:
  conda_file: ../../model-1/environment/conda-managedidentity.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
environment_variables:
  STORAGE_ACCOUNT_NAME: "storage_place_holder"
  STORAGE_CONTAINER_NAME: "container_place_holder"
  FILE_NAME: "file_place_holder"

YAML: ユーザー割り当て ID

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score_managedidentity.py
environment: 
  conda_file: ../../model-1/environment/conda-managedidentity.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
environment_variables:
  STORAGE_ACCOUNT_NAME: "storage_place_holder"
  STORAGE_CONTAINER_NAME: "container_place_holder"
  FILE_NAME: "file_place_holder"
  UAI_CLIENT_ID: "uai_client_id_place_holder"

YAML: data_collector

$schema: http://azureml/sdk-2-0/OnlineDeployment.json

endpoint_name: my_endpoint 
name: blue 
model: azureml:my-model-m1:1 
environment: azureml:env-m1:1 
data_collector:
   collections:
       model_inputs:
           enabled: 'True' 
       model_outputs:
           enabled: 'True'
$schema: http://azureml/sdk-2-0/OnlineDeployment.json

endpoint_name: my_endpoint
name: blue 
model: azureml:my-model-m1:1 
environment: azureml:env-m1:1 
data_collector:
   collections:
     request: 
         enabled: 'True'
         data: 
           name: my_request_data_asset 
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/request 
           version: 1 
     response:
         enabled: 'True' 
         data: 
           name: my_response_data_asset
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/response
           version: 1 
     model_inputs:
         enabled: 'True'
         data: 
           name: my_model_inputs_data_asset
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_inputs
           version: 1 
     model_outputs:
         enabled: 'True'
         data: 
           name: my_model_outputs_data_asset
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_outputs
           version: 1

次の手順