本页面可帮助您考虑在 Google Kubernetes Engine (GKE) 中请求 GPU 的选项,包括:
- 为 GKE 工作负载选择 GPU 资源和效率功能
- 选择 GPU 配额,即可在项目中运行的 GPU 数量上限
- 决定使用 Autopilot 模式还是 Standard 模式
- 通过 GKE 或 GKE 上的 NVIDIA GPU Operator 管理 GPU 栈
- 选择功能以减少未充分利用的 GPU 资源的数量
- 访问 CUDA 应用的 NVIDIA CUDA-X 库
- 监控 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 配额。
如需申请更多 GPU 配额,请按照申请更高配额限制中的说明操作,并使用 gpus
作为指标。
选择使用 Autopilot 或 Standard 的 GPU 支持
GPU 在 Autopilot 和 Standard 集群中可用我们建议您使用 Autopilot 集群获得全托管式 Kubernetes 体验。在 Autopilot 中,GKE 会管理驱动程序安装、节点扩缩、Pod 隔离和节点预配。
下表简要介绍了 Autopilot 和 Standard GPU 支持之间的区别:
说明 | Autopilot | Standard |
---|---|---|
请求 GPU 硬件 | 在工作负载中指定 GPU 资源。 | 将 GPU 硬件挂接到集群中的节点,然后将 GPU 资源分配给在这些节点上运行的容器化工作负载。 |
GPU 硬件可用性 |
|
Compute Engine 支持的所有 GPU 类型 |
选择 GPU | 您在工作负载规范中请求 GPU 数量和类型。默认情况下,Autopilot 会为该 GKE 版本安装默认驱动程序并管理节点。如需在 Autopilot 中选择特定的驱动程序版本,请参阅 为 Autopilot GPU Pod 选择 NVIDIA 驱动程序。 |
您需要执行在 Standard 节点池上运行 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 节点进行健康检查 |
|
|
指标和可观测性 |
|
|
使用 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 设备驱动程序的位置。
在 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 用量,请执行以下步骤:
进入 Google Cloud 控制台中的工作负载页面。
进入“工作负载”- 选择工作负载。
“工作负载”信息中心会显示 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 节点中断。