在批处理部署中使用低优先级 VM

适用于:Azure CLI ml 扩展 v2(当前版本)Python SDK azure-ai-ml v2(当前版本)

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

使用它们的弊端是这些 VM 可能并不总是可供分配,也有可能随时被占用,具体取决于可用的容量。 出于此原因,对于作业完成时间很灵活且工作分布在多个 VM 上的批处理和异步处理工作负载,最适合使用低优先级 VM。

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

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

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

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

注意事项和用例

许多批处理工作负载非常适合低优先级 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 配置,如下所示:

$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. 从“指标”列表选择所需指标。

Screenshot of the metrics section in the resource monitoring blade showing the relevant metrics for low priority VMs.

限制

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

警告

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