建立和使用計算叢集

已完成

在實驗和開發之後,您想要讓程式碼可以投入實際執行環境。 當您在實際執行環境中執行程式碼時,最好使用指令碼而非筆記本。 當您執行指令碼時,您會想要使用可調整的計算目標。

在 Azure Machine Learning 中,計算叢集非常適合用於執行指令碼。 您可以使用 Azure 命令列介面 (CLI) 或 Python 軟體開發套件 (SDK),在 Azure Machine Learning 工作室中建立計算叢集。

使用 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:指定您的虛擬機器是「低優先順序」或「專用」。 設定為低優先順序可能會降低成本,因為無法向您保證可用性。

使用計算叢集

您可以在三種主要案例中使用計算叢集:

  • 執行您在 Designer 中建置的管線作業。
  • 執行自動化機器學習作業。
  • 以作業的形式執行指令碼。

在這些案例中,計算叢集都是理想的選擇,因為計算叢集會在提交作業時自動相應增加,並在作業完成時自動關閉。

計算叢集也可讓您平行訓練多個模型,這是使用自動化機器學習時的常見作法。

您可以透過 Azure Machine Learning 工作室來執行 Designer 管線作業和自動化機器學習作業。 當您透過 Studio 提交作業時,可以將計算目標設定為您所建立的計算叢集。

當您偏好程式碼優先方法時,您可以使用 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)

提交使用計算叢集的作業之後,計算叢集會擴增至一或多個節點。 調整大小需要幾分鐘的時間,而您的作業會在佈建必要的節點之後開始執行。 當作業的狀態為「準備中」時,表示正在準備計算叢集。 當狀態為「執行中」時,表示計算叢集已就緒,且作業正在執行。