创建和使用计算群集

已完成

试验和开发之后,你希望代码可供生产使用。 在生产环境中运行代码时,最好使用脚本而不是笔记本。 运行脚本时,你希望使用可缩放的计算目标。

在 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)

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