CLI (v2) 托管联机部署 YAML 架构

适用于:Azure CLI ml 扩展 v2(当前版本)

源 JSON 架构可在 https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 中找到。

注意

本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。

YAML 语法

密钥 类型 说明 允许的值 默认值
$schema 字符串 YAML 架构。 如果使用 Azure 机器学习 VS Code 扩展来创作 YAML 文件,则可通过在文件顶部包含 $schema 来调用架构和资源完成操作。
name 字符串 必需。 部署的名称。

此处定义命名规则。
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 整型 必需。 用于部署的实例数。 根据期望的工作负载指定值。 为实现高可用性,Azure 建议将此值至少设置为 3

可以在使用 az ml online-deployment update 命令创建部署后更新 instance_count

我们保留额外的 20% 用于执行升级。 有关详细信息,请参阅用于部署的虚拟机配额分配
app_insights_enabled boolean 是否启用与与工作区关联的 Azure Application Insights 实例的集成。 false
scale_settings object 部署的规模设置。 目前只支持 default 缩放类型,所以不需要指定该属性。

使用此 default 缩放类型,可以在创建部署后通过更新 instance_count 属性手动纵向缩放实例计数,或者创建自动扩展策略
scale_settings.type 字符串 缩放类型。 default default
data_collector object 部署的数据收集设置。 有关可配置属性集,请参阅 DataCollector
request_settings object 部署的评分请求设置。 请参阅 RequestSettings 以了解可配置属性集。
liveness_probe object 运行情况探测设置,用于定期监控容器的运行状况。 请参阅 ProbeSettings 以了解可配置属性集。
readiness_probe object 用于验证容器是否已准备好为流量提供服务的就绪情况探测设置。 请参阅 ProbeSettings 以了解可配置属性集。
egress_public_network_access string 注意:使用旧网络隔离方法保护部署的出站通信时,此密钥适用。 强烈建议改用工作区托管 VNet 来保护部署的出站通信。

此标志通过限制部署与其使用的 Azure 资源之间的通信来保护部署。 设置为 disabled 以确保部署所需的模型、代码和图像的下载受到专用终结点的保护。 此标志仅适用于托管联机终结点。
enableddisabled enabled

RequestSettings

密钥 类型 说明 默认值
request_timeout_ms 整型 以毫秒为单位的评分超时。 请注意,允许的最大值为 180000 毫秒。 有关详细信息,请参阅联机终结点的限制 5000
max_concurrent_requests_per_instance integer 部署允许的每个实例的最大并发请求数。

注意:如果使用 Azure 机器学习推理服务器Azure 机器学习推理映像,则必须配置模型才能处理并发请求。 为此,请将 WORKER_COUNT: <int> 作为环境变量传递。 有关 WORKER_COUNT 的详细信息,请参阅 Azure 机器学习推理服务器参数

注意:设置为可供模型在单个节点上并发处理的请求数。 将此值设置为一个高于模型的实际并发的数目可能会导致延迟较高。 此值设置过低可能会导致节点未充分使用。 设置过低也可能导致请求被拒绝并显示 429 HTTP 状态代码,因为系统会选择快速失败。 有关详细信息,请参阅排查联机终结点问题:HTTP 状态代码
1
max_queue_wait_ms integer (已弃用)请求在队列中停留的最长时间(毫秒)。 (现在增加 request_timeout_ms 以考虑任何网络/队列延迟) 500

ProbeSettings

密钥 类型 说明 默认值
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 字符串 对存储中的数据进行分区的速率。 值可以是:分钟、小时、天、月、年。 Hour
collections 对象 此部署的各个 collection_name 集及其各自的设置。
collections.<collection_name> 对象 要收集的生产推理数据的逻辑分组(例如: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 integer 要与 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

后续步骤