关于 Google Kubernetes Engine (GKE) 中的 GPU


本页面可帮助您考虑在 Google Kubernetes Engine (GKE) 中请求 GPU 的选项,包括:

在 GKE 中,请求 GPU 硬件的方式取决于您是使用 Autopilot 模式还是标准模式。在 Autopilot 中,通过在工作负载中指定 GPU 资源来请求 GPU 硬件。在 GKE Standard 模式下,您可以将 GPU 硬件挂接到集群中的节点,然后将 GPU 资源分配给在这些节点上运行的容器化工作负载。 如需详细了解如何在工作负载中挂接和使用 GPU,请参阅在 Autopilot 上部署 GPU 工作负载在 Standard 节点池上运行 GPU

可在 GKE 中使用的 GPU 硬件是适用于计算工作负载的 Compute Engine GPU 的子集。可用的特定硬件取决于集群的 Compute Engine 区域或可用区。如需了解具体可用性,请参阅 GPU 区域和可用区

GKE 提供了一些特定于 GPU 的功能,以提高节点上运行的工作负载的 GPU 资源利用效率,包括分时 GPU、多实例 GPU 和带有 NVIDIA MPS 的多实例 GPU。

规划 GPU 配额

您的 GPU 配额是可在 Google Cloud 项目中运行的最大 GPU 数。如需在 GKE 集群中使用 GPU,您的项目必须具有足够的 GPU 配额。

您的 GPU 配额至少应该等于您打算在集群中运行的 GPU 的总数。如果您启用集群自动扩缩功能,则申请的 GPU 配额至少应该等于集群的最大节点数乘以每个节点的 GPU 数所得的值。

例如,如果您希望使用三个节点,每个节点有两个 GPU,则您的项目至少需要六个 GPU 配额。

如需申请更多 GPU 配额,请按照申请更高配额限制中的说明操作,并使用 gpus 作为指标。

选择使用 Autopilot 或 Standard 的 GPU 支持

GPU 在 Autopilot 和 Standard 集群中可用我们建议您使用 Autopilot 集群获得全托管式 Kubernetes 体验。在 Autopilot 中,GKE 管理驱动程序安装、节点扩缩、Pod 隔离和节点预配。

下表简要介绍了 Autopilot 与 Standard GPU 支持之间的区别:

说明 Autopilot Standard
申请 GPU 硬件 在工作负载中指定 GPU 资源。 将 GPU 硬件挂接到集群中的节点,然后将 GPU 资源分配给在这些节点上运行的容器化工作负载。
GPU 硬件可用性
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40GB
  • NVIDIA A100 80GB
  • NVIDIA H100 80GB
Compute Engine 支持的所有 GPU 类型
选择 GPU 您在工作负载规范中请求 GPU 数量和类型。默认情况下,Autopilot 会为该 GKE 版本安装默认驱动程序并管理您的节点。如需在 Autopilot 中选择特定的驱动程序版本,请参阅 为 Autopilot GPU Pod 选择 NVIDIA 驱动程序 您需要执行在 Standard 节点池上运行 GPU 中所述的步骤:
  1. 创建具有特定 GPU 类型和相应 Compute Engine 机器类型的节点池,然后选择要安装的驱动程序。
  2. 如果您未使用自动安装,请在节点上手动安装 GPU 驱动程序。
  3. 在 Pod 规范中请求 GPU 数量。
提高 GPU 利用率
安全 使用 GKE Sandbox 的 GPU 使用 GKE Sandbox 的 GPU
价格 Autopilot GPU Pod 价格 Compute Engine GPU 价格

如需选择最适合您的工作负载的 GKE 操作模式,请参阅选择 GKE 操作模式

通过 GKE 或 GKE 上的 NVIDIA GPU Operator 管理 GPU 栈

默认情况下,GKE 会管理 GPU 节点的整个生命周期,包括自动安装 GPU 驱动程序、使用 NVIDIA 数据中心 GPU 管理器 (DCGM) 监控 GKE 上的 GPU 工作负载,以及 GPU 共享策略。

我们建议您使用 GKE 管理 GPU 节点,因为 GKE 会完全管理 GPU 节点生命周期。如需开始使用 GKE 进行 GPU 节点管理,请选择以下任一选项:

