CLI (v2) 托管联机部署 YAML 架构
源 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 以确保部署所需的模型、代码和图像的下载受到专用终结点的保护。 此标志仅适用于托管联机终结点。 |
enabled 、disabled |
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 )。 有两个保留名称:request 和 response ,分别对应于 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