对于SRE团队来说,实现监控AI、高性能计算平台上大规模GPU资源,至关重要。SRE团队可以通过GPU指标了解工作负载等相关性能,从而优化资源分配,提升资源利用率及异常诊断,以提高数据中心资源的整体效能。除了SRE及基础设施团队之外,不管你是从事GPU加速方向的研究人员,还是数据中心架构师,都可以通过相关监控指标,了解GPU利用率和工作饱和度以进行容量规划及任务调度等。
随着AI/ML工作负载的容器化,调度平台采用具备动态扩缩特性的Kubernetes解决方案,针对其监控的急迫性日益提升。在这篇文章中,我们将介绍NVIDIA数据中心GPU管理器(DCGM),以及如何将其集成到Prometheus和Grafana等开源工具中,以实现Kubernetes的GPU监控的整体解决方案。
NVIDIA DCGM
NVIDIA DCGM是用于管理和监控基于Linux系统的NVIDIA GPU大规模集群的一体化工具。它是一个低开销的工具,提供多种能力,包括主动健康监控、诊断、系统验证、策略、电源和时钟管理、配置管理和审计等。
DCGM提供用于收集GPU遥测的API。特别值得关注的是GPU利用率指标、内存指标和流量指标。DCGM提供了各种语言的客户端,如C和Python。对于与容器生态系统的集成,提供基于DCGM APIs的Go绑定实现。
NVIDIA exporter
监控系统通常由指标采集器、用于存储指标的时间序列数据库和可视组件组成。例如CNCF毕业项目Prometheus,它和Grafana一起构成监控集成方案。其中Prometheus还包括Alertmanager来创建和管理警报。Prometheus、kube-state-metrics及node_exporter一起部署,以获取Kubernetes API对象的集群指标和CPU利用率等节点指标。下图为Prometheus的示例架构。
在前面介绍的Go API基础上,可以通过DCGM向Prometheus暴露GPU指标。NVIDIA为此构建了dcgm-exporter的项目。
dcgm-exporter 使用 Go 绑定从 DCGM 收集 GPU 遥测数据,然后通过 http 接口 (/metrics) 向 Prometheus 暴露指标。
dcgm-exporter可以通过使用csv格式的配置文件来定制DCGM收集的GPU指标。