分享方式:


建立 Azure Machine Learning 計算叢集

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

本文說明如何在您的 Azure Machine Learning 工作區中建立和管理計算叢集

您可以使用 Azure Machine Learning 計算叢集,將定型或批次推斷程序散發到雲端中 CPU 或 GPU 計算節點的叢集。 如需包含 GPU 的 VM 大小有關的詳細資訊,請參閱 GPU 最佳化虛擬機器大小

了解如何:

  • 建立計算叢集。
  • 以低優先順序的 VM 降低計算叢集成本。
  • 為叢集設定受控識別

注意

請勿建立計算叢集,而是使用無伺服器計算將計算生命週期管理卸載至 Azure Machine Learning。

必要條件

根據您偏好建立計算叢集的方法,針對其餘必要條件選取適當的索引標籤。

  • 如果您並未在計算執行個體中執行程式碼,請安裝 Azure Machine Learning Python SDK。 此 SDK 已安裝於計算執行個體上。

  • 連結至您的 Python 指令碼中的工作區:

    執行此程式碼以連線至您的 Azure Machine Learning 工作區。

    在下方的程式碼中替換您的訂用帳戶識別碼、資源群組名稱和工作區名稱。 若要尋找這些值:

    1. 登入 Azure Machine Learning Studio
    2. 開啟您要使用的工作區。
    3. 在右上方的 Azure Machine Learning 工作室工具列中,選取您的工作區名稱。
    4. 將工作區、資源群組和訂用帳戶識別碼的值複製到程式碼。

    適用於Python SDK azure-ai-ml v2 (目前)

    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client 是工作區的處理常式,用來管理其他資源和工作。

什麼是計算叢集?

Azure Machine Learning 計算叢集是一種受控的計算基礎結構,可讓您輕鬆建立單一或多重節點計算。 計算叢集是可以與您工作區中的其他使用者共用的資源。 計算會在提交作業時自動相應增加,而且可以放在 Azure 虛擬網路中。 計算叢集在虛擬網路中也不支援公用 IP 部署。 計算會在容器化環境中執行,並在 Docker 容器中封裝模型的相依性。

計算叢集可在受控虛擬網路環境Azure 虛擬網路中安全地執行作業,而無須企業開啟 SSH 連接埠。 作業會在容器化環境中執行,並在 Docker 容器中封裝模型的相依性。

限制

  • 您可以在工作區以外的不同區域中建立計算叢集。 這項功能目前僅適用於計算叢集,而非計算執行個體。

    警告

    在與您的工作區或資料存放區不同區域中使用計算叢集時,您可能會看到網路延遲和資料傳輸成本增加。 建立叢集以及在叢集上執行作業時,可能會產生延遲和成本。

  • Azure Machine Learning Compute 有預設限制,例如可配置的核心數目。 如需詳細資訊,請參閱管理和要求 Azure 資源的配額

  • Azure 可讓您對資源施加鎖定,使其無法被刪除,或處於唯讀狀態。 請勿將資源鎖定套用至包含您工作區的資源群組。 將鎖定套用至包含您工作區的資源群組,可防止 Azure Machine Learning 計算叢集的調整作業。 如需鎖定資源的詳細資訊,請參閱鎖定資源以防止非預期的變更

建立​​

估計時間:約五分鐘。

注意

如果您使用無伺服器計算,則不需要建立計算叢集。

Azure Machine Learning Compute 可以跨回合重複使用。 計算可與工作區中的其他使用者共用,並在回合之間保留,且會根據所提交的回合數目以及叢集上設定的 max_nodes 自動擴大或縮小節點。 min_nodes 設定可以控制可用的節點數目下限。

適用於計算叢集建立的專用核心每個區域、VM 系列配額與總計區域配額會統一,並與 Azure Machine Learning 定型計算叢集配額共用。

重要

若要避免在未執行作業時產生費用,請將節點數下限設定為 0。 這項設定可讓 Azure Machine Learning 將未使用的節點解除配置。 任何大於 0 的值都會保持執行該數量的節點,即使不使用節點也一樣。

未使用時,計算會自動向下調整為零節點。 視需要建立專用的虛擬機器以執行您的作業。

使用下列範例建立計算叢集:

若要使用 Python 建立持續性 Azure Machine Learning Compute 資源,請指定 sizemax_instances 屬性。 Azure Machine Learning 接著會對於其他屬性使用智慧型預設值。

  • size:Azure Machine Learning Compute 建立的 VM 系列節點。
  • max_instances:在 Azure Machine Learning Compute 上執行作業時,自動擴大的節點數上限。

