AzureML 中的 Kubernetes 計算目標簡介

適用於:Azure CLI ml 延伸模組第 2 版 (目前)Python SDK azure-ai-ml 第 2 版 (預覽)

透過 AzureML CLI/Python SDK v2,AzureML 引進了新的計算目標 - Kubernetes 計算目標。 您可以輕鬆地啟用現有的 Azure Kubernetes Service (AKS) 叢集或已啟用 Azure Arc 的 Kubernetes (Arc Kubernetes) 叢集,以成為 AzureML 中的 Kubenetes 計算目標,並使用此項目來定型或部署模型。

示意圖:Azure ML 如何連線至 Kubernetes。

在本文中,您會了解:

  • 運作方式
  • 使用方式情節
  • 建議最佳做法
  • KubernetesCompute 和舊版 AksCompute

運作方式

Azure ML Kubernetes 計算支援兩種 Kubernetes 叢集:

  • Azure 中的 AKS 叢集。 在 Azure 中使用自我管理 AKS 叢集,您可以取得符合合規性需求的安全性和控制,以及管理小組 ML 工作負載的彈性。
  • Azure 外部的 Arc Kubernetes 叢集。 使用 Arc Kubernetes 叢集,您可以在內部部署、跨多雲端或邊緣的任何基礎結構中定型或部署模型。

在 AKS 或 Arc Kubernetes 叢集上部署簡單的叢集擴充功能時,AzureML 中可順暢地支援 Kubernetes 叢集,以執行定型或推斷工作負載。 使用下列簡單步驟,輕鬆地為 AzureML 工作負載啟用和使用現有的 Kubernetes 叢集:

  1. 準備 Azure Kubernetes Service叢集Arc Kubernetes 叢集
  2. 部署 AzureML 擴充功能
  3. 將 Kubernetes 叢集連結至 Azure ML 工作區
  4. 使用 CLI v2、SDK v2 和 Studio UI 中的 Kubernetes 計算目標。

IT 作業小組。 IT 作業小組負責上述前 3 個步驟:準備 AKS 或 Arc Kubernetes 叢集、部署 Azure ML 叢集擴充功能,以及將 Kubernetes 叢集連結至 Azure ML 工作區。 除了這些基本的計算設定步驟,IT 作業小組也會使用熟悉的工具,例如 Azure CLI 或 kubectl,為資料科學小組處理下列工作:

  • 網路和安全性設定,例如輸出 Proxy 伺服器連線或 Azure 防火牆設定、推斷路由器 (azureml-fe) 設定、SSL/TLS 終止和 VNET 設定。
  • 針對不同的 ML 工作負載案例建立和管理執行個體類型,並取得有效率的計算資源使用率。
  • 針對與 Kubernetes 叢集相關的工作負載問題進行疑難排解。

資料科學小組。 IT 作業小組完成計算設定和計算目標建立之後,資料科學小組就可以探索 AzureML 工作區中可用的計算目標和執行個體類型清單。 這些計算資源可用於定型或推斷工作負載。 資料科學使用慣用的工具或 API (例如 AzureML CLI v2、Python SDK v2 (預覽) 或 Studio UI) 來指定計算目標名稱和執行個體類型名稱。

Kubernetes 使用案例

使用 Arc Kubernetes 叢集,您可以使用 Kubernetes 在任何基礎結構內部部署和跨多雲端建置、定型和部署模型。 這會在雲端設定環境中開啟先前無法使用的一些新模式。 下表提供 AzureML Kubernetes 計算所啟用之新使用模式的摘要:

