本页面介绍 Google Kubernetes Engine (GKE) 中的 GPU,包括使用场景、支持的功能和 GPU 类型,以及 Autopilot 模式与 Standard 模式之间的差异。如需了解如何在工作负载中挂接和使用 GPU,请参阅在 Autopilot 上部署 GPU 工作负载或在 Standard 节点池上运行 GPU。
GKE 中的 GPU 可用性
在 GKE Autopilot 中,通过在工作负载中指定 GPU 资源来请求 GPU 硬件。在 GKE 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 硬件可用性 |
|
Compute Engine 支持的所有 GPU 类型 |
选择 GPU | 您在工作负载规范中请求 GPU 数量和类型。默认情况下,Autopilot 会为该 GKE 版本安装默认驱动程序并管理您的节点。如需在 Autopilot 中选择特定的驱动程序版本,请参阅 为 Autopilot GPU Pod 选择 NVIDIA 驱动程序 |
如需了解相关说明,请参阅在 Standard 节点池上运行 GPU |
提高 GPU 利用率 | ||
安全性 | ||
价格 | Autopilot GPU Pod 价格 | Compute Engine GPU 价格 |
在 Autopilot 中,GKE 管理驱动程序安装、节点扩缩、Pod 隔离和节点预配。我们建议您根据需要的节点灵活性和控制级别,为 GPU 选择集群模式,如下所示:
- 如果您希望专注于部署基于 GPU 的工作负载,而无需管理节点,并且可用的 GPU 类型可满足您的需求,请使用 Autopilot 模式。
- 如果您希望自行管理节点、扩缩、隔离和底层机器,请使用 Standard。
GKE 中的 GPU 功能
GKE 提供了可用于优化 GPU 工作负载资源使用率的额外功能,以避免浪费节点上的 GPU 资源。默认情况下,Kubernetes 仅支持将 GPU 作为整个单元分配给容器,即使容器只需要可用的 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 库
在 Autopilot 集群中,GKE 管理驱动程序版本选择和安装。
CUDA 是 NVIDIA 的并行计算平台和 GPU 的编程模型。如需使用 CUDA 应用,您使用的映像必须具有库。如需添加 NVIDIA CUDA-X 库,请使用以下任一方法:
- 建议:使用预装了 NVIDIA CUDA-X 库的映像。例如,您可以使用 Deep Learning Containers。 这些容器预安装了关键数据科学框架、NVIDIA CUDA-X 库和工具。或者,NVIDIA 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 映像。/usr/local/nvidia/lib64
:NVIDIA 设备驱动程序的位置。
如需查看您的 CUDA 版本所需的最低 GPU 驱动程序版本,请参阅 CUDA 工具包和兼容驱动程序版本。确保节点上运行的 GKE 补丁程序版本包含与您选择的 CUDA 版本兼容的 GPU 驱动程序版本。如需查看与 GKE 版本关联的 GPU 驱动程序版本列表,请参阅 GKE 当前版本表中链接的相应 Container-Optimized OS 页面。
监控 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 指标。对于标准集群,您必须安装 NVIDIA 驱动程序。对于 Autopilot 集群,GKE 会安装这些驱动程序。
如需了解如何部署 DCGM 和 Prometheus DCGM 导出器,请参阅 Google Cloud Observability 文档中的 NVIDIA 数据中心 GPU 管理器 (DCGM)。
处理由于节点维护而导致的中断
托管 GPU 的 GKE 节点受维护事件或其他可能导致节点关停的中断的影响。您可以减少在控制平面运行 1.29.1-gke.1425000 及更高版本的 GKE 集群中运行的工作负载的中断。GKE 会在逐出之前最多 60 分钟向节点发送 SIGTERM
信号,以提醒节点即将关停。
您可以将 GKE 配置为正常终止工作负载。在 Pod 清单中,将 spec.terminationGracePeriodSeconds
字段设置为不超过 3600
秒(一小时)的值。GKE 会尽最大努力正常终止这些 Pod 并执行您定义的终止操作,例如保存训练状态。对于 PodDisruptionBudget
或 terminationGracePeriodSeconds
设置,GKE 遵循任何不超过 60 分钟的配置。
如需了解详情,请参阅配置 GPU 节点正常终止。