在 Container-Optimized OS (COS) 和 Ubuntu 节点映像上,NVIDIA GPU Operator 可用作 GKE 上的全托管式 GPU 支持的替代方案。如果您希望在多个云服务提供商之间获得一致的体验,已经在使用 NVIDIA GPU Operator,或者使用依赖于 NVIDIA GPU Operator 的软件,请选择此选项。如需了解详情,请参阅使用 NVIDIA GPU Operator 管理 GPU 栈

如需为您的用例选择最合适的选项,请参阅下表,其中比较了在 GKE 上管理 GPU 节点的两种方法。

说明 使用 GKE 管理 GPU 节点 在 GKE 上使用 NVIDIA GPU Operator
管理 GPU 节点生命周期(安装、升级) 由 GKE 完全托管。 由用户管理。
驱动程序安装 自动安装和手动安装 GPU 驱动程序 手动安装 GPU 驱动程序。
节点选择器 cloud.google.com/gke-gpu=true nvidia.com/gpu=true
GPU 共享策略
  • 多进程服务:不受支持。
对 GPU 节点进行健康检查
  • 如果 GPU 可分配数量不等于容量且已启用自动修复功能,则在 15 分钟内触发节点修复
  • 默认监控所有错误代码。
  • 如果 GPU 可分配数量不等于容量且已启用自动修复功能,则会在 15 分钟内触发节点修复
指标和可观测性
  • 启用系统指标后,Cloud Monitoring 中会提供以下 GPU 指标:占空比、内存用量和内存容量。
  • GPU 运营商提供的自行管理 DCGM。
  • 即使启用了 GKE 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 设备上并发运行。

访问 NVIDIA CUDA-X 库以运行 CUDA 应用

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 工具包和兼容驱动程序版本

  • /usr/local/nvidia/lib64:NVIDIA 设备驱动程序的位置。
确保节点上运行的 GKE 补丁程序版本包含与您选择的 CUDA 版本兼容的 GPU 驱动程序版本。如需查看与 GKE 版本关联的 GPU 驱动程序版本列表,请参阅 GKE 当前版本表中链接的相应 Container-Optimized OS 页面。

在 Autopilot 集群中,GKE 管理驱动程序版本选择和安装。

监控 GPU 节点工作负载性能

如果您的 GKE 集群启用了系统指标,则 Cloud Monitoring 中提供以下指标来监控 GPU 工作负载的性能:

  • 工作周期 (container/accelerator/duty_cycle):加速器活跃处理的时间占过去的采样周期(10 秒)的百分比。介于 1 到 100 之间。
  • 内存用量 (container/accelerator/memory_used):已分配的加速器内存量(以字节为单位)。
  • 内存容量 (container/accelerator/memory_total):加速器内存总量(以字节为单位)。

您可以使用预定义的信息中心来监控具有 GPU 节点的集群。如需了解详情,请参阅查看可观测性指标。如需了解有关监控集群及其资源的一般信息,请参阅 GKE 可观测性

查看工作负载的用量指标

您可以在 Google Cloud 控制台的工作负载信息中心内查看工作负载 GPU 用量指标。

如需查看工作负载 GPU 用量,请执行以下步骤:

  1. 进入 Google Cloud 控制台中的工作负载页面。

    进入“工作负载”
  2. 选择工作负载。

“工作负载”信息中心会显示 GPU 内存用量和容量以及 GPU 工作周期的图表。

查看 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标

您可以使用 Google Cloud Managed Service for Prometheus 收集并直观呈现 NVIDIA DCGM 指标。对于 Autopilot 集群,GKE 会安装这些驱动程序。 对于 Standard 集群,您必须安装 NVIDIA 驱动程序。

如需了解如何部署 GKE 管理的 DCGM 软件包,请参阅收集和查看 NVIDIA Data Center GPU Manager (DCGM) 指标

处理由于节点维护而导致的中断

托管 GPU 的 GKE 节点受维护事件或其他可能导致节点关停的中断的影响。在控制平面运行 1.29.1-gke.1425000 及更高版本的 GKE 集群中,您可以将 GKE 配置为正常终止工作负载,从而减少对工作负载的中断。

如需了解、配置和监控运行 AI/ML 工作负载的 GKE 节点上可能发生的中断事件,请参阅管理 GPU 和 TPU 的 GKE 节点中断情况

后续步骤