CLI (v2) 受控線上部署 YAML 結構描述

適用於:Azure CLI ml 延伸模組 v2 (目前)

您可以在 找到 https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json來源 JSON 架構。

注意

本文件中詳述的 YAML 語法是以最新版 ML CLI v2 延伸模組的 JSON 結構描述為基礎。 此語法僅保證能與最新版的 ML CLI v2 延伸模組搭配運作。 您可以在 https://azuremlschemasprod.azureedge.net/ 找到舊版延伸模組的結構描述。

YAML 語法

機碼 類型 描述 允許的值 預設值
$schema string YAML 結構描述。 如果您使用 Azure Machine Learning VS Code 擴充功能來撰寫 YAML 檔案,在檔案頂端包含 $schema 可讓您叫用結構描述和資源完成。
name string 必要。 部署的名稱。

命名規則在這裡定義
description 字串 部署的描述。
tags object 部署標記的字典。
endpoint_name 字串 必要。 要在其下建立部署的端點名稱。
model 字串或物件 要用於部署的模型。 此值可以是工作區中現有已建立版本模型的參考,也可以是內嵌模型規格。

若要參考現有的模型,請使用 azureml:<model-name>:<model-version> 語法。

若要內嵌定義模型,請遵循 模型架構

作為生產案例的最佳做法,您應該個別建立模型並在這裡參考該模型。

此欄位是自訂容器部署案例的選擇性欄位。
model_mount_path 字串 在自定義容器中掛接模型的路徑。 僅適用於 自定義容器部署 案例。 model如果指定欄位,則會掛接在容器中的這個路徑上。
code_configuration object 評分程式代碼邏輯的設定。

此欄位是自訂容器部署案例的選擇性欄位。
code_configuration.code 字串 用於評分模型的原始程式碼目錄本機路徑。
code_configuration.scoring_script 字串 原始碼目錄中評分檔案的相對路徑。
environment_variables object 在部署容器中設定的環境變數索引鍵/值組字典。 您可以從評分腳本存取這些環境變數。
environment 字串或物件 必要。 要用於部署的環境。 此值可以是工作區中現有已建立版本環境的參考,也可以是內嵌環境規格。

若要參考現有的環境,請使用 azureml:<environment-name>:<environment-version> 語法。

若要內嵌定義環境,請遵循 環境架構

作為生產案例的最佳做法,您應該個別建立環境並在這裡參考該環境。
instance_type 字串 必要。 要用於部署的 VM 大小。 如需支援的大小清單,請參閱受控線上端點 SKU 清單
instance_count 整數 必要。 要用於部署的執行個體數目。 根據您預期的工作負載指定值。 為了達到高可用性,Microsoft 建議您至少 3將它設定為 。

instance_count 您可以使用 命令在部署建立 az ml online-deployment update 之後更新。

我們會額外保留 20% 來執行升級。 如需詳細資訊,請參閱 部署的虛擬機配額配置。
app_insights_enabled boolean 是否要啟用與與工作區相關聯之 Azure 應用程式 Insights 實例的整合。 false
scale_settings object 部署的調整設定。 目前只 default 支援縮放類型,因此您不需要指定這個屬性。

default使用此調整類型時,您可以藉由更新 instance_count 屬性,或建立自動調整原則,在部署建立之後手動相應增加和減少實例計數。
scale_settings.type 字串 縮放類型。 default default
data_collector object 部署的數據收集設定。 如需可設定的屬性集,請參閱 DataCollector
request_settings object 為部署評分要求設定。 如需可設定的屬性集,請參閱要求 設定
liveness_probe object 用來定期監視容器健全狀況的活躍度探查設定。 如需可設定的屬性集,請參閱探查 設定
readiness_probe object 整備探查設定,用於驗證容器是否準備好提供流量。 如需可設定的屬性集,請參閱探查 設定
egress_public_network_access 字串 注意: 當您使用 舊版網路隔離方法來 保護部署的輸出通訊時,此密鑰適用。 強烈建議您改用 工作區受控 VNet 來保護部署的輸出通訊。