使用模式 資料的位置 動機 基礎結構設定 & Azure ML 實作
在雲端中定型模型,在內部部署部署模型 Cloud 利用雲端計算。 因為彈性計算需求或 GPU 之類的特殊硬體。
模型必須部署在內部部署,因為安全性、合規性或延遲需求
1. 雲端中的 Azure 受控計算。
2. 客戶管理的 Kubernetes 內部部署。
3. 混合模式中的完全自動化 MLOps,包括從雲端順暢轉換為內部部署 (反之亦然) 的定型和模型部署步驟。
4. 可重複,並已正確追蹤所有資產。 必要時重新定型模型,並在重新定型之後自動更新模型部署。
在內部部署定型模型、在雲端中部署模型 內部部署 由於資料落地需求,資料必須保留在內部部署。
在雲端中部署模型以進行全域服務存取,或用於規模和輸送量的計算彈性。
1. 雲端中的 Azure 受控計算。
2. 客戶管理的 Kubernetes 內部部署。
3. 混合模式中的完全自動化 MLOps,包括從雲端順暢轉換為內部部署 (反之亦然) 的定型和模型部署步驟。
4. 可重複,並已正確追蹤所有資產。 必要時重新定型模型,並在重新定型之後自動更新模型部署。
在 Azure 中攜帶您自己的 AKS Cloud 更多的安全性和控制。
所有私人 IP 機器學習服務,以防止資料外流。
1. Azure VNet 後方的 AKS 叢集。
2. 在 AzureML 工作區及其相關聯資源的相同 VNet 中建立私人端點。
3. 完全自動化 MLOps。
內部部署的完整 ML 生命週期 內部部署 保護敏感性資料或專屬 IP,例如 ML 模型和程式碼/指令碼。 1. 內部部署的輸出 Proxy 伺服器連線。
2. Azure ExpressRoute 和 Azure Arc 私人連結至 Azure 資源。
3. 客戶管理的 Kubernetes 內部部署。
4. 完全自動化 MLOps。

區分 IT 作業小組與資料科學小組的責任。 如上所述,管理您自己的 ML 工作負載計算和基礎結構是一項複雜的工作,最好由 IT 營運小組完成,讓資料科學小組可以專注於 ML 模型,以提升組織效率。

為不同的 ML 工作負載案例建立並管理執行個體類型。 每個 ML 工作負載使用的計算資源量都不同,例如 CPU/GPU 和記憶體。 Azure ML 會將執行個體類型實作為具有 nodeSelector 屬性和資源要求/限制的 Kubernetes 自訂資源定義 (CRD)。 使用仔細編製的執行個體類型清單,IT 作業可以特定節點上的 ML 工作負載為目標,有效率地管理計算資源使用率。

多個 Azure ML 工作區共用相同的 Kubernetes 叢集。 Kubernetes 叢集可以多次連結至相同的 Azure ML 工作區或不同的 Azure ML 工作區,在一個工作區或多個工作區中建立多個計算目標。 因為許多客戶會圍繞 Azure ML 工作區組織資料科學專案,所以多個資料科學專案現在可以共用相同的 Kubernetes 叢集。 這可大幅降低 ML 基礎結構管理的額外負荷,並節省 IT 成本。

使用 Kubernetes 命名空間分隔小組/專案工作負載。 將 Kubernetes 叢集附加到 AzureML 工作區時,可以為計算目標指定 Kubernetes 命名空間。 計算目標執行的所有工作負載都會放在指定的命名空間下。

KubernetesCompute 和舊版 AksCompute

透過 AzureML CLI/Python SDK v1,您可以使用 AksCompute 目標在 AKS 上部署模型。 KubernetesCompute 目標和 AksCompute 目標都支援 AKS 整合,不過是以不同的方式支援該項目。 下表顯示主要差異。

功能 AKS 與 AksCompute (舊版) 整合 AKS 與 KubernetesCompute 整合
CLI/SDK v1
CLI/SDK v2 Yes
訓練
即時推斷 Yes
批次推斷
即時推斷新功能 沒有新功能開發 作用中的藍圖

由於這些主要差異和整體 AzureML 發展為使用 SDK/CLI v2,如果您決定使用 AKS 進行模型部署,AzureML 建議您使用 Kubernetes 計算目標來部署模型。

後續步驟

其他資源

範例

您可以在 https://github.com/Azure/azureml-examples.git 中找到所有 AzureML 範例。

如需任何 AzureML 範例,您只需要在 Kubernetes 計算目標中更新計算目標名稱,即可完成。