创建和使用计算群集
经过实验和开发后,你希望代码能够投产准备就绪。 在生产环境中运行代码时,最好使用脚本而不是笔记本。 运行脚本时,需要使用可缩放的计算目标。
在 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)
提交使用计算群集的作业后,计算群集将横向扩展到一个或多个节点。 调整大小需要几分钟时间,必要的节点配置完成后,任务就会开始运行。 当作业的状态为 准备时,正在配置计算群集。 当状态 运行时,计算群集已准备就绪,并且作业正在运行。