此旗標會藉由限制部署與其所使用的 Azure 資源之間的通訊來保護部署。 設定為 disabled ,以確保部署所需的模型、程式代碼和映像下載會受到私人端點保護。 此旗標僅適用於受控在線端點。
enabled, disabled enabled

要求 設定

機碼 類型 描述 預設值
request_timeout_ms 整數 評分逾時以毫秒為單位。 請注意,允許的最大值是 180000 毫秒。 如需詳細資訊,請參閱在線端點的限制。 5000
max_concurrent_requests_per_instance 整數 每個實例允許部署的並行要求數目上限。

注意:如果您使用 Azure 機器學習 推斷伺服器Azure 機器學習 推斷映射,則必須將模型設定為處理並行要求。 若要這樣做,請以環境變數的形式傳遞 WORKER_COUNT: <int> 。 如需 的詳細資訊WORKER_COUNT,請參閱 Azure 機器學習 推斷伺服器參數

注意: 設定為模型可以在單一節點上同時處理的要求數目。 如果將此值設為高於模型的實際並行作業,則可能會導致較高的延遲。 設定此值太低可能會導致使用中的節點不足。 設定太低也可能會導致要求遭到 429 HTTP 狀態代碼拒絕,因為系統會選擇快速失敗。 如需詳細資訊,請參閱 針對在線端點進行疑難解答:HTTP 狀態代碼
1
max_queue_wait_ms 整數 (已淘汰)要求在佇列中停留的時間上限,以毫秒為單位。 (現在增加 request_timeout_ms 以考慮任何網路/佇列延遲) 500

探查 設定

機碼 類型 描述 預設值
initial_delay 整數 在啟動探查之前,容器啟動后的秒數。 最小值為 1 10
period 整數 執行探查的頻率(以秒為單位)。 10
timeout 整數 探查逾時之後的秒數。最小值為 1 2
success_threshold 整數 探查在失敗后要視為成功的最小連續成功。 最小值適用於 1 整備探查。 即時探查的值會固定為 1 1
failure_threshold 整數 當探查失敗時,系統會先嘗試 failure_threshold 時間再放棄。 在活躍度探查的情況下放棄表示容器將會重新啟動。 在整備探查的情況下,容器會標示為 「未讀取」。 最小值為 1 30

DataCollector

機碼 類型 描述 預設值
sampling_rate float 要收集的數據小數率表示的百分比。 例如,值為 1.0 表示收集 100% 的數據。 1.0
rolling_rate 字串 分割記憶體中數據的速率。 值可以是:Minute、Hour、Day、Month、Year。 Hour
collections object 此部署的個別 collection_name設定及其各自的設定集。
collections.<collection_name> object 要收集的生產推斷數據的邏輯群組(例如: model_inputs)。 有兩個保留名稱: requestresponse,分別對應至 HTTP 要求和響應承載數據收集。 所有其他名稱都是任意且可由用戶定義。

注意:每個collection_name都應該對應至部署score.py中用來收集生產推斷數據的物件名稱Collector。 如需使用提供的 Python SDK 來收集承載數據收集和數據收集的詳細資訊,請參閱 從生產環境中模型收集數據。
collections.<collection_name>.enabled boolean 是否要啟用指定 collection_name之的數據收集。 'False''
collections.<collection_name>.data.name 字串 要向收集的數據註冊的數據資產名稱。 <endpoint>-<deployment>-<collection_name>
collections.<collection_name>.data.path 字串 完整的 Azure 機器學習 數據存放區路徑,其中收集的數據應該註冊為數據資產。 azureml://datastores/workspaceblobstore/paths/modelDataCollector/<endpoint_name>/<deployment_name>/<collection_name>
collections.<collection_name>.data.version 整數 要向 Blob 記憶體中收集的數據註冊的數據資產版本。 1

備註

命令az ml online-deployment可用來管理 Azure 機器學習 受控在線部署。

範例

範例 GitHub 存放庫中有範例可用。 以下顯示其中幾個。

YAML:基本

$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:系統指派的身分識別

$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:使用者指派的身分識別

$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

下一步