GKE 中的 GPU 简介


本页面介绍 Google Kubernetes Engine (GKE) 中的 GPU,包括使用场景、支持的功能和 GPU 类型,以及 Autopilot 模式与 Standard 模式之间的差异。如需了解如何在工作负载中挂接和使用 GPU,请参阅在 Autopilot 上部署 GPU 工作负载在 Standard 节点池上运行 GPU

GKE 中的 GPU 可用性

在 GKE Autopilot 和 Standard 模式下,您可以将 GPU 硬件挂接到集群中的节点,然后将 GPU 资源分配给在这些节点上运行的容器化工作负载。您可以使用这些加速器执行资源密集型任务,例如:

  • 机器学习 (ML) 推断和训练
  • 大规模数据处理

可在 GKE 中使用的 GPU 硬件是适用于计算工作负载的 Compute Engine GPU 的子集。GKE 提供了一些特定于 GPU 的功能,例如分时 GPU多实例 GPU,这些功能可提高工作负载使用节点上的 GPU 资源的效率。

可用的特定硬件取决于集群的 Compute Engine 区域或可用区。如需了解具体可用性,请参阅 GPU 区域和可用区

GPU 配额

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

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

例如,如果您创建一个包含三个节点的集群,每个节点运行两个 GPU,则您的项目至少需要六个 GPU 配额。

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

Autopilot 与 Standard 中的 GPU 支持

GPU 在 Autopilot 和 Standard 集群中可用下表说明了 Autopilot 与 Standard GPU 支持之间的区别:

说明 Autopilot 标准
GPU 硬件可用性
  • NVIDIA T4
  • NVIDIA A100
Compute Engine 支持的所有 GPU 类型
选择 GPU 您在 Pod 规范中请求 GPU 数量和类型。Autopilot 安装稳定的驱动程序并管理节点。
  1. 创建具有特定 GPU 类型和相应 Compute Engine 机器类型的节点池,并选择要安装的驱动程序
  2. 如果您不使用自动安装,请在节点上手动安装 GPU 驱动程序
  3. 在 Pod 规范中请求 GPU 数量

如需了解相关说明,请参阅在 Standard 节点池上运行 GPU

额外的 GPU 功能 不适用
价格 Autopilot GPU Pod 价格 Compute Engine GPU 价格

在 Autopilot 中,GKE 管理驱动程序安装、节点扩缩、Pod 隔离和节点预配。我们建议您根据需要的节点灵活性和控制级别,为 GPU 选择集群模式,如下所示:

  • 如果您希望专注于部署基于 GPU 的工作负载,而无需管理节点,并且可用的 GPU 类型可满足您的需求,请使用 Autopilot 模式。
  • 如果您希望自行管理节点、驱动程序版本、扩缩、隔离和底层机器,或者您需要分时和多实例 GPU 等功能,请使用 Standard 模式。

GKE 中的 GPU 功能

GKE 提供了可用于优化 GPU 工作负载资源使用率的额外功能,以避免浪费节点上的 GPU 资源。默认情况下,Kubernetes 仅支持将 GPU 作为整个单元分配给容器,即使容器只需要可用的 GPU 的一部分,或者容器并非总是使用资源也是如此。

GKE 提供以下功能,以减少未充分利用的 GPU 资源:

GPU 特性
分时 GPU

适用于:Standard

将一个 GPU 作为多个单元提供给节点上的多个容器。GPU 驱动程序会切换上下文,并根据需要在不同的时间将完整的 GPU 资源分配给每个分配的容器。

多实例 GPU

适用于:Standard

将单个 GPU 拆分为最多七个硬件分隔的实例,这些实例可以作为单独的 GPU 分配给节点上的容器。每个分配的容器都会获得该实例的可用资源。

关于 NVIDIA CUDA-X 库

CUDA 是 NVIDIA 的并行计算平台和 GPU 的编程模型。如需使用 CUDA 应用,您使用的映像必须具有库。如需添加 NVIDIA CUDA-X 库,请使用以下任一方法:

  • 建议:使用预装了 NVIDIA CUDA-X 库的映像。例如,您可以使用 Deep Learning Containers。 这些容器预安装了关键数据科学框架、NVIDIA CUDA-X 库和工具。或者,NVIDIA CUDA 映像仅包含 NVIDIA CUDA-X 库。
  • 构建并使用您自己的映像。在这种情况下,请在容器规范的 LD_LIBRARY_PATH 环境变量中添加以下值:
    1. /usr/local/cuda-CUDA_VERSION/lib64:NVIDIA CUDA-X 库在节点上的位置。将 CUDA_VERSION 替换为您使用的 CUDA-X 映像版本。某些版本还在 /usr/local/nvidia/bin 中包含调试实用程序。如需了解详情,请参阅 DockerHub 上的 NVIDIA CUDA 映像
    2. /usr/local/nvidia/lib64:NVIDIA 设备驱动程序的位置。

如需查看您的 CUDA 版本所需的最低 GPU 驱动程序版本,请参阅 CUDA 工具包和兼容驱动程序版本。确保节点上运行的 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 工作周期的图表。

后续步骤