使用 CLI 第 1 版建立 Azure Machine Learning 計算叢集
適用於:Azure CLI ml 延伸模組 v1Python SDK azureml v1
了解如何在您的 Azure Machine Learning 工作區中建立和管理計算叢集。
您可以使用 Azure Machine Learning 計算叢集,將定型或批次推斷程序散發到雲端中 CPU 或 GPU 計算節點的叢集。 如需包含 GPU 的 VM 大小有關的詳細資訊,請參閱 GPU 最佳化虛擬機器大小。
在本文中,了解如何:
- 建立計算叢集
- 降低您的計算叢集成本
- 為叢集設定受控識別
必要條件
Azure Machine Learning 工作區。 如需詳細資訊,請參閱建立 Azure Machine Learning 工作區。
適用於 Machine Learning 服務的 Azure CLI 延伸模組 (v1)、Azure Machine Learning Python SDK 或 Azure Machine Learning Visual Studio Code 延伸模組。
重要
本文中的 Azure CLI 命令使用
azure-cli-ml
或 v1 (Azure Machine Learning 的擴充功能)。 v1 擴充功能的支援將於 2025 年 9 月 30 日終止。 您將能安裝並使用 v1 擴充功能,直到該日期為止。建議您在 2025 年 9 月 30 日之前轉換至
ml
或 v2 擴充功能。 如需有關 v2 擴充功能的詳細資訊,請參閱 Azure ML CLI 擴充功能和 Python SDK v2。如果使用 Python SDK,請使用工作區設定您的開發環境。 設定環境之後,連結至您的 Python 指令碼中的工作區:
from azureml.core import Workspace ws = Workspace.from_config()
什麼是計算叢集?
Azure Machine Learning 計算叢集是一種受控的計算基礎結構,可讓您輕鬆建立單一或多重節點計算。 計算叢集是可以與您工作區中的其他使用者共用的資源。 計算會在提交作業時自動相應增加,而且可以放在 Azure 虛擬網路中。 計算叢集在虛擬網路中也不支援公用 IP 部署。 計算會在容器化環境中執行,並在 Docker 容器中封裝模型的相依性。
計算叢集可在虛擬網路環境中安全地執行作業,而無須企業開啟 SSH 連接埠。 作業會在容器化環境中執行,並在 Docker 容器中封裝模型的相依性。
限制
您可以在工作區以外的不同區域和 VNet 中建立計算叢集。 不過,此功能僅適用於 SDK v2、CLI v2 或 Studio。 如需詳細資訊,請參閱 v2 版的安全定型環境。
我們目前僅支援透過 ARM 範本來建立 (而不是更新) 叢集。 若要更新計算,目前建議您使用 SDK、Azure CLI 或 UX。
Azure Machine Learning Compute 有預設限制,例如可配置的核心數目。 如需詳細資訊,請參閱管理和要求 Azure 資源的配額。
Azure 可讓您對資源施加鎖定,使其無法被刪除,或處於唯讀狀態。 請勿將資源鎖定套用至包含您工作區的資源群組。 將鎖定套用至包含您工作區的資源群組,將會防止 Azure Machine Learning 計算叢集的調整作業。 如需鎖定資源的詳細資訊,請參閱鎖定資源以防止非預期的變更。
提示
只要有足夠的配額可滿足所需的核心數目,叢集一般可以擴大為 100 個節點。 例如,叢集預設會設定為已在叢集節點之間啟用節點間通訊,以便支援 MPI 作業。 不過,您也可以將叢集擴大為數千個節點,只要提出支援票證,並要求將訂用帳戶 (或工作區) 列入允許清單,或要求特定叢集以停用節點間通訊即可。
建立
估計時間:約 5 分鐘。
Azure Machine Learning Compute 可以跨回合重複使用。 計算可與工作區中的其他使用者共用,並在回合之間保留,且會根據所提交的回合數目以及叢集上設定的 max_nodes 自動擴大或縮小節點。 min_nodes 設定可以控制可用的節點數目下限。
適用於計算叢集建立的專用核心每個區域、VM 系列配額與總計區域配額會統一,並與 Azure Machine Learning 定型計算叢集配額共用。
重要
若要避免在未執行作業時產生費用,請將節點數下限設定為 0。 這項設定可讓 Azure Machine Learning 將未使用的節點解除配置。 任何大於 0 的值都會保持執行該數量的節點,即使不使用節點也一樣。
未使用時,計算會自動向下調整為零節點。 視需要建立專用的虛擬機器以執行您的作業。
若要使用 Python 建立持續性 Azure Machine Learning Compute 資源,請指定 vm_size 和 max_nodes 屬性。 Azure Machine Learning 接著會對於其他屬性使用智慧型預設值。
- vm_size:Azure Machine Learning Compute 建立的 VM 系列節點。
- max_nodes:在 Azure Machine Learning Compute 上執行作業時,自動向上調整的最大節點數。
from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException
# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"
# Verify that cluster does not exist already
try:
cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
print('Found existing cluster, use it.')
except ComputeTargetException:
# To use a different region for the compute, add a location='<region>' parameter
compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
max_nodes=4)
cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
cpu_cluster.wait_for_completion(show_output=True)
建立 Azure Machine Learning Compute 時,您也可以設定多個進階屬性。 這些屬性可讓您建立固定大小的持續性叢集,也可以在您訂用帳戶中現有的 Azure 虛擬網路內建立。 如需詳細資料,請參閱 AmlCompute 類別。
警告
設定 location
參數時,如果其在與您的工作區或資料存放區不同的區域,您可能會看到網路延遲和資料傳輸成本增加。 建立叢集以及在叢集上執行作業時,可能會產生延遲和成本。
降低您的計算叢集成本
您也可以選擇使用低優先順序的 VM 來執行部分或所有的工作負載。 這些 VM 沒有保證可用性,可能會在使用時被佔用。 您將必須重新啟動先佔作業。
compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
vm_priority='lowpriority',
max_nodes=4)
設定受控身分識別
Azure Machine Learning 計算叢集也支援受控身分識別,以驗證對 Azure 資源的存取,而不在您的程式碼中包含認證。 受控身分識別有兩種:
- 系統指派的受控識別會直接在 Azure Machine Learning 計算叢集和計算執行個體上啟用。 系統指派的身分識別生命週期會直接繫結至計算叢集或執行個體。 若已刪除計算叢集或執行個體,Azure 會自動清除 Microsoft Entra ID 中的認證和身分識別。
- 使用者指派的受控身分識別是透過 Azure 受控識別服務提供的獨立 Azure 資源。 您可以將使用者指派的受控身分識別指派給多個資源,且可視需要持續保存。 您必須事先建立此受控身分識別,然後以 identity_id 做為必要參數傳遞。
在佈建設定中設定受控識別:
在名為
ws
的工作區中建立系統使用者指派的受控識別# configure cluster with a system-assigned managed identity compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2', max_nodes=5, identity_type="SystemAssigned", ) cpu_cluster_name = "cpu-cluster" cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
在名為
ws
的工作區中建立使用者指派的受控識別# configure cluster with a user-assigned managed identity compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2', max_nodes=5, identity_type="UserAssigned", identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>']) cpu_cluster_name = "cpu-cluster" cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
將受控識別新增至名為
cpu_cluster
的現有計算叢集系統指派的受控識別:
# add a system-assigned managed identity cpu_cluster.add_identity(identity_type="SystemAssigned")
使用者指派的受控識別:
# add a user-assigned managed identity cpu_cluster.add_identity(identity_type="UserAssigned", identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
注意
Azure Machine Learning 計算叢集僅支援一個系統指派的身分識別,或多個使用者指派的身分識別,無法同時支援兩者。
受控識別使用方式
預設受控身分識別是系統指派的受控身分識別,或第一個使用者指派的受控身分識別。
在執行期間,有兩種身分識別的應用程式:
系統會使用身分識別來設定使用者的儲存體裝載、容器登錄和資料存放區。
- 在此情況下,系統會使用預設的受控識別。
使用者套用身分識別,為已提交的執行從程式碼存取資源
- 在此情況下,請針對您要用來擷取認證的受控身分識別,提供對應的 client_id。
- 或是透過 DEFAULT_IDENTITY_CLIENT_ID 環境變數,取得使用者指派身分識別的用戶端識別碼。
例如,若要使用預設受控身分識別來取得資料存放區的權杖:
client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID') credential = ManagedIdentityCredential(client_id=client_id) token = credential.get_token('https://storage.azure.com/')
疑難排解
在 GA 發行之前就從 Azure 入口網站建立 Azure Machine Learning 工作區的部分使用者,可能會無法在該工作區上建立 AmlCompute。 您可以對該服務提出支援要求,或透過入口網站或 SDK 來建立新的工作區,以立即自行解除鎖定。
停滯在調整大小
如果您的 Azure Machine Learning 計算叢集在調整大小時出現停滯 (0-> 0) 的節點狀態,這可能是因為 Azure 資源鎖定所致。
Azure 可讓您對資源施加鎖定,使其無法被刪除,或處於唯讀狀態。 鎖定資源可能會導致非預期的結果。 某些看似不會修改資源的作業,實際上需要會被鎖定封鎖的動作。
有了 Azure Machine Learning,將刪除鎖定套用至工作區的資源群組,將會防止 Azure ML 計算叢集的調整作業。 若要解決此問題,建議您從資源群組中移除鎖定,並改為將其套用至群組中的個別項目。
重要
請勿將鎖定套用至下列資源:
資源名稱 | 資源類型 |
---|---|
<GUID>-azurebatch-cloudservicenetworksecurityggroup |
網路安全性群組 |
<GUID>-azurebatch-cloudservicepublicip |
公用 IP 位址 |
<GUID>-azurebatch-cloudserviceloadbalancer |
負載平衡器 |
這些資源是用來與計算叢集進行通訊及執行調整規模等作業。 從這些資源中移除資源鎖定應該會允許您的計算叢集進行自動調整。
如需資源鎖定的詳細資訊,請參閱鎖定資源以防止非預期的變更。
下一步
使用您的計算叢集,以便: