本頁面說明如何在 Google Kubernetes Engine (GKE) Standard 叢集的節點中,附加及使用 NVIDIA® 圖形處理器 (GPU) 硬體加速器,執行及最佳化運算密集型工作負載,例如人工智慧 (AI) 和圖形處理。如果改用 Autopilot Pod,請參閱「在 Autopilot 中部署 GPU 工作負載」。
如要部署搭載 NVIDIA B200 或 NVIDIA H200 141GB GPU 的叢集,請參閱下列資源:
- 如要建立 GKE 叢集,請參閱「使用預設設定建立 AI 最佳化 Google Kubernetes Engine 叢集」。
- 如要建立 Slurm 叢集,請參閱「建立 AI 適用的 Slurm 叢集」。
總覽
透過 GKE,您可以建立搭載 GPU 的節點集區。GPU 提供的運算能力可驅動深度學習工作,如影像辨識、自然語言處理,以及其他須耗用大量運算資源的工作,如影片轉碼和影像處理。在 GKE Standard 模式中,您可以將 GPU 硬體附加至叢集中的節點,然後將 GPU 資源分配給在這些節點上執行的容器化工作負載。
如要進一步瞭解 GPU 的用途,請參閱 Google Cloud的 GPU 頁面。如要進一步瞭解 GKE 中的 GPU,以及 Standard 模式和 Autopilot 模式之間的差異,請參閱「關於 GKE 中的 GPU」。
如果您的工作負載能夠容忍節點經常發生中斷的情形,也可以將 GPU 搭配 Spot VM 一起使用。使用 Spot VM 可降低執行 GPU 的費用。詳情請參閱「搭配使用 Spot VM 與 GPU 節點集區」。
自 1.29.2-gke.1108000 版起,您可以在 GKE Sandbox 上建立 GPU 節點集區。詳情請參閱「GKE Sandbox」和「GKE Sandbox 設定」。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
GKE 上的 GPU 需求
GKE 上的 GPU 必須符合下列條件:
Kubernetes 版本:可用版本取決於 GPU 使用的節點映像檔:
- Container-Optimized OS:GKE 1.9 版以上。
- Ubuntu:GKE 1.11.3 以上版本。
GPU 配額:您必須在所選區域中擁有 Compute Engine GPU 配額,才能建立 GPU 節點。如要確保專案有足夠的 GPU 配額,請參閱 Google Cloud 控制台的「配額」頁面。
如果需要更多 GPU 配額,請在 Google Cloud 控制台中要求 GPU 配額。如果您已建立帳單帳戶,提交配額要求後,專案應會自動獲得配額。
根據預設,免費試用帳戶不會獲得 GPU 配額。
NVIDIA GPU 驅動程式:建立叢集或節點集區時,您可以指示 GKE 根據 GKE 版本自動安裝驅動程式版本。如果未指示 GKE 自動安裝 GPU 驅動程式,您必須 手動安裝驅動程式。
A100 GPU:A100 GPU 僅支援 a2 機器類型。您必須確保基礎 A2 機器類型的配額足夠,才能使用 A100 GPU。
Ubuntu 節點上的 GPU:如果您在 Ubuntu 節點上使用 GPU,必須符合下列驅動程式需求:
L4 GPU 和 H100 GPU:NVIDIA 驅動程式 535 以上版本。
H200 GPU:NVIDIA 驅動程式 550 以上版本。
B200 GPU:NVIDIA 驅動程式 570 以上版本。
如果必要或更新版本的驅動程式不是 GKE 版本的預設版本,您必須在節點上手動安裝支援的驅動程式。
GPU 節點請使用 Container-Optimized OS。Container-Optimized OS 內含必要驅動程式,可支援特定 GKE 版本的 GPU 節點。
在 GKE 上使用 GPU 的限制
在 GKE 上使用 GPU 時,請注意下列限制:
- 無法將 GPU 新增至現有的節點集區。
- 無法在維護事件期間即時遷移 GPU 節點。
可使用的 GPU 類型取決於機器系列,如下所示:
- A4X 系列機器:GB200 GPU。
- A4 系列機器:B200 GPU。
- A3 系列機器:H200 GPU (A3 Ultra) 和 H100 GPU (A3 Mega、High、Edge)。
- A2 系列機器:A100 GPU。
- G2 系列機型:L4 GPU。
- N1 機器系列:A100 和 L4 以外的所有 GPU。
請確認專案中,與所選 GPU 類型和數量對應的機器系列有足夠配額。
Windows Server 節點集區不支援 GPU。
執行 1.28.2-gke.1098000 以下版本的 GKE Standard 叢集,不支援節點自動佈建,因此無法建立搭載 L4 GPU 的節點集區。不過,執行舊版 Kubernetes 的叢集支援叢集自動配置器調度現有節點集區的資源。
各區域和可用區的 GPU 可用性
GPU 僅於特定地區和區域提供。當您要求 GPU 配額時,請考量要執行叢集的地區。
如需適用地區和區域的完整清單,請參閱 Compute Engine 上的 GPU。
您也可以使用 Google Cloud CLI 查看區域中的可用 GPU。如要查看每個區域支援的所有 GPU 加速器類型清單,請執行下列指令:
gcloud compute accelerator-types list
定價
如需 GPU 定價資訊,請參考 Google Cloud GPU 頁面的定價表。
確保 GPU 配額充足
GPU 配額是指可在 Google Cloud 專案中執行的 GPU 總數。 如要建立具有 GPU 的叢集,您的專案必須擁有足夠的 GPU 配額。
您的 GPU 配額至少應與您要在叢集中執行的 GPU 總數相同。如果您啟用了叢集自動調度資源功能,則要求的 GPU 配額至少要等於每個節點的 GPU 數量乘以叢集的節點數上限。
舉例來說,如果您建立的叢集中有三個節點,每個節點執行兩個 GPU,則您的專案需要至少六個 GPU 配額。
要求 GPU 配額
如要申請 GPU 配額,請使用 Google Cloud 控制台。如要進一步瞭解如何要求配額,請參閱 Compute Engine 說明文件中的「GPU 配額」。
如要搜尋 GPU 配額並提交配額要求,請使用 Google Cloud 控制台:
在 Google Cloud 控制台中,前往「IAM & Admin」(IAM 與管理) 的「配額」頁面。
在「篩選器」方塊中,執行下列操作:
- 選取「配額」屬性,輸入 GPU 模型名稱,然後按下 Enter 鍵。
- (選用) 如要套用更進階的篩選器來縮小結果範圍,請選取「維度」(例如位置) 屬性,新增您使用的區域或專區名稱,然後按下 Enter 鍵。
從 GPU 配額清單中,選取要變更的配額。
按一下 [Edit Quotas] (編輯配額)。系統隨即會開啟申請表單。
填寫每個配額要求的 [New quota limit] (新增配額限制) 欄位。
在 [Request description] (要求說明) 欄位中填入要求的詳細資料。
點選「下一步」。
在「Override confirmation」對話方塊中,按一下「Confirm」。
在「聯絡資訊」畫面中,輸入您的姓名和電話號碼,核准者可能會使用這些資訊完成配額變更要求。
按一下 [提交要求]。
你會收到確認電子郵件,可追蹤配額變更。
在 GKE Standard 叢集中執行 GPU
如要在 GKE Standard 叢集中執行 GPU,請建立附加 GPU 的節點集區。
如要提升 GKE 上 GPU 的成本效益、穩定性和可用性,請採取下列行動:
- 建立個別的 GPU 節點集區。針對每個節點集區,將節點位置限制在提供所需 GPU 的區域。
- 在每個節點集區中啟用自動調度資源功能。
- 使用區域叢集,在區域的各個可用區中複製 Kubernetes 控制層,藉此提高可用性。
- 將 GKE 設定為在節點集區中自動安裝預設或最新 GPU 驅動程式,這樣就不必手動安裝及管理驅動程式版本。
如以下章節所述,GKE 會使用節點 taint 和容許條件,確保 Pod 不會排程到不合適的節點上。
為 GPU 節點集區設定 taint,避免不當排程
節點 taint 可讓您標示節點,避免或防止排程器在特定 Pod 使用此節點。根據下列情境,GKE 會自動新增汙點,您也可以手動新增:
將 GPU 節點集區新增至現有執行非 GPU 節點集區的叢集時,GKE 會自動使用下列節點 taint 來設定 GPU 節點 taint:
- 鍵:
nvidia.com/gpu
- 效果:
NoSchedule
只有在叢集中至少有一個非 GPU 節點集區時,GKE 才會新增這個 taint。
- 鍵:
如果將 GPU 節點集區新增至只有 GPU 節點集區的叢集,或是建立預設節點集區已附加 GPU 的新叢集,您可以手動為新節點集區設定 taint,並使用下列值:
- 鍵:
nvidia.com/gpu
- 效果:
NoSchedule
- 鍵:
日後在叢集中新增非 GPU 節點集區時,GKE 不會追溯將此 taint 套用至現有 GPU 節點。您需要手動為新節點集區設定汙點。
使用容許度自動限制排程
容許條件可讓您指定可在「taint」節點上使用的 Pod。GKE 會自動套用容許條件,因此只有要求 GPU 的 Pod 會排程至 GPU 節點。這樣一來,如果要求 GPU 的 Pod 數不足,GPU 節點可快速縮減,進而提高自動調度資源的效率。為此,GKE 會執行 ExtendedResourceToleration 許可控制器。
建立 GPU 節點集區
如要在現有叢集中建立獨立的 GPU 節點集區,可以使用Google Cloud 控制台或 Google Cloud CLI。您也可以使用 Terraform 佈建 GKE 叢集和 GPU 節點集區。
在下列情況下,GKE 支援自動安裝 NVIDIA 驅動程式:
- 對於控制層版本為 1.32.2-gke.1297000 以上的 GKE 叢集,GKE 會自動為所有 GPU 節點安裝預設的 NVIDIA 驅動程式版本,包括透過節點自動佈建建立的節點。
- 對於控制層版本為 1.30.1-gke.1156000 至 1.32.2-gke.1297000 的 GKE 叢集,GKE 會自動為未使用節點自動佈建功能建立的節點安裝預設的 NVIDIA 驅動程式版本。
- 您可以選擇最新的可用驅動程式版本,也可以明確停用自動安裝驅動程式。在 1.30.1-gke.1156000 之前的版本中,如果您在建立或更新節點集區時未指定驅動程式版本,GKE 預設不會安裝驅動程式。
gcloud
如要在叢集中建立具有 GPU 的節點集區,請執行下列指令:
gcloud container node-pools create POOL_NAME \
--accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
--machine-type MACHINE_TYPE \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1[,COMPUTE_ZONE2] \
[--sandbox=type=gvisor]
[--enable-autoscaling \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES] \
[--scopes=SCOPES] \
[--service-account=SERVICE_ACCOUNT] \
[--reservation-affinity=specific --reservation=RESERVATION_NAME]
更改下列內容:
POOL_NAME
:您為節點集區選擇的名稱。GPU_TYPE
:您使用的 GPU 加速器類型。例如:nvidia-tesla-t4
。AMOUNT
:要附加至節點集區中節點的 GPU 數量。DRIVER_VERSION
:要安裝的 NVIDIA 驅動程式版本。可以是下列任一值:default
:為節點的 GKE 版本安裝預設驅動程式版本。在 GKE 1.30.1-gke.1156000 以上版本中,如果您省略gpu-driver-version
旗標,系統會預設使用這個選項。在舊版中,如果您省略這個旗標,GKE 就不會安裝驅動程式。latest
:為 GKE 版本安裝最新可用的驅動程式版本。僅適用於使用 Container-Optimized OS 的節點。disabled
:略過自動安裝驅動程式。建立節點集區後,您必須 手動安裝驅動程式。在 1.30.1-gke.1156000 之前的 GKE 版本中,這是預設選項。
gpu-driver-version
選項僅適用於 GKE 1.27.2-gke.1200 以上版本。在舊版中,請省略這個旗標,並在建立節點集區後手動安裝驅動程式。如果您將現有叢集或節點集區升級至這個版本或更新版本,GKE 會自動安裝與 GKE 版本對應的預設驅動程式版本,除非您在開始升級時另行指定。MACHINE_TYPE
:節點的 Compute Engine 機器類型。下列 GPU 類型必須搭配加速器:- NVIDIA B200 GPU (對應於
nvidia-b200
加速器類型和 A4 機器系列) - NVIDIA H200 141 GB GPU (對應於
nvidia-h200-141gb
加速器類型和 A3 Ultra 機型)、NVIDIA H100 80 GB GPU (對應於nvidia-h100-80gb
加速器類型和 A3 High 機型),或 NVIDIA H100 80 GB Mega GPU (對應於nvidia-h100-mega-80gb
加速器類型和 A3 Mega 機型)。詳情請參閱 Compute Engine 說明文件中的 A3 機器系列。 - NVIDIA A100 40 GB GPU (對應於
nvidia-tesla-a100
加速器類型和 A2 Standard 機器類型),或 NVIDIA A100 80GB GPU (對應於nvidia-a100-80gb
加速器類型和 A2 Ultra 機器類型)。詳情請參閱 Compute Engine 說明文件中的 A2 機器系列。 - NVIDIA L4 GPU (對應於
nvidia-l4
加速器類型和 G2 機器系列)。
對於所有其他 GPU,這個標記是選用的。
- NVIDIA B200 GPU (對應於
CLUSTER_NAME
:要建立節點集區的叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。COMPUTE_ZONE1,COMPUTE_ZONE2,[...]
:GKE 建立 GPU 節點的特定區域。區域必須與叢集位於相同區域,並由--location
旗標指定。您定義的 GPU 類型必須在每個所選區域適用。如果您使用預留資源,必須指定預留資源有容量的區域。建議您在建立節點集區時,一律使用--node-locations
旗標指定包含所要求 GPU 的區域。您也可以選擇建立節點集區,使用 gVisor 執行沙箱化工作負載。詳情請參閱 GKE Sandbox。
MIN_NODES
:節點集區中每個區域的節點數量下限。只有在使用--enable-autoscaling
標記時,這個值才具有意義。MAX_NODES
:節點集區中每個區域的節點數量上限。只有在使用--enable-autoscaling
標記時,這個值才具有意義。或者,您也可以附加下列標記,使用自訂服務帳戶建立 GPU 節點集區。如果省略,節點集區會使用 Compute Engine 預設服務帳戶:
SERVICE_ACCOUNT
:節點使用的 IAM 服務帳戶名稱。SCOPES
:以半形逗號分隔的清單,列出要授予的存取範圍。確認其中一個範圍是storage-ro
或https://www.googleapis.com/auth/devstorage.read_only
。如要進一步瞭解範圍,請參閱「設定存取權範圍」。如果省略 scope 旗標,系統會顯示 AccessDenied 錯誤,導致 GPU 節點集區建立作業失敗,並顯示「failed to download gpu_driver_versions.bin from GCS bucket」。
RESERVATION_NAME
:要使用的 GPU 預留項目名稱。使用--reservation
旗標搭配--reservation-affinity=specific
,即可使用特定預留容量的 GPU 容量。詳情請參閱「使用特定單一專案預留資源」。
舉例來說,下列指令會在區域叢集 p100-cluster
中,建立高可用性的自動調度資源節點集區 p100
,每個節點有兩個 P100 GPU。GKE 會在這些節點上自動安裝預設驅動程式。
gcloud container node-pools create p100 \
--accelerator type=nvidia-tesla-p100,count=2,gpu-driver-version=default \
--cluster p100-cluster \
--location us-central1 \
--node-locations us-central1-c \
--min-nodes 0 --max-nodes 5 --enable-autoscaling
控制台
如要建立具有 GPU 的節點集區,請執行下列步驟:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下 add_box「Add Node Pool」(新增節點集區)。
(選用) 在「節點集區詳細資料」頁面,勾選「啟用自動調度資源」核取方塊。
視需要設定節點集區。
在導覽窗格中選取「節點」。
在「Machine configuration」(機器設定) 下,按一下「GPU」。
選取要在每個節點上執行的 GPU 類型和 GPU 數量。
詳閱警告訊息,然後選取「我瞭解上述限制」。
在「GPU 驅動程式安裝」部分,選取下列其中一種方法:
- Google 管理:GKE 會自動安裝驅動程式。
選取這個選項後,請從「版本」下拉式選單中選擇下列其中一個選項:
- 預設:安裝預設的驅動程式版本。
- 最新:安裝最新版驅動程式。
- 客戶管理:GKE 不會安裝驅動程式。您必須按照「安裝 NVIDIA GPU 裝置驅動程式」一文中的說明,手動安裝相容的驅動程式。
- Google 管理:GKE 會自動安裝驅動程式。
選取這個選項後,請從「版本」下拉式選單中選擇下列其中一個選項:
點選「建立」。
Terraform
您可以使用 Terraform 模組,透過 Terraform 建立具有 GPU 的地區叢集。
在
variables.tf
檔案中加入下列區塊,設定 Terraform 變數:variable "project_id" { default = PROJECT_ID description = "the gcp_name_short project where GKE creates the cluster" } variable "region" { default = CLUSTER_REGION description = "the gcp_name_short region where GKE creates the cluster" } variable "zone" { default = "COMPUTE_ZONE1,COMPUTE_ZONE2" description = "the GPU nodes zone" } variable "cluster_name" { default = "CLUSTER_NAME" description = "the name of the cluster" } variable "gpu_type" { default = "GPU_TYPE" description = "the GPU accelerator type" } variable "gpu_driver_version" { default = "DRIVER_VERSION" description = "the NVIDIA driver version to install" } variable "machine_type" { default = "MACHINE_TYPE" description = "The Compute Engine machine type for the VM" }
更改下列內容:
PROJECT_ID
:您的專案 ID。CLUSTER_NAME
:GKE 叢集的名稱。CLUSTER_REGION
:叢集的運算區域。COMPUTE_ZONE1,COMPUTE_ZONE2,[...]
: GKE 建立 GPU 節點的特定區域。 可用區必須位於region
變數指定的相同區域。這些區域必須提供您定義的 GPU 類型。如要瞭解哪些區域具有 GPU,請參閱可用性。建立 GPU 節點集區時,您應使用node_locations
變數指定包含所要求 GPU 的區域。GPU_TYPE
:您使用的 GPU 加速器類型。例如:nvidia-tesla-t4
。DRIVER_VERSION
:GKE 自動安裝的 GPU 驅動程式版本。這是選填欄位。 支援的值如下:INSTALLATION_DISABLED
:停用自動安裝 GPU 驅動程式。 您必須 手動安裝驅動程式,才能執行 GPU。在 1.30.1-gke.1156000 之前的 GKE 版本中,如果您省略這個欄位,系統會預設使用這個選項。DEFAULT
:自動安裝節點作業系統版本的預設驅動程式版本。在 GKE 1.30.1-gke.1156000 以上版本中,如果省略這個欄位,系統會預設使用這個選項。在舊版中,如果您省略這個欄位,GKE 就不會安裝驅動程式。LATEST
:自動為節點作業系統版本安裝最新可用驅動程式版本。僅適用於使用 Container-Optimized OS 的節點。
如果省略這個欄位,GKE 就不會自動安裝驅動程式。使用節點自動佈建功能的節點集區不支援這個欄位。如要手動安裝驅動程式,請參閱本文的「手動安裝 NVIDIA GPU 驅動程式」一節。
MACHINE_TYPE
:節點的 Compute Engine 機器類型。下列 GPU 類型必須搭配加速器:- NVIDIA B200 GPU (對應
nvidia-b200
加速器類型和 A4 系列機器) - NVIDIA H200 141 GB GPU (對應於
nvidia-h200-141gb
加速器類型和 A3 Ultra 機型)、NVIDIA H100 80 GB GPU (對應於nvidia-h100-80gb
加速器類型和 A3 High 機型),或 NVIDIA H100 80 GB Mega GPU (對應於nvidia-h100-mega-80gb
加速器類型和 A3 Mega 機型)。詳情請參閱 Compute Engine 說明文件中的 A3 機器系列。 - NVIDIA A100 40 GB GPU (對應於
nvidia-tesla-a100
加速器類型和 A2 Standard 機器類型),或 NVIDIA A100 80GB GPU (對應於nvidia-a100-80gb
加速器類型和 A2 Ultra 機器類型)。詳情請參閱 Compute Engine 說明文件中的 A2 機器系列。 - NVIDIA L4 GPU (對應於
nvidia-l4
加速器類型和 G2 機器系列)。
對於所有其他 GPU,這個標記是選用的。
- NVIDIA B200 GPU (對應
在 Terraform 設定中新增下列區塊:
provider "google" { project = var.project_id region = var.region } resource "google_container_cluster" "ml_cluster" { name = var.cluster_name location = var.region node_locations = [var.zone] } resource "google_container_node_pool" "gpu_pool" { name = google_container_cluster.ml_cluster.name location = var.region cluster = google_container_cluster.ml_cluster.name node_count = 3 autoscaling { total_min_node_count = "1" total_max_node_count = "5" } management { auto_repair = "true" auto_upgrade = "true" } node_config { oauth_scopes = [ "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/trace.append", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", ] labels = { env = var.project_id } guest_accelerator { type = var.gpu_type count = 1 gpu_driver_installation_config { gpu_driver_version = var.gpu_driver_version } } image_type = "cos_containerd" machine_type = var.machine_type tags = ["gke-node", "${var.project_id}-gke"] disk_size_gb = "30" disk_type = "pd-standard" metadata = { disable-legacy-endpoints = "true" } } }
Terraform 會呼叫 Google Cloud API,建立具有使用 GPU 的節點集區的新叢集。節點集區一開始有三個節點,且已啟用自動調度資源功能。如要進一步瞭解 Terraform,請參閱 terraform.io 上的google_container_node_pool
資源規格。
為避免產生額外費用,請使用 terraform destroy
指令移除設定檔中定義的所有資源。
最佳做法:
您也可以使用 --node-locations
標記建立具有 GPU 的新叢集,並指定區域。不過,我們建議您在現有叢集中建立獨立的 GPU 節點集區,如本節所示。
手動安裝 NVIDIA GPU 驅動程式
您可以將安裝 DaemonSet 部署至節點,在節點上手動安裝 NVIDIA GPU 驅動程式。在下列情況下,請使用手動安裝:
- 建立 GPU 節點集區時,您選擇停用自動安裝裝置驅動程式的功能。
- 您使用的 GKE 版本低於自動安裝的最低支援版本。
- 工作負載需要特定 NVIDIA 驅動程式版本,但自動安裝的預設或最新驅動程式不符合需求。例如,搭配機密 GKE 節點 (預先發布版) 使用 GPU。
盡可能使用自動安裝驅動程式。
如要這麼做,請在建立標準叢集時,於 --accelerator
旗標中指定 gpu-driver-version
選項。如果您在 2023 年 1 月 25 日當天或之前,使用安裝 DaemonSet 手動安裝 GPU 驅動程式,可能需要重新套用 DaemonSet,才能取得忽略使用自動驅動程式安裝功能的節點版本。
如要執行安裝作業 DaemonSet,GPU 節點集區必須具備與 Cloud Storage 通訊的 https://www.googleapis.com/auth/devstorage.read_only
範圍。如果沒有這個範圍,安裝 DaemonSet 資訊清單的下載作業就會失敗。
這個範圍是預設範圍之一,通常會在您建立叢集時新增。
以下說明如何使用 Terraform 在 Container-Optimized OS (COS) 和 Ubuntu 節點上安裝驅動程式。
COS
如要部署 DaemonSet 安裝作業並安裝預設 GPU 驅動程式版本,請執行下列指令:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
如要從本節的驅動程式版本表安裝較新的 GPU 驅動程式版本,請執行下列指令:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded-latest.yaml
如要安裝支援在 GKE 機密節點上執行 GPU 工作負載 (搶先版) 的 GPU 驅動程式版本,請執行下列指令:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nvidia-driver-installer/cos/daemonset-confidential.yaml
安裝工作需要幾分鐘才會完成。安裝完成後,NVIDIA GPU 裝置外掛程式會使用 Kubernetes API 提供 NVIDIA GPU 運算容量。
每個 Container-Optimized OS 版本都至少支援一個 NVIDIA GPU 驅動程式版本。如要進一步瞭解預設支援的驅動程式版本,請參閱 Container-Optimized OS LTS 里程碑的版本資訊。
下表列出各 GKE 版本可用的驅動程式版本:
GKE NVIDIA 驅動程式版本 | |
---|---|
1.30 | R535 (預設) 或 R550 |
1.29 | R535 (預設) 或 R550 |
1.28 | R535 (預設) 或 R550 |
1.27 | R470 (預設)、R525、R535 或 R550 |
1.26 | R470 (預設)、R525、R535 或 R550 |
Ubuntu
您部署的安裝 DaemonSet 取決於 GPU 類型和 GKE 節點版本,如下所示:
如要使用 NVIDIA H200 GPU 以外的所有 GPU,請執行下列指令:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml
如要使用 NVIDIA H200 GPU,請安裝
R550
驅動程式:kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R550.yaml
安裝工作需要幾分鐘才會完成。安裝完成後,NVIDIA GPU 裝置外掛程式會使用 Kubernetes API 提供 NVIDIA GPU 運算容量。
下表列出各 GKE 版本可用的驅動程式版本:
Ubuntu GPU 驅動程式和 GKE 版本 | ||
---|---|---|
1.30 | R470 或 R535 | |
1.29 | R470 或 R535 | |
1.28 | R470 或 R535 | |
1.27 | R470 或 R535 | |
1.26 | R470 或 R535 |
Terraform
您可以根據節點類型,使用 Terraform 安裝預設的 GPU 驅動程式版本。無論是哪一種情況,您都必須設定 kubectl_manifest
Terraform 資源類型。
如要在 COS 上安裝 DaemonSet,請在 Terraform 設定中新增下列區塊:
data "http" "nvidia_driver_installer_manifest" { url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml" } resource "kubectl_manifest" "nvidia_driver_installer" { yaml_body = data.http.nvidia_driver_installer_manifest.body }
如要在 Ubuntu 上安裝 DaemonSet,請在 Terraform 設定中新增下列區塊:
data "http" "nvidia_driver_installer_manifest" { url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml" } resource "kubectl_manifest" "nvidia_driver_installer" { yaml_body = data.http.nvidia_driver_installer_manifest.body }
使用節點自動佈建功能搭配 GPU 安裝驅動程式
將節點自動佈建搭配 GPU 一起使用時,根據預設,自動佈建的節點集區沒有足夠的範圍來安裝驅動程式。如要授予必要範圍,請修改節點自動佈建的預設範圍,加入 logging.write
、monitoring
、devstorage.read_only
和 compute
,如下列範例所示。
gcloud container clusters update CLUSTER_NAME --enable-autoprovisioning \
--min-cpu=1 --max-cpu=10 --min-memory=1 --max-memory=32 \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/compute
對於執行 GKE 1.32.2-gke.1297000 以上版本的叢集,GKE 會自動為所有 GPU 節點安裝預設的 NVIDIA 驅動程式版本,包括透過節點自動佈建建立的節點。如果叢集執行的是 GKE 1.32.2-gke.1297000 以上版本,可以略過下列操作說明。
在 GKE 1.29.2-gke.1108000 以上版本中,您可以選取 GPU 驅動程式版本,讓 GKE 自動在自動佈建的 GPU 節點中安裝。在資訊清單中新增下列欄位:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
將 DRIVER_VERSION
替換為下列任一值:
default
:節點 GKE 版本的預設穩定版驅動程式。latest
:節點 GKE 版本的最新可用驅動程式版本。disabled
:停用自動安裝 GPU 驅動程式。選取這個值後,您必須手動安裝驅動程式,才能執行 GPU。在 1.32.2-gke.1297000 之前的 GKE 版本中,如果省略節點選取器,這就是預設選項。
如要進一步瞭解自動佈建功能,請參閱「使用節點自動佈建功能」。
設定 Pod 以使用 GPU
您可以使用資源限制來設定 Pod 以使用 GPU。您可以使用下列鍵/值組合在 Pod 規格中指定資源限制
- 鍵:
nvidia.com/gpu
- 值:要使用的 GPU 數量
alpha.kubernetes.io/nvidia-gpu
不支援做為 GKE 中的資源名稱。請改用 nvidia.com/gpu
做為資源名稱。
下列資訊清單是使用 GPU 的 Pod 規格範例:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
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: 2
使用多種 GPU 類型
如果您要每個叢集都使用多個 GPU 加速器類型,則必須建立多個節點集區,讓每個節點集區都有自己的加速器類型。 GKE 會將專屬的叢集選取器附加至 GPU 節點,以將 GPU 工作負載放置到具有特定 GPU 類型的節點上:
- 鍵:
cloud.google.com/gke-accelerator
- 值:您使用的 GPU 加速器類型。
例如:
nvidia-tesla-t4
。
將這個節點選取器新增至工作負載 Pod 規格後,您可以指定特定的 GPU 類型。例如:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
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: 2
nodeSelector:
cloud.google.com/gke-accelerator: nvidia-tesla-t4
使用加速器 (GPU 和 TPU) 升級節點集區
GKE 會自動升級標準叢集,包括節點集區。如要讓節點更快升級至較新版本,也可以手動升級節點集區。如要控管叢集的升級方式,請使用發布版本、維護期間和排除時段,以及推出順序。
您也可以為節點集區設定節點升級策略,例如節點數擴充升級、藍綠升級或短期升級。設定這些策略後,即可確保節點集區升級時,能兼顧速度和環境中斷情形,達到最佳平衡。如果是多主機 TPU 配量節點集區,GKE 會在單一步驟中,以不可分割的方式重新建立整個節點集區,而不是使用已設定的節點升級策略。詳情請參閱「GKE 中的 TPU 相關術語」一文中的「原子性」定義。
使用節點升級策略時,GKE 必須暫時佈建額外資源 (視設定而定)。如果 Google Cloud節點集區的資源容量有限 (例如,嘗試使用 GPU 或 TPU 建立更多節點時,看到資源可用性錯誤),請參閱「在資源受限的環境中升級」。
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 裝置驅動程式的位置。
監控 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 節點的正常終止程序
在控制層執行 1.29.1-gke.1425000 以上版本的 GKE 叢集中,GPU 節點支援 SIGTERM
訊號,可提醒節點即將關機。在 GPU 節點中,即將關機的通知最多可設定 60 分鐘。
如要設定 GKE 在這段通知時間內正常終止工作負載,請按照「管理 GPU 和 TPU 的 GKE 節點中斷」一文中的步驟操作。
後續步驟
- 進一步瞭解節點集區。
- 瞭解如何為節點使用最低 CPU 平台。
- 瞭解如何使用 Docker 建立及設定本機深度學習容器。
- 瞭解如何在 GPU 節點集區中使用機密 GKE 節點 (預先發布版)。
- 瞭解如何使用 GKE Sandbox 將 GPU 工作負載放入沙箱