要更大限度地发挥 AI 基础设施的价值,需要深入了解 GPU 利用率。然而,许多在 Kubernetes 上运行 AI 工作负载的平台团队对其 GPU 使用方式的可见性有限。大多数人不知道谁在使用它们、使用了多少内存,以及 Kubernetes Pod 是处于待处理状态还是悄无声息地处于空闲状态。如果没有信号,GPU 集群通常会被充分利用,并且在用户升级之前,调度瓶颈会很慢。
这个GPU 使用率监控器,基于NVIDIA Data Center GPU Manager (DCGM) Exporter,在整个 Kubernetes 集群中并通过单个 Helm 图表部署,实现对 GPU 分配、计算利用率、内存消耗和 POD 状态的实时可视化。
GPU 加速的 Kubernetes 集群中的可观察性差距
对于管理 GPU 加速 Kubernetes 集群的站点可靠性工程师 (SRE) 和平台团队而言,两种故障模式很常见,且成本高昂。
- 预留空间: 工程师要求整个 GPU 避免争用,但模型通常使用 30-50% 的可用内存和计算。如果不了解使用情况,就没有信号可以正确调整这些分配。因此,集群的标称需求较高,但有效利用率较低,需要为闲置的硬件付费。
- Pod 饥饿和调度盲点: GPU 请求可能会堆叠起来,使 POD 处于待处理状态,并导致模型训练作业或推理端点在开始前停止。如果没有集群范围内的待处理与运行 GPU pod 的视图,这些调度瓶颈通常会被发现得为时已晚 – 通常是在用户报告故障时,而不是通过监控警报来发现。
标准的 Kubernetes 指标堆栈(包括 kube-state-metrics 和 node-exporter)无法提供 GPU 相关的监控数据。 DCGM Exporter 能够暴露每块 GPU 的硬件指标,但将其接入 Prometheus 和 Grafana,并配置生产级别的监控仪表板,需要大量手动操作。这导致团队最终可能面临监控配置不一致的问题,甚至完全缺乏 GPU 监控。
什么是 GPU 使用率监视器?
GPU Usage Monitor 是一个开源项目,可为 Kubernetes 部署完全集成的 GPU 可观察性堆栈。GPU Usage Monitor 不需要 SRE 和平台团队组装和配置单个组件,而是将 DCGM Exporter、kube-state 指标、Prometheus 和 Grafana 集成到单个部署中,并配有专为 GPU 加速工作负载设计的预构建控制面板。
设计原则是操作简单。单个 Helm install 命令可在几分钟内生成可行的 GPU 可见性,无需自定义仪表板创作或抓取配置。
GPU 使用率监控架构
该工具由四个主要组件组成:
- DCGM Exporter:公开 NVIDIA GPU 指标 (外部 – 通过 GPU Operator 部署)
- kube-state-metrics:公开 Kubernetes Pod 和资源指标
- Prometheus:收集并存储 DCGM 中的指标和 kube-state 指标
- Grafana:通过 GPU 使用情况监视器控制面板提供可视化

DCGM 负责处理硬件层,kube-state 指标 负责处理 Kubernetes 层,Prometheus 和 Grafana 将两者整合,形成统一的可观测性视图。平台团队能够独立而深入地理解每个组件,而图表的价值正体现在这种集成之中。
如何开始使用 GPU 使用率监视器
GPU Usage Monitor 是 Apache 2.0 许可下的开源产品,现已在 GitHub 上提供。
预备知识
安装前,请验证以下内容:
- Kubernetes 1.19 或更高版本
- Helm 3.0 或更高版本
- 在 GPU 节点上运行的 DCGM Exporter
安装部署完整的监控堆栈需要三个命令。
# Update chart dependencieshelm dependency update# Install into a dedicated namespacehelm install gpu-usage-monitor . \ --namespace gpu-usage-monitor \ --create-namespace# Forward Grafana to localhostkubectl port-forward \ -n gpu-usage-monitor \ svc/gpu-usage-monitor-grafana 3000:80 |
前往 http://localhost:3000,并使用默认凭据 (admin / admin) 登录。对于本地开发集群以外的任何环境,请先通过 values.yaml 更新凭据,然后再将控制面板展示给更多团队。
仪表板显示的内容
部署完成后,预构建的 Grafana 控制面板可让操作员立即读取集群中 GPU 资源的状态。

您可以通过控制面板获得的关键见解:
- GPU 分配趋势。 跟踪各命名空间和工作负载随时间推移的 GPU 分配情况。已分配但从未被实际使用的资源,是回收闲置容量的直接信号。
- 根据可配置的数值显示每个 GPU 的利用率百分比,计算利用率与数值。设定警告和严重阈值,以便在达到饱和前及时预警,避免推理延迟增加或训练吞吐量下降。
- 每个工作负载的内存使用情况,以及按 POD 细分的实时 GPU 显存消耗。 这是合理调整资源请求的重要依据:如果某个工作负载在 80 GB 的 NVIDIA GPU 上持续仅消耗 12 GB,就没有必要分配整个 GPU。
- 正在运行和待处理的 Pod 数量。 单窗格视图展示了当前有多少支持 GPU 的 Kubernetes Pod 处于运行状态,而非卡在待处理状态。待处理数量的持续增加是调度压力的早期预警信号,可在用户发现任何问题之前就被察觉。
- 按 GPU 类型筛选。 可根据 NVIDIA GPU 平台(如 Hopper、Blackwell、Blackwell Ultra 等)过滤所有指标,适用于 GPU 类型会影响适用工作负载及预期利用率的异构集群。
配置
Helm Chart 旨在适应现有基础设施,而不是将其替换掉。values.yaml 中的关键配置选项分为三个部分。
- 外部 Prometheus 集成: 如果组织使用托管或自建的 Prometheus 实例,可将该图表配置为将 GPU 指标发送至现有堆栈,而非部署新的 Prometheus。这样可实现指标保留、告警规则和数据生命周期管理的集中化。
- 自定义资源分配: 所有图表组件的 CPU 和内存请求及限制均可配置。可根据集群的资源预算调整这些值,特别是在需要长期保存指标数据时,适用于 Prometheus 实例。
- 凭据管理: 在全面推广之前,请替换默认的 Grafana 凭据。该图表通过标准 Helm 值暴露这些凭据,便于通过现有的机密管理流程进行管理。
无论是为单个 ML 团队管理小型 GPU 集群,还是运行服务于数百个工作负载的大型平台,完整的 GPU 可观测性都是高效运营该基础架构的先决条件。GPU Usage Monitor 可在几分钟内实现这种可观察性。
了解详情
访问全面的 Helm 图表 以监控 Kubernetes 集群中的 GPU 资源。