分享方式:


Azure Machine Learning 中的 Kubernetes 計算目標簡介

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

Azure 機器學習 CLI 和 Python SDK v2 支援 Kubernetes 計算目標。 您可以啟用現有的 Azure Kubernetes Service (AKS) 叢集或已啟用 Azure Arc 的 Kubernetes (Arc Kubernetes) 叢集作為 Kubernetes 計算目標。 使用 機器學習 中的計算來定型或部署模型。

圖表顯示 Azure Machine Learning 如何連線至 Kubernetes。

本文說明如何在 機器學習 中使用 Kubernetes 計算目標,包括使用案例、建議的最佳做法,以及和舊版AksCompute目標的比較KubernetesCompute

Kubernetes 計算目標的運作方式

Azure 機器學習 Kubernetes 計算支援兩種 Kubernetes 叢集。

計算 Location 描述
AKS cluster 在 Azure 內 透過 Azure 中的自我管理 AKS 叢集,您可以取得安全性和控制,以符合合規性需求和彈性來管理小組的機器學習工作負載。
Arc Kubernetes 叢集 Azure 外部 使用 Arc Kubernetes 叢集,您可以在任何內部部署或多重雲端基礎結構或邊緣中定型或部署模型。

在 AKS 或 Arc Kubernetes 叢集上部署簡單的叢集擴充功能後,機器學習 順暢地支援 Kubernetes 叢集來執行定型或推斷工作負載。 透過下列程式,輕鬆啟用並使用現有的 Kubernetes 叢集來 機器學習 工作負載:

以下是此程式中的主要責任:

  • IT 作業小組負責步驟 1、2 和 3。 此小組會準備 AKS 或 Arc Kubernetes 叢集、部署 機器學習 叢集擴充功能,並將 Kubernetes 叢集連結至 機器學習 工作區。 除了這些基本的計算設定步驟之外,IT 作業小組也會使用熟悉的工具,例如 Azure CLI 或 kubectl,為數據科學小組完成下列工作:

    • 設定網路和安全性選項,例如輸出 Proxy 伺服器連線或 Azure 防火牆、推斷路由器 (azureml-fe) 設定、SSL/TLS 終止和虛擬網路設定。

    • 建立和管理不同機器學習工作負載案例的實例類型,並取得有效率的計算資源使用率。

    • 針對與 Kubernetes 叢集相關的工作負載問題進行疑難解答。

  • 數據科學小組會在 IT 作業小組完成計算設定和建立計算目標之後,開始其工作。 此小組會在 機器學習 工作區中探索可用的計算目標和實例類型清單。 計算資源可用於定型或推斷工作負載。 數據科學小組會使用慣用的工具或 API 來指定計算目標名稱和實例類型名稱。 他們可以使用 Azure 機器學習 CLI v2、Python SDK v2 或 機器學習 Studio UI。

Kubernetes 使用案例

使用 Arc Kubernetes 叢集,您可以使用 Kubernetes,在任何內部部署和多重雲端基礎結構中建置、定型和部署模型。 此策略會在雲端設定環境中開啟先前無法使用的一些新模式。 下表提供使用 Azure 機器學習 Kubernetes 計算時啟用的新使用模式摘要:

使用模式 資料的位置 目標和需求 案例設定
在雲端中定型模型,在內部部署部署模型 雲端 使用雲端計算來支援彈性計算需求或 GPU 等特殊硬體。

模型部署必須是內部部署,才能符合安全性、合規性或延遲需求。
- 雲端中的 Azure 受控計算
- 客戶管理的 Kubernetes 內部部署
- 混合模式中的完全自動化機器學習作業,包括在雲端與內部部署之間順暢轉換的定型和模型部署步驟
- 可重複、所有資產都經過適當追蹤、視需要重新定型模型、重新定型后自動更新部署
定型內部部署和雲端模型,並且部署至雲端和內部部署 雲端 結合內部部署投資與雲端延展性。

將雲端和內部部署計算放在單一窗格的玻璃下。

存取雲端中數據的單一事實來源,並復寫內部部署 (延遲使用或主動)。

當內部部署資源無法使用(使用中或維護中)或不符合特定硬體需求時,啟用雲端計算主要使用量。
- 雲端中的 Azure 受控計算。
客戶管理的 Kubernetes 內部部署
- 混合模式中的完全自動化機器學習作業,包括在雲端與內部部署之間順暢轉換的定型和模型部署步驟
- 可重複、所有資產都經過適當追蹤、視需要重新定型模型、重新定型后自動更新部署
在內部部署定型模型、在雲端中部署模型 內部部署 將數據儲存在內部部署,以符合數據落地需求。

