对批量部署使用低优先级 VM

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

Azure 批量部署支持低优先级虚拟机 (VM),以降低批量推理工作负载的成本。 低优先级 VM 能够以较低的成本使用大量的计算能力。 低优先级虚拟机利用 Azure 中的剩余容量。 在池中指定低优先级 VM 时,Azure 可以自动使用此多余容量(如果可用)。

提示

使用低优先级虚拟机的缺点是这些虚拟机可能不可用或者可能随时被抢占,具体取决于可用容量。 因此,此方法最适合批处理和异步处理工作负载,其中作业完成时间很灵活,并且工作分布在多个虚拟机上。

与专用虚拟机相比,低优先级虚拟机的价格较低。 有关定价详细信息,请参阅 Azure 机器学习定价

批处理部署如何与低优先级 VM 配合使用

Azure 机器学习批处理部署提供多种功能来方便你使用低优先级 VM 并从中受益:

  • 批处理部署作业通过在使用低优先级 VM 创建的 Azure 机器学习计算群集上运行来消耗低优先级 VM。 部署与低优先级 VM 群集关联后,此类部署生成的所有作业都将使用低优先级 VM。 无法针对每个作业进行配置。
  • 批处理部署作业根据要提交的任务数自动查找可用计算群集中的 VM 目标数量。 如果 VM 被抢占或不可用,批处理部署作业会尝试通过将失败的任务排队到群集来替换丢失的容量。
  • 低优先级 VM 具有不同于专用 VM 的单独 vCPU 配额。 每个区域的低优先级核心的默认限制为 100 到 3,000,具体取决于订阅。 每个订阅的低优先级核心数可以提高,对不同的 VM 系列采用单个值。 请参阅 Azure 机器学习计算配额

注意事项和用例

许多批处理工作负载非常适合低优先级 VM。 当 VM 解除分配时,使用低优先级 VM 可能会导致执行延迟。 如果在作业必须完成的时间方面具有灵活性,则可以容忍容量潜在下降。

在批处理终结点下部署模型时,可以在小型批处理级别执行重新安排。 这种方法的好处是,解除分配只会影响当前正在处理且未在受影响的节点上完成的小型批处理。 保留所有已完成的进度。

限制

  • 部署与低优先级 VM 群集关联后,此类部署生成的所有作业都将使用低优先级 VM。 无法针对每个作业进行配置。
  • 无论进度如何,重新计划都是在微型批级别完成的。 不提供检查点功能。

警告

如果整个群集被抢占(或在单节点群集上运行),该作业将被取消,因为没有可用的容量供其运行。 在这种情况下,需要重新提交。

创建使用低优先级 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 门户中查看这些指标,请执行以下操作:

  1. Azure 门户中导航到 Azure 机器学习工作区。
  2. 从“监视”部分选择“指标” 。
  3. 从“指标”列表选择所需指标。

资源监视窗格中指标部分的屏幕截图,其中显示了低优先级 VM 的相关指标。