创建和使用计算群集

已完成

经过实验和开发后,你希望代码能够投产准备就绪。 在生产环境中运行代码时,最好使用脚本而不是笔记本。 运行脚本时,需要使用可缩放的计算目标。

在 Azure 机器学习中,计算群集 非常适合运行脚本。 可以使用 Azure 命令行接口(CLI)或 Python 软件开发工具包(SDK)在 Azure 机器学习工作室中创建计算群集。

使用 Python SDK 创建计算群集

若要使用 Python SDK 创建计算群集,可以使用以下代码:

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="cpu-cluster",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_basic).result()

若要了解 AmlCompute 类所需的参数,可以查看 参考文档

创建计算群集时,需要考虑三个主要参数:

  • size:指定计算群集中每个节点 虚拟机类型。 基于 Azure 中虚拟机的大小规格。 在大小旁边,还可以指定是要使用 CPU 还是 GPU。
  • max_instances:指定 计算群集可以横向扩展到的最大节点数。 计算群集可以处理的并行工作负荷数类似于群集可缩放到的节点数。
  • tier:指定虚拟机是 低优先级 还是 专用。 设置为低优先级可能会降低成本,因为无法保证可用性。

使用计算群集

可以使用计算群集的三个主要方案:

  • 运行您在设计器中构建的管道任务。
  • 运行自动化机器学习任务。
  • 以作业身份运行脚本。

在上述每个方案中,计算群集都是理想的选择,因为计算群集在提交作业时自动纵向扩展,并在作业完成后自动关闭。

计算群集还允许并行训练多个模型,这是使用自动化机器学习时的常见做法。

可以通过 Azure 机器学习工作室运行设计器管道作业和自动化机器学习作业。 通过工作室提交作业时,可以将计算目标设置为创建的计算群集。

首选代码优先方法时,可以使用 Python SDK 将计算目标设置为计算群集。

例如,将脚本作为命令作业运行时,可以使用以下代码将计算目标设置为计算群集:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python diabetes-training.py",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="cpu-cluster",
    display_name="train-with-cluster",
    experiment_name="diabetes-training"
    )

# submit job
returned_job = ml_client.create_or_update(job)
aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)

提交使用计算群集的作业后,计算群集将横向扩展到一个或多个节点。 调整大小需要几分钟时间,必要的节点配置完成后,任务就会开始运行。 当作业的状态为 准备时,正在配置计算群集。 当状态 运行时,计算群集已准备就绪,并且作业正在运行。