適用於Python SDK azure-ai-ml v2 (目前)

from azure.ai.ml.entities import AmlCompute

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

建立 Azure Machine Learning Compute 時,您也可以設定多個進階屬性。 這些屬性可讓您建立固定大小的持續性叢集,也可以在您訂用帳戶中現有的 Azure 虛擬網路內建立。 如需詳細資料,請參閱 AmlCompute 類別

警告

設定 location 參數時,如果其在與您的工作區或資料存放區不同的區域,您可能會看到網路延遲和資料傳輸成本增加。 建立叢集以及在叢集上執行作業時,可能會產生延遲和成本。

以低優先順序的 VM 降低計算叢集成本

您也可以選擇使用低優先順序的 VM 來執行部分或所有的工作負載。 這些 VM 沒有保證可用性,可能會在使用時被佔用。 您必須重新啟動先佔作業。

使用 Azure 低優先順序的虛擬機器可讓您使用 Azure 未使用的容量,大幅節省成本。 任何時候只要 Azure 需要這些容量,Azure 基礎結構就會收回 Azure 低優先順序的虛擬機器。 因此,Azure 低優先順序的虛擬機器非常適合可處理中斷的工作負載使用。 可用容量的數量會根據大小、區域和當日時間等等而有所不同。 部署 Azure 低優先順序的虛擬機器時,如果有可用的容量,則 Azure 將會配置 VM,但這些 VM 沒有服務等級協定 (SLA)。 Azure 低優先順序的虛擬機器不提供高可用性保證。 任何時候只要 Azure 需要這些容量,Azure 基礎結構就會收回 Azure 低優先順序的虛擬機器。

使用下列任何一種方式來指定低優先順序的 VM:

適用於Python SDK azure-ai-ml v2 (目前)

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

刪除

當您的計算叢集在不使用時縮減為零節點時,未布建的節點會增加您的配額使用量。 刪除計算叢集會從您的工作區移除計算目標,並釋放配額。

適用於Python SDK azure-ai-ml v2 (目前)

這會刪除本文稍早從 create_basic 物件建立的基本計算叢集。

from azure.ai.ml.entities import AmlCompute

ml_client.compute.begin_delete(cluster_basic.name).wait()

設定受控身分識別

如需如何使用計算叢集設定受控識別的資訊,請參閱設定 Azure Machine Learning 與其他服務之間的驗證

疑難排解

在 GA 發行之前就從 Azure 入口網站建立 Azure Machine Learning 工作區的部分使用者,可能會無法在該工作區上建立 AmlCompute。 您可以對該服務提出支援要求,或透過入口網站或 SDK 來建立新的工作區,以立即自行解除鎖定。

重要

如果您的計算實例或計算叢集是以上述任一系列為基礎,請使用另一個 VM 大小重新建立。

這些系列於 2023 年 8 月 31 日淘汰:

這些系列於 2024 年 8 月 31 日淘汰:

停滯在調整大小

如果您的 Azure Machine Learning 計算叢集出現停滯調整大小 (0 -> 0) 的節點狀態,這可能是因為 Azure 資源鎖定所致。

Azure 可讓您對資源施加鎖定,使其無法被刪除,或處於唯讀狀態。 鎖定資源可能會導致非預期的結果。 某些看似不會修改資源的作業,實際上需要會被鎖定封鎖的動作。

有了 Azure Machine Learning,將刪除鎖定套用至工作區的資源群組,將會防止 Azure ML 計算叢集的調整作業。 若要解決此問題,建議您從資源群組中移除鎖定,並改為將其套用至群組中的個別項目。

重要

請勿將鎖定套用至下列資源:

資源名稱 資源類型
<GUID>-azurebatch-cloudservicenetworksecurityggroup 網路安全性群組
<GUID>-azurebatch-cloudservicepublicip 公用 IP 位址
<GUID>-azurebatch-cloudserviceloadbalancer 負載平衡器

這些資源是用來與計算叢集進行通訊及執行調整規模等作業。 從這些資源中移除資源鎖定應該會允許您的計算叢集進行自動調整。

如需資源鎖定的詳細資訊,請參閱鎖定資源以防止非預期的變更

後續步驟

使用您的計算叢集,以便: