Azure Kubernetes Service (AKS) 支援 NVIDIA GPU 啟用的節點池,以執行計算密集型工作負載,包括 AI/ML 訓練、即時推論及大規模資料分析。 傳統上,GPU 是以一對一的配置方式分配,即單一 Kubernetes Pod 會佔用整個 Azure 虛擬機(VM)中的 GPU 裝置。 雖然此模式提供簡單且強大的隔離性,但在工作負載未完全佔用叢集可用 GPU 資源的情況下,可能導致利用率不足。
為了提升利用率並支援並行工作負載,客戶可以在節點池中整合不同的 GPU 分割策略。 這些方法允許多個工作負載共享單一實體 GPU,透過將其劃分為較小的邏輯單元,或在軟體或 GPU 驅動程式層級擴展存取權限。
本文將介紹 NVIDIA GPU 在 AKS 中的三種主要節點分割策略:多實例 GPU(MIG)、時間切片與多程序服務(MPS)。
AKS 中 GPU 節點分割策略概述
AKS 環境中可用的三種主要原則為多執行個體 GPU (MIG)、時間切片與多進程服務 (MPS)。 每種方法在 AKS 平台管理、隔離類型及部署應用場景上各有差異。
| Strategy | AKS 的受控或允許項目 | GPU 共享類型 | 建議用於 |
|---|---|---|---|
| 多實例 GPU(MIG) | 受管理(或透過 GPU Operator 由使用者管理) | 硬體分割 | 生產工作負載 |
| 時間切片 (透過 NVIDIA GPU 操作員) | 由使用者管理,允許使用 AKS | 軟體排程 | 可變 GPU 負載的實驗 |
| 多程序服務(MPS,NVIDIA GPU 運算子) | 由使用者管理,允許使用 AKS | CUDA 等級流程多工 | 低延遲、高吞吐量的工作負載 |
AKS 上的受控多執行個體 GPU(MIG)
多實例 GPU(MIG)是一種基於硬體的分割功能,可用於部分 NVIDIA GPU 架構,如 A100、H100 及 H200 系列。 MIG 使單一實體 GPU 能被分割成多個獨立實例,每個實例擁有專用的運算核心、記憶體與快取。 這確保了強大的工作負載隔離與可預測的效能特性,使 MIG 適合生產環境。
在AKS中,MIG是一種受控能力。 當啟用 MIG 啟用的節點池 配置時,Azure 會配置 GPU 硬體、安裝與維護所需的驅動程式堆疊,並透過 NVIDIA 裝置外掛將 MIG 實例與 Kubernetes 整合。 每個 MIG 切片都以可分配的離散資源形式暴露給 Kubernetes 排程器,讓 Pod 能以細緻且確定性的方式請求 GPU 容量。
此方法為企業部署帶來多項優勢。 它透過硬體層級分割提供生產級隔離,並透過委託生命週期管理(包括驅動程式更新與設定)給 AKS 來降低營運負擔。 此外,從排程器的角度來看,MIG 實例作為獨立的 GPU 裝置,使得可預測的放置與資源分配成為可能。
然而,MIG 也引入了一些限制:節點池層級的分割配置是靜態的,意即變更需要節點重新配置。 彈性僅限於底層 GPU 硬體支援的預先定義 MIG 配置檔。
使用 NVIDIA GPU 操作員 (使用者管理的) 進行時間切片
時間切片是一種軟體型 GPU 共用機制,允許多個 Kubernetes Pod 透過時間交錯執行來共用單一 GPU。 此方法透過管理 GPU 驅動程式、Kubernetes 裝置外掛及容器執行時配置的 NVIDIA GPU 操作員實現。
時間切片可以在 AKS 節點集區中設定,但不受平台管理。 叢集操作員負責部署與設定 NVIDIA GPU 操作員,通常透過 Helm 進行,並透過裝置外掛設定來啟用時間切片。 設定完成後,多個 pod 可以請求存取同一 GPU 資源,並以分時方式排程其工作負載。
時間切片提供彈性與廣泛的相容性,因為它不依賴特定的 GPU 硬體特性,且可用於大多數 CUDA 支援的 NVIDIA GPU。 它適用於開發、測試,或 GPU 使用率呈現突發性或波動性模式的工作負載。
儘管時間分片具有彈性,但它無法提供硬體層級的隔離。 所有工作負載共用相同的 GPU 記憶體與運算資源,可能導致爭用與效能不穩定。 由於組態與生命週期管理由使用者驅動,操作員也必須處理驅動程式更新、相容性及調校。 因此,通常不建議在需要嚴格服務等級協定 (SLA) 的正式執行工作負載中,使用時間切片。
使用 NVIDIA GPU Operator 的多進程服務(MPS)(由使用者管理)
NVIDIA 多程序服務(MPS) 是一項驅動程式層級功能,使多個 CUDA 應用程式能在同一張 GPU 上同時執行。 與交替執行工作負載的時間切片不同,MPS 允許不同程序的核心同時執行,提升整體 GPU 利用率並降低相容工作負載的延遲。
在 AKS 中,MPS 可透過 使用者管理 部署 NVIDIA GPU Operator 來配置。 操作員必須設定 GPU 驅動程式環境以啟用 MPS 並管理 MPS 控制守護程序的生命週期。 連接到同一 MPS 伺服器的工作負載可以共用 GPU,並從核心同步執行中受益。
MPS 適用於高吞吐量且低延遲的情境,如批次作業或緊密耦合的平行工作負載。 它提供對 GPU 共享的細緻控制,並在設計工作負載以利用並行執行時,能顯著提升利用率。
然而,MPS帶來額外的操作複雜性。 設定是手動的,排除故障比其他方法更為複雜。 與時間切片類似,MPS 並不提供強的隔離,因為所有程序共用 GPU 記憶體和運算資源。 因此,MPS 通常不建議用於需要嚴格服務水準協議(SLA)的生產工作負載。
如何選擇 GPU 分割策略
在 AKS 中選擇合適的 GPU 分割策略取決於工作負載需求、操作偏好及效能期望。 MIG 是需要強大隔離與可預測效能的生產環境所推薦的方法。 作為 AKS 節點池的功能,MIG 簡化了操作並降低了管理負擔。
時間切片對於非正式執行環境,或 GPU 需求會波動的工作負載而言很有用,因為在這類情況下,將利用率最大化比維持一致性更重要。 它提供硬體無關的解決方案,但需要謹慎管理,且無法保證效能隔離。
MPS 非常適合需要同時執行 GPU 與低延遲的專業工作負載。 它提供最高的潛在利用效率,但複雜度增加且隔離性極低,非常適合具備 CUDA 感知應用的進階使用者。
在實際操作上,組織可跨環境採用不同原則,使用 MIG 作為正式執行叢集,而在開發或實驗情境中則利用時間切片或 MPS。 仔細評估 GPU 工作負載特性與操作限制,對於選擇最有效的長期分割方法至關重要。
相關內容
- 開始在 AKS 上使用 多實例 GPU 節點池 。
- 了解 GPU 啟用節點生命週期管理的最佳實務。
- 透過在叢集中設定 節點箱打包 來優化 GPU 節點的利用率與效能。