适用范围:
Azure CLI ml 扩展 v2(最新版)
Python SDK azure-ai-ml v2(最新版)
Azure Batch部署支持低优先级 VM,以降低批量推理工作负荷的成本。 低优先级 VM 能够以较低的成本使用大量的计算能力。 低优先级 VM 利用Azure中的剩余容量。 在池中指定低优先级 VM 时,Azure 可以自动使用此多余容量(如果可用)。
提示
使用低优先级虚拟机的缺点是这些虚拟机可能不可用或者可能随时被抢占,具体取决于可用容量。 因此,此方法最适合批处理和异步处理工作负载,其中作业完成时间很灵活,并且工作分布在多个虚拟机上。
由于这些节点现已分配为抢占式 VM,因此系统将按群集运行所在区域中该 VM 大小的当前抢占式费率向您收费。 该费率是可变的,而不是固定折扣。 随着区域和需求的变化,当区域容量不足时,它可以接近即用即付价格。 对于相同大小的 VM,您支付的费用绝不会超过即用即付价格。 有关详细信息,请参阅Azure Spot 虚拟机。
在选择区域之前,请检查 VM 大小和区域的当前速率。 可以在Azure定价计算器中或通过Azure零售价格 API 进行检查。 有关常规定价详情,请参阅 Azure 机器学习 定价。
批处理部署如何与低优先级 VM 配合使用
Azure 机器学习批处理部署提供多种功能来方便你使用低优先级 VM 并从中受益:
- 批处理部署作业通过在使用低优先级 VM 创建的 Azure 机器学习计算群集上运行来消耗低优先级 VM。 部署与低优先级 VM 群集关联后,此类部署生成的所有作业都将使用低优先级 VM。 无法针对每个作业进行配置。
- 批处理部署作业根据要提交的任务数自动查找可用计算群集中的 VM 目标数量。 如果 VM 被抢占或不可用,批处理部署作业会尝试通过将失败的任务排队到群集来替换丢失的容量。
- 低优先级 VM 具有不同于专用 VM 的单独 vCPU 配额。 每个区域的低优先级核心的默认限制为 100 到 3,000,具体取决于订阅。 每个订阅的低优先级核心数量可以增加,并且在各 VM 系列中统一为单一值。 请参阅 Azure 机器学习计算配额。
注意事项和用例
许多批处理工作负载非常适合低优先级 VM。 在虚拟机被解除分配时,使用低优先级虚拟机可能会导致执行出现延迟。 如果在作业必须完成的时间方面具有灵活性,则可以容忍容量潜在下降。
将模型部署到批处理终结点时,可以在小批次级别进行重新调度。 这种方法的好处是,释放资源只会影响当前正在受影响节点上处理且尚未完成的微批次。 所有已完成的进度都会被保留。
限制
- 部署与低优先级 VM 群集关联后,此类部署生成的所有作业都将使用低优先级 VM。 无法针对每个作业进行配置。
- 无论当前进度如何,重新调度都是按小批量级别进行的。 未提供检查点功能。
- 在启动群集时,会针对群集中的每个节点计费,包括在完成任何工作之前逐出的节点,包括每个更换节点启动的时间。 逐出不会产生退款或信用额度,而现成 VM 没有 SLA。 有关Azure Batch,请参阅虚拟机状态和计费状态和最佳做法。
- 频繁被驱逐可能会使群集在处理相同工作负荷时的成本高于
dedicated群集,尤其是在现货价格接近即用即付价格的区域。
警告
如果整个群集被抢占(或在单节点群集上运行),该作业将被取消,因为没有可用的容量供其运行。 在这种情况下,需要重新提交。
创建使用低优先级 VM 的批量部署
批处理部署作业通过在使用低优先级 VM 创建的 Azure 机器学习计算群集上运行来消耗低优先级 VM。
注意
部署与低优先级 VM 群集关联后,此类部署生成的所有作业都将使用低优先级 VM。 无法针对每个作业进行配置。
可以创建低优先级 Azure 机器学习计算群集,如下所示:
创建计算定义 YAML,如以下定义 low-pri-cluster.yml:
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority
使用以下命令创建计算:
az ml compute create -f low-pri-cluster.yml
创建新计算后,可以创建或更新部署以使用新群集:
若要在新计算群集下创建或更新部署,请创建 YAML 配置文件 endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
instance_count: 2
settings:
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 300
然后,用以下命令创建部署:
az ml batch-endpoint create -f endpoint.yml
查看和监视节点解除分配
Azure 门户中提供了新的低优先级 VM 指标,以便监视低优先级 VM。 这些指标是:
- 被抢占的节点
- 被抢占的核心数
若要在 Azure 门户中查看这些指标,请执行以下操作:
- 在 Azure 门户中导航到 Azure 机器学习工作区。
- 从监控部分中选择指标。
- 从“指标”列表选择所需指标。