在雲端中部署模型以進行全域服務存取,或啟用調整和輸送量的計算彈性。
- 雲端中的 Azure 受控計算
- 客戶管理的 Kubernetes 內部部署
- 混合模式中的完全自動化機器學習作業,包括在雲端與內部部署之間順暢轉換的定型和模型部署步驟
- 可重複、所有資產都經過適當追蹤、視需要重新定型模型、重新定型后自動更新部署
在 Azure 中攜帶您自己的 AKS 雲端 取得更多安全性和控件。

建立所有私人IP機器學習,以防止數據外流。
- Azure 虛擬網路後方的 AKS 叢集
- Azure 機器學習 工作區和相關聯資源相同虛擬網路中的私人端點
完全自動化的機器學習作業
內部部署的完整機器學習生命週期 內部部署 保護敏感數據或專屬IP,例如機器學習模型、程式代碼和腳本。 - 內部部署的輸出 Proxy 伺服器連線
- Azure ExpressRoute 和 Azure Arc 私人連結至 Azure 資源
- 客戶管理的 Kubernetes 內部部署
- 完全自動化的機器學習作業

Kubernetes 計算目標的限制

KubernetesCompute Azure 機器學習 工作負載中的目標(定型和模型推斷)具有下列限制:

  • Azure Machine Learning 中預覽功能的可用性沒有保證。
  • Kubernetes 在線端點不支援模型目錄登錄中的模型(包括基礎模型)。
  • 在叢集內建立模型推斷部署的程式有 20 分鐘的逾時限制。 這包括下載映像、下載模型,以及初始化使用者腳本。

本節摘要說明使用 Kubernetes 計算的建議最佳做法。

IT 營運小組與數據科學小組之間的責任分離。 如先前所述,管理您自己的機器學習工作負載計算和基礎結構是一項複雜的工作。 最佳方法是讓 IT 營運小組處理工作,讓數據科學小組能夠專注於機器學習模型,以提升組織效率。

建立和管理不同機器學習工作負載案例的實例類型。 每個機器學習工作負載都會使用不同的計算資源數量,例如 CPU/GPU 和記憶體。 Azure 機器學習 會將實例類型實作為 Kubernetes 自定義資源定義 (CRD),其屬性為 nodeSelectorresource request/limit。 透過精心策劃的實例類型清單,IT 作業可以在特定節點上以機器學習工作負載為目標,並有效率地管理計算資源使用率。

多個 Azure Machine Learning 工作區共用相同的 Kubernetes 叢集。 您可以將 Kubernetes 叢集多次連結至相同的 機器學習 工作區或不同的工作區。 此程式會在單一工作區或多個工作區中建立多個計算目標。 因為許多客戶會在 機器學習 工作區周圍組織數據科學專案,因此多個數據科學專案現在可以共用相同的 Kubernetes 叢集。 這種方法可大幅降低機器學習基礎結構管理額外負荷,並提升IT成本節省。

使用 Kubernetes 命名空間分隔小組/專案工作負載。 當您將 Kubernetes 叢集連結至 機器學習 工作區時,您可以指定計算目標的 Kubernetes 命名空間。 計算目標執行的所有工作負載都會放在指定的命名空間下。

KubernetesCompute 和舊版 AksCompute 目標的比較

使用 Azure 機器學習 CLI/Python SDK v1,您可以使用舊版AksCompute目標,在 AKS 上部署模型。 KubernetesComputeAksCompute 目標都支援 AKS 整合,但支援方法不同。 下表摘要說明重要差異:

功能 AksCompute (舊版) KubernetesCompute
使用 CLI/SDK v1 No
使用 CLI/SDK v2 No Yes
設定訓練 No Yes
套用即時推斷 Yes Yes
套用批次推斷 No Yes
存取即時推斷的新功能 沒有新功能開發 可用的使用中藍圖

考慮到這些差異,以及使用 CLI/SDK v2 的整體 機器學習 演進,建議的方法是使用 Kubernetes 計算目標 (KubernetesCompute) 進行 AKS 模型部署。

如需詳細資訊,請流覽下列文章:

機器學習範例

GitHub 上的 Azure 機器學習 (azureml-examples) 存放庫中提供機器學習範例。 在任何範例中,將計算目標名稱取代為您的 Kubernetes 計算目標,然後執行範例。

以下是數個選項: