本頁面說明 Google Kubernetes Engine (GKE) 中的 GPU,協助您為工作負載選取最佳 GPU 設定。如要部署使用 Slurm 的 GPU 工作負載,請參閱建立 AI 適用的 Slurm 叢集。
您可以使用 GPU 加速處理耗用大量資源的工作,例如機器學習和資料處理。本頁面中的資訊可協助您執行下列操作:
- 確保在需要時可使用 GPU。
- 決定要在 GKE Autopilot 模式還是 GKE Standard 模式叢集中使用 GPU。
- 選擇 GPU 相關功能,有效運用 GPU 容量。
- 監控 GPU 節點指標。
- 更有效地處理中斷情形,提高 GPU 工作負載的可靠性。
本頁面適用於平台管理員和營運人員,以及機器學習 (ML) 工程師,可協助確保加速器基礎架構已針對工作負載完成最佳化。
閱讀本頁面之前,請先熟悉下列概念:
在 GKE 中選取 GPU
在 GKE 中,要求 GPU 硬體的方式取決於您使用的是 Autopilot 還是 Standard 模式。在 Autopilot 中,您可以在工作負載中指定 GPU 資源,藉此要求 GPU 硬體。在 GKE Standard 模式中,您可以將 GPU 硬體附加至叢集中的節點,然後將 GPU 資源分配給在這些節點上執行的容器化工作負載。如需在工作負載中附加及使用 GPU 的詳細操作說明,請參閱「在 Autopilot 上部署 GPU 工作負載」或「在標準節點集區上執行 GPU」。
GKE 可用的 GPU 硬體是運算工作負載適用的 Compute Engine GPU 的子集。可用的特定硬體取決於叢集的 Compute Engine 區域或可用區。如需特定可用性,請參閱 GPU 地區和區域。
GKE 提供一些 GPU 專屬功能,可提升節點上執行工作負載的 GPU 資源使用效率,包括分時、多執行個體 GPU,以及搭配 NVIDIA MPS 的多執行個體 GPU。
本頁內容可協助您考量在 GKE 中要求 GPU 的選項,包括:
- 選擇 GPU 配額:專案中可執行的 GPU 數量上限
- 決定要使用 Autopilot 還是 Standard 模式
- 透過 GKE 或 GKE 上的 NVIDIA GPU 運算子管理 GPU 堆疊
- 選擇可減少 GPU 資源閒置量的功能
- 存取 CUDA 應用程式的 NVIDIA CUDA-X 程式庫
- 監控 GPU 節點指標
- 處理因節點維護作業而導致的中斷
- 使用 GKE Sandbox 保護 GPU 工作負載
規劃 GPU 配額
GPU 配額是指可在Google Cloud 專案中執行的 GPU 數量上限。如要在 GKE 叢集中使用 GPU,專案必須有足夠的 GPU 配額。請查看配額頁面,確保專案有足夠的 GPU。
您的 GPU 配額至少應與您要在叢集中執行的 GPU 總數相同。如果您啟用了叢集自動調度資源功能,則要求的 GPU 配額至少要等於叢集的節點數上限乘以每個節點的 GPU 數量。
舉例來說,如果您預期使用三個節點,每個節點有兩個 GPU,則專案需要六個 GPU 配額。
如要申請更多 GPU 配額,請按照申請調整配額的說明操作,並使用 gpus
做為指標。
使用 Autopilot 或 Standard 選擇 GPU 支援
Autopilot 和 Standard 叢集都支援 GPU。
使用 Autopilot 叢集,享受全代管 Kubernetes 服務。在 Autopilot 模式下,GKE 會管理驅動程式安裝、節點資源調度、Pod 隔離和節點佈建作業。
下表概略說明 Autopilot 和 Standard GPU 支援的差異:
說明 | Autopilot | 標準 |
---|---|---|
要求 GPU 硬體 | 在工作負載中指定 GPU 資源。 | 將 GPU 硬體附加至叢集中的節點,然後將 GPU 資源分配給在這些節點上執行的容器化工作負載。 |
GPU 硬體可用性 |
|
Compute Engine 支援的所有 GPU 類型 |
選取 GPU | 您在工作負載規格中要求 GPU 數量和類型。 根據預設,Autopilot 會安裝該 GKE 版本的預設驅動程式,並管理節點。如要在 Autopilot 中選取特定驅動程式版本,請參閱 Autopilot GPU Pod 的 NVIDIA 驅動程式選取項目。 |
請按照「在標準節點集區中執行 GPU」一文所述步驟操作:
|
提高 GPU 使用率 | ||
安全性 | 搭配 GKE Sandbox 的 GPU | |
定價 | Autopilot GPU Pod 定價 | Compute Engine GPU 定價 |
如要選擇最適合工作負載的 GKE 作業模式,請參閱「選擇 GKE 作業模式」。
透過 GKE 或 GKE 上的 NVIDIA GPU 運算子管理 GPU 堆疊
根據預設,GKE 會管理 GPU 節點的整個生命週期,包括自動安裝 GPU 驅動程式、使用 NVIDIA Data Center GPU Manager (DCGM) 監控 GKE 上的 GPU 工作負載,以及 GPU 共用策略。
使用 GKE 管理 GPU 節點,因為 GKE 會全面管理 GPU 節點生命週期。
如要開始使用 GKE 管理 GPU 節點,請選擇下列其中一個選項:
NVIDIA GPU 運算子可做為替代方案,在 Container-Optimized OS (COS) 和 Ubuntu 節點映像檔上,提供 GKE 的全代管 GPU 支援。如果您希望在多個雲端服務供應商之間獲得一致的體驗、已使用 NVIDIA GPU 運算子,或是使用依附於 NVIDIA GPU 運算子的軟體,請選取這個選項。詳情請參閱「使用 NVIDIA GPU 運算子管理 GPU 堆疊」。
如要為您的應用情境選擇最佳選項,請參閱下表,比較 GKE 上管理 GPU 節點的兩種方法。
說明 | 使用 GKE 管理 GPU 節點 | 在 GKE 上使用 NVIDIA GPU 運算子 |
---|---|---|
管理 GPU 節點生命週期 (安裝、升級) | 由 GKE 全代管。 | 由使用者自行管理。 |
安裝驅動程式 | 自動和手動安裝 GPU 驅動程式。 | 手動安裝 GPU 驅動程式。 |
節點選取器 | cloud.google.com/gke-gpu=true |
nvidia.com/gpu=true |
GPU 共用策略 |
|
|
GPU 節點的健康狀態檢查 |
|
|
指標和可觀測性 |
|
|
使用 GKE 中的 GPU 功能,最佳化資源用量
根據預設,Kubernetes 只支援將 GPU 以完整單元的形式指派給容器,但 GKE 提供額外功能,可協助您最佳化 GPU 工作負載的資源用量。
GKE 提供下列功能,可減少未充分利用的 GPU 資源數量:
GPU 功能 | |
---|---|
多例項 GPU |
適用於:Autopilot 和 Standard 將單一 GPU 分割為最多七個硬體分離的執行個體,並指派為節點上容器的個別 GPU。每個指派的容器都會取得該執行個體可用的資源。 |
分時共用 GPU |
適用於:Autopilot 和 Standard 在節點上,向多個容器呈現多個單位的單一 GPU。GPU 驅動程式會視需要執行內容切換,並將完整的 GPU 資源分配給每個指派的容器。 |
NVIDIA MPS |
適用方案:Standard 讓多個容器共用一部實體 NVIDIA GPU。NVIDIA MPS 是 CUDA API 的替代實作方式,與二進位檔相容,可讓多程序 CUDA 應用程式在單一 GPU 裝置上同時執行,且使用者不會察覺。 |
存取 CUDA 應用程式的 NVIDIA CUDA-X 程式庫
CUDA 是 NVIDIA 針對 GPU 提供的平行運算平台和程式設計模型。如要使用 CUDA 應用程式,您使用的映像檔必須含有程式庫。如要新增 NVIDIA CUDA-X 程式庫,請在容器規格的 LD_LIBRARY_PATH
環境變數中加入下列值,即可建構及使用自己的映像檔:
/usr/local/cuda-CUDA_VERSION/lib64
:節點上 NVIDIA CUDA-X 程式庫的位置。將
CUDA_VERSION
替換為您使用的 CUDA-X 映像檔版本。部分版本也包含/usr/local/nvidia/bin
中的偵錯公用程式。詳情請參閱 DockerHub 上的 NVIDIA CUDA 映像檔。如要查看您 CUDA 版本所需的最低 GPU 驅動程式版本,請參閱 CUDA Toolkit 和相容的驅動程式版本。
/usr/local/nvidia/lib64
:NVIDIA 裝置驅動程式的位置。
在 Autopilot 叢集中,GKE 會管理驅動程式版本的選取和安裝作業。
監控 GPU 節點工作負載的效能
如果 GKE 叢集已啟用 系統指標,您就能在 Cloud Monitoring 中使用下列指標,監控 GPU 工作負載效能:
- 「Duty Cycle」(任務週期) (
container/accelerator/duty_cycle
): 在加速器主動處理期間,過去取樣期間 (10 秒) 的時間百分比。值介於 1 到 100 之間。 - 「Memory Usage」(記憶體用量) (
container/accelerator/memory_used
): 分配的加速器記憶體量,以位元組為單位。 - 「Memory Capacity」(記憶體容量) (
container/accelerator/memory_total
): 加速器記憶體總量,以位元組為單位。
這些指標適用於容器層級 (container/accelerator
),且不會針對使用 GPU 分時或 NVIDIA MPS 的 GPU 上排定的容器收集。
您可以使用預先定義的資訊主頁,監控含有 GPU 節點的叢集。詳情請參閱「 查看可觀測性指標」。如要瞭解如何監控叢集及叢集資源,請參閱 GKE 可觀測性。
查看工作負載的用量指標
您可以前往 Google Cloud 主控台的「Workloads」(工作負載) 資訊主頁,查看工作負載的 GPU 用量指標。
如要查看工作負載的 GPU 用量,請執行下列步驟:
前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面。
前往「Workloads」(工作負載)- 選取工作負載。
「Workloads」(工作負載) 資訊主頁會顯示 GPU 記憶體用量和容量的圖表,以及 GPU 任務週期。
查看 NVIDIA Data Center GPU Manager (DCGM) 指標
您可以使用 Google Cloud Managed Service for Prometheus 收集及以視覺化方式呈現 NVIDIA DCGM 指標。如果是 Autopilot 叢集,GKE 會安裝驅動程式。如果是標準叢集,您必須安裝 NVIDIA 驅動程式。
如需如何部署 GKE 代管 DCGM 套件的操作說明,請參閱「收集及查看 NVIDIA Data Center GPU Manager (DCGM) 指標」。
處理因節點維護作業而導致的中斷
主機 GPU 的 GKE 節點可能會發生維護事件或其他中斷情形,導致節點關機。在控制平面執行 1.29.1-gke.1425000 以上版本的 GKE 叢集中,您可以將 GKE 設為正常終止工作負載,減少工作負載中斷情形。
如要瞭解、設定及監控執行 AI/機器學習工作負載的 GKE 節點上可能發生的中斷事件,請參閱「管理 GPU 和 TPU 的 GKE 節點中斷」。