您可以要求 GPU,加速 Google Kubernetes Engine (GKE) Autopilot 工作負載中的工作。本文說明如何在 Autopilot 中執行 GPU、設定 Pod 資源要求和限制,以及監控 GPU 工作負載。
本文適用於平台管理員和營運人員,以及想要為執行機器學習 (ML) 訓練或推論等工作負載要求 GPU 的資料和 AI 專家。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色、職責和範例工作,請參閱「常見的 GKE 使用者角色和工作」。
繼續操作前,請務必熟悉下列概念:
您可以使用 ComputeClasses 或 Pod 規格中的節點選取器要求 GPU。GKE 會將這些 Pod 放在具有這些 GPU 的節點上。您也可以使用 GPU 共用功能,例如分時。
定價
Autopilot 節點計費模式適用於 GPU Pod。節點的 Autopilot 管理溢價和 Compute Engine 中的實際 GPU 硬體,都適用彈性運算承諾使用折扣 (CUD)。
請注意 Autopilot GPU 的下列定價注意事項:
- 所有 A100 (80 GB) GPU 節點都使用本機 SSD 做為節點開機磁碟,大小固定,取決於 GPU 數量。系統會另外收取附加本機 SSD 的費用。這項價格不適用於 A100 (40GB) GPU。
- GKE Sandbox 的定價與預設 Autopilot 定價相同。如要進一步瞭解如何將加速器工作負載放入沙箱,請參閱「GKE Sandbox」和「開始使用 GKE Sandbox」。
- 如果您使用 NVIDIA RTX PRO 6000 GPU (G4 機型系列) 搭配 Autopilot 模式,自 2026 年 10 月 1 日起,GKE 除了會收取基礎硬體的現有適用費用,還會收取 Autopilot 節點管理進階版費用。無論是在這個日期之前或之後,這些現有費用都會繼續適用。如要進一步瞭解透過 Autopilot 工作負載要求特定硬體時的計費方式,請參閱「選取特定硬體的 Autopilot 工作負載」。
事前準備
開始之前,請務必先完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
確認 GKE Autopilot 叢集執行下列其中一個版本,以便使用下列 GPU 或功能:
- NVIDIA B200 (180 GB) GPU:1.32.2-gke.1422000 以上版本
- NVIDIA RTX PRO 6000 GPU:
- 具有一或多個 GPU 的機型:1.34.1-gke.1829001 以上版本
- GPU 數量少於 1 個的機型:1.35.2-gke.1485000 以上版本
所有其他 GPU 類型都支援所有可用的 GKE 版本。
- 確認專案中有足夠的 GPU 配額。您必須在每個區域中,為要建立的 GPU 型號提供足夠的 Compute Engine GPU 配額。如需更多 GPU 配額,請要求調整配額。
如要使用搭載少於一個 NVIDIA RTX PRO 6000 GPU 的 G4 機型,除了遵守上述版本規定外,還必須執行下列操作:
- 明確要求 GPU 數量少於 1 的 G4 機型。
- 如果叢集執行的 GKE 版本低於 1.36,請準備工作負載。
限制
- GPU 可用性取決於 Autopilot 叢集的 Google Cloud 區域和 GPU 配額。如要依區域或可用區尋找 GPU 型號,請參閱「GPU 區域和可用區」。
- 如果是 NVIDIA A100 (80 GB) GPU,無論 Pod 是否使用該容量,您都必須為連接至節點的本機 SSD 支付固定價格。
- 如要將多個 GPU Pod 放入單一節點,這些 Pod 的 GPU 要求總和必須「小於或等於」連接至該節點的 GPU 資源數量。舉例來說,如果節點的
gke-accelerator-count為 4,最多可容納四個各要求一個 GPU 的 Pod。
在單一 GPU 節點上放置多個 Pod,適用於下列情況:
- 您為大型加速器機型預留了運算資源,並執行單一 GPU 工作負載,因此在每個節點部署一個 Pod 會浪費該機器的其他 GPU
- 您有必須在同一部主機上執行的 GPU 工作負載
在這種情況下,建議您確保節點上的 Pod GPU 資源要求總和等於附加至節點的 GPU 數量,以便使用節點上的所有 GPU。
在容器中要求 GPU
如要為容器要求 GPU 資源,請在 Pod 規格中加入下列欄位。您可以視工作負載需求,選擇性省略 cloud.google.com/gke-accelerator-count 選取器。
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
nodeSelector:
cloud.google.com/gke-accelerator: GPU_TYPE
cloud.google.com/gke-accelerator-count: "GPU_COUNT"
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: GPU_QUANTITY
更改下列內容:
GPU_TYPE:GPU 硬體類型。允許的值如下:nvidia-gb200:NVIDIA GB200 (預先發布版)nvidia-b200:NVIDIA B200 (180 GB)nvidia-h200-141gb:NVIDIA H200 (141 GB)nvidia-h100-mega-80gb:NVIDIA H100 Mega (80 GB)nvidia-h100-80gb:NVIDIA H100 (80 GB)nvidia-a100-80gb:NVIDIA A100 (80GB)nvidia-tesla-a100:NVIDIA A100 (40GB)nvidia-rtx-pro-6000:NVIDIA RTX PRO 6000nvidia-l4:NVIDIA L4nvidia-tesla-t4:NVIDIA T4
nvidia-gb200:NVIDIA GB200 (預先發布版)nvidia-b200:NVIDIA B200 (180 GB) (預先發布版)nvidia-h200-141gb:NVIDIA H200 (141 GB) (預先發布版)nvidia-h100-mega-80gb:NVIDIA H100 Mega (80 GB)nvidia-h100-80gb:NVIDIA H100 (80 GB)nvidia-a100-80gb:NVIDIA A100 (80GB)nvidia-tesla-a100:NVIDIA A100 (40GB)nvidia-rtx-pro-6000:NVIDIA RTX PRO 6000 (預先發布版) (但 GPU 數量少於 1 個的 G4 機型除外)nvidia-l4:NVIDIA L4nvidia-tesla-t4:NVIDIA T4
GPU_COUNT:可附加至節點的 GPU 總數。必須大於或等於GPU_QUANTITY,且是所選 GPU 類型支援的 GPU 數量。如果省略這個 nodeSelector,Autopilot 會在每個 GPU 節點上放置一個 Pod。GPU_QUANTITY:要分配給容器的 GPU 數量。必須小於或等於GPU_COUNT,且為所選 GPU 類型支援的 GPU 數量。選用
runtimeClassname: gvisor:這項設定可讓您在 GKE Sandbox 中執行這個 Pod。如要使用,請取消註解這一行。詳情請參閱「GKE Sandbox」。
您必須在 Pod 規格中指定 GPU 類型和數量。如果省略其中一個值,Autopilot 會拒絕您的 Pod。
部署這個資訊清單時,Autopilot 會自動為節點 GKE 版本安裝預設的 NVIDIA 驅動程式。您可以選擇為該 GKE 版本安裝最新版驅動程式,方法是在資訊清單中加入下列節點選取器:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
將 DRIVER_VERSION 替換為下列其中一個值:
default- 節點 GKE 版本的預設穩定版驅動程式。 如果您在資訊清單中省略 nodeSelector,這是預設選項。latest:適用於節點 GKE 版本的最新驅動程式版本。
為 Autopilot GPU Pod 要求 CPU 和記憶體
定義 GPU Pod 時,您也應要求 CPU 和記憶體資源,確保容器正常運作。Autopilot 會根據 GPU 類型和數量,強制執行特定的 CPU 和記憶體下限、上限和預設值。如果您在單一節點上執行多個 GPU Pod,請指定 CPU 和記憶體,否則系統會預設為節點的整個容量。詳情請參閱「Autopilot 中的資源要求」。
Pod 規格應與下列範例類似,其中要求四個 T4 GPU:
apiVersion: v1
kind: Pod
metadata:
name: t4-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
nodeSelector:
cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
containers:
- name: t4-container-1
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: 3
cpu: "54"
memory: "54Gi"
requests:
cpu: "54"
memory: "54Gi"
- name: t4-container-2
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: 1
cpu: "18"
memory: "18Gi"
requests:
cpu: "18"
memory: "18Gi"
- 選用
runtimeClassname: gvisor:這項設定可讓您在 GKE Sandbox 中執行這個 Pod。如要使用,請取消註解這一行。詳情請參閱「GKE Sandbox」。
這個資訊清單會為 CPU 和記憶體資源指定 limits。如果省略 CPU 或記憶體的 limits,GKE 會為 Pod 指派 Burstable QoS 類別,並允許 Pod 突發使用節點上資源要求總和中的未使用資源。詳情請參閱「在 GKE 中設定 Pod 爆量」。
要求 Autopilot GPU Pod 的暫時儲存空間
您也可以在需要短期儲存空間的 Pod 中要求臨時儲存空間。可用暫時性儲存空間上限和使用的儲存空間硬體類型,取決於 Pod 要求的 GPU 類型和數量。您可以使用本機 SSD 做為臨時儲存空間,設定如下:
- 使用 NVIDIA RTX PRO 6000 GPU,並執行符合「事前準備」一節所列版本需求的 GKE 修補程式版本。八分之一 GPU 分數設定不支援暫時性儲存空間。
- 使用 NVIDIA L4 GPU。
如要將本機固態硬碟用於暫時儲存空間,請將 cloud.google.com/gke-ephemeral-storage-local-ssd: "true" nodeSelector 新增至工作負載資訊清單。請參閱「搭配 Autopilot 叢集使用本機 SSD 支援的暫時性儲存空間」中的資訊清單範例。NVIDIA H100 (80GB) GPU 和 NVIDIA A100 (80GB) GPU 一律會使用本機 SSD 做為暫時性儲存空間,您無法為這些 GPU 指定節點選取器。
使用自訂 ComputeClass 要求特定機型
在某些情況下,您可能需要在特定機型上執行 GPU 工作負載,例如您需要的機型不是 Autopilot 叢集的預設機型。您可以使用自訂 ComputeClass 明確要求特定機器,定義節點設定檔,指定機型和 GPU。如要使用少於一個 GPU 的 G4 機型,請按照下節的說明,明確要求機型。
如需 ComputeClasses 的一般資訊,請參閱「關於自訂 ComputeClasses」。
如要為 GPU 工作負載要求特定機型,請完成下列步驟:
為自訂 ComputeClass 建立資訊清單。在本範例中,請將下列內容儲存為
a3-computeclass.yaml:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: a3-edge-gpu spec: priorities: - machineType: a3-edgegpu-8g-nolssd gpu: count: 8 type: nvidia-h100-80gb nodePoolAutoCreation: enabled: true在這個資訊清單中:
metadata.name是自訂 ComputeClass 的名稱,您會在 Pod 規格中參照這個名稱。machineType是要佈建的特定機器。gpu欄位會指定附加至該機器的 GPU 類型和數量。這些欄位的值必須與指定machineType的功能相符。
執行下列指令來套用資訊清單:
kubectl apply -f a3-computeclass.yaml在 Pod 資訊清單中,使用
cloud.google.com/compute-class節點選取器要求 ComputeClass:apiVersion: v1 kind: Pod metadata: name: gpu-cc-pod spec: nodeSelector: cloud.google.com/compute-class: a3-edge-gpu containers: - name: my-gpu-container image: nvidia/cuda:latest command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1GKE 會佈建符合
a3-edge-gpuComputeClass 定義的新節點,用來執行 Pod。
要求 GPU 數量少於 1 的 G4 機型
G4 機型使用 NVIDIA RTX PRO 6000 GPU。如要要求 GPU 數量少於 1 的 G4 機型,請按照上一節的操作說明設定下列欄位:
machineType設為下列任一值:g4-standard-6(GPU 的八分之一)g4-standard-12(四分之一個 GPU)g4-standard-24(GPU 的一半)
gpu.count:1gpu.type:nvidia-rtx-pro-6000
確認已部署 GPU 的分配情形
如要確認已部署的 GPU 工作負載是否具有要求的 GPU,請執行下列指令:
kubectl describe node NODE_NAME
將 NODE_NAME 替換為 Pod 排程的節點名稱。
輸出結果會與下列內容相似:
apiVersion: v1
kind: Node
metadata:
...
labels:
...
cloud.google.com/gke-accelerator: nvidia-tesla-t4
cloud.google.com/gke-accelerator-count: "1"
cloud.google.com/machine-family: custom-48
...
...
檢查 GPU 驅動程式版本
在 Autopilot 叢集中,GKE 會自動在所有 GPU 節點上安裝 NVIDIA 裝置驅動程式。如要找出 GKE 在叢集中安裝的驅動程式版本,請執行下列指令:
kubectl logs --selector=k8s-app=nvidia-gpu-device-plugin \
--container="nvidia-gpu-device-plugin" \
--tail=-1 \
--namespace=kube-system | grep Driver
輸出結果會與下列內容相似:
I1206 18:37:08.251742 5851 metrics.go:144] nvml initialized successfully. Driver version: 535.104.12
Autopilot 的 GPU 分配方式
為 Pod 中的容器要求 GPU 類型和數量,並部署 Pod 後,會發生以下情況:
- 如果沒有可分配的 GPU 節點,Autopilot 會佈建新的 GPU 節點來排定 Pod。Autopilot 會自動安裝 NVIDIA 驅動程式,以便使用硬體。
- Autopilot 會將節點汙染新增至 GPU 節點,並將對應的容許度新增至 Pod。這可防止 GKE 在 GPU 節點上排定其他 Pod。
Autopilot 會在每個 GPU 節點上放置一個 GPU Pod,以及在所有節點上執行的任何 GKE 管理工作負載,以及您設定為容許所有節點汙染的任何 DaemonSet。
在每個節點上執行 DaemonSet
您可能想在每個節點上執行 DaemonSet,即使是已套用汙點的節點也一樣。舉例來說,某些記錄和監控代理程式必須在叢集中的每個節點上執行。您可以將這些 DaemonSet 設為忽略節點汙點,讓 GKE 將這些工作負載放在每個節點上。
如要在叢集中的每個節點 (包括 GPU 節點) 上執行 DaemonSet,請在規格中加入下列容許度:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
將 IMAGE_PATH 替換為容器映像檔的路徑。
如要在叢集中的特定 GPU 節點上執行 DaemonSet,請在規格中新增下列項目:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
nodeSelector:
cloud.google.com/gke-accelerator: "GPU_TYPE"
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
將 GPU_TYPE 替換為目標節點中的 GPU 類型。可以是下列其中一項:
nvidia-gb200:NVIDIA GB200 (預先發布版)nvidia-b200:NVIDIA B200 (180 GB)nvidia-h200-141gb:NVIDIA H200 (141 GB)nvidia-h100-mega-80gb:NVIDIA H100 Mega (80 GB)nvidia-h100-80gb:NVIDIA H100 (80 GB)nvidia-a100-80gb:NVIDIA A100 (80GB)nvidia-tesla-a100:NVIDIA A100 (40GB)nvidia-rtx-pro-6000:NVIDIA RTX PRO 6000nvidia-l4:NVIDIA L4nvidia-tesla-t4:NVIDIA T4
nvidia-gb200:NVIDIA GB200 (預先發布版)nvidia-b200:NVIDIA B200 (180 GB) (預先發布版)nvidia-h200-141gb:NVIDIA H200 (141 GB) (預先發布版)nvidia-h100-mega-80gb:NVIDIA H100 Mega (80 GB)nvidia-h100-80gb:NVIDIA H100 (80 GB)nvidia-a100-80gb:NVIDIA A100 (80GB)nvidia-tesla-a100:NVIDIA A100 (40 GB)nvidia-rtx-pro-6000:NVIDIA RTX PRO 6000 (預先發布版) (但 GPU 數量少於 1 個的 G4 機型除外)nvidia-l4:NVIDIA L4nvidia-tesla-t4:NVIDIA T4
Autopilot 中的 GPU 用途
您可以將 GPU 分配給 Autopilot Pod 中的容器,以利執行下列工作負載:
- 機器學習 (ML) 推論
- 機器學習訓練
- 算繪
支援的 GPU 數量
在 Pod 規格中要求使用 GPU 時,請務必根據 GPU 類型使用下列數量。如果您要求的 GPU 數量不支援該類型,Autopilot 會拒絕您的 Pod。
| GPU 數量 | |
|---|---|
NVIDIA B200 (180GB)nvidia-b200 |
8 |
NVIDIA H200 (141GB)nvidia-h200-141gb |
8 |
NVIDIA H100 Mega (80GB)nvidia-h100-mega-80gb |
8 |
NVIDIA H100 (80GB)nvidia-h100-80gb |
1、2、4、8 |
NVIDIA A100 (80GB)nvidia-a100-80gb |
1、2、4、8 |
NVIDIA A100 (40GB)nvidia-tesla-a100 |
1、2、4、8、16 |
NVIDIA RTX PRO 6000nvidia-rtx-pro-6000 |
1/8、1/4、1/2、1、2、4、8 |
NVIDIA L4nvidia-l4 |
1、2、4、8 |
NVIDIA T4nvidia-tesla-t4 |
1、2、4 |
監控 GPU 節點工作負載效能
如果 GKE 叢集已啟用系統指標,您就能在 Cloud Monitoring 中查看下列指標,監控 GPU 工作負載效能:
-
工作週期 (
container/accelerator/duty_cycle): 前一個取樣期間 (10 秒) 內,加速器積極處理作業的時間百分比。介於 1 到 100 之間。 -
記憶體用量 (
container/accelerator/memory_used): 以位元組為單位分配的加速器記憶體量。 -
記憶體容量 (
container/accelerator/memory_total): 加速器記憶體總量,以位元組為單位。
這些指標適用於容器層級 (container/accelerator),且不會針對使用 GPU 分時或 NVIDIA MPS 的 GPU 上排定的容器收集。
您可以使用預先定義的資訊主頁,監控含有 GPU 節點的叢集。詳情請參閱「 查看可觀測性指標」。如要瞭解如何監控叢集和叢集資源,請參閱「GKE 的觀測能力」。
查看工作負載的用量指標
您可以在 Google Cloud 控制台的「Workloads」(工作負載)資訊主頁中,查看工作負載的 GPU 用量指標。
如要查看工作負載的 GPU 用量,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面。
前往「Workloads」(工作負載) - 選取工作負載。
「工作負載」資訊主頁會顯示 GPU 記憶體用量、容量和 GPU 工作週期的圖表。
查看 NVIDIA Data Center GPU Manager (DCGM) 指標
您可以使用 Google Cloud Managed Service for Prometheus 收集及視覺化呈現 NVIDIA DCGM 指標。如果是 Autopilot 叢集,GKE 會安裝驅動程式。如果是 Standard 叢集,您必須安裝 NVIDIA 驅動程式。
如要瞭解如何部署 GKE 代管的 DCGM 套件,請參閱「收集及查看 NVIDIA 資料中心 GPU Manager (DCGM) 指標」。
GPU 工作負載的 JobSet 和節點健康狀態指標
除了 DCGM 指標,您還可以使用下列指標監控 GPU 工作負載的健康狀態和效能,尤其是以 JobSet 形式執行的工作負載。
JobSet 指標
下列指標適用於具有單一複製工作的 GPU 和 TPU JobSet:
kubernetes.io/jobset/times_between_interruptionskubernetes.io/jobset/times_to_recoverkubernetes.io/jobset/uptime
如要進一步瞭解這些系統指標,請參閱「Kubernetes 指標」。
您也可以在 Google Cloud 控制台使用 JobSet 資訊主頁,以視覺化方式呈現及監控 GPU 工作負載:
節點健康指標
下列節點層級指標適用於所有節點,包括具有 GPU 的節點:
-
kubernetes.io/node/status_condition:這項指標需要 GKE 1.32.1-gke.1357001 以上版本。
節點中斷和節點集區中斷指標也適用於非 TPU 節點。
JobSet 的 Kube-state-metrics
JobSet 的 kube-state-metrics 可與 GPU 搭配使用。如要收集這些指標,必須使用 GKE 1.32.1-gke.1357001 以上版本。詳情請參閱 JobSet 指標說明文件。
後續步驟
- 進一步瞭解 GKE 的 GPU 支援。
- 瞭解如何針對特定用途最佳化 Autopilot ComputeClass。
- 瞭解如何使用 Dynamic Workload Scheduler 部署 GPU,以處理批次工作負載。
- 瞭解如何使用 GKE Sandbox 對 GPU 工作負載進行沙箱處理