人人都会AI编程

20.5 监控运维平台

更新时间:2026-07-09

在 20.1–20.4 节完成基础环境、容器化、调度系统和训练框架的部署之后,算力中心已经具备“跑任务”的能力。但真正进入生产状态后,集群会暴露出大量在搭建阶段不易察觉的问题:某张 GPU 的显存带宽悄悄下降、InfiniBand 端口出现 CRC 错误、训练 loss 突然发散……如果没有一套完善的监控运维平台,这些隐患最终会以 “任务静默失败三天,浪费数万元算力” 的形式被发现。

本节介绍监控体系的三个核心维度,以及如何将它们整合为一套可落地的告警与可视化方案。


一、GPU 状态监控:不只是看“利用率”

GPU 是算力中心最昂贵也最容易出故障的部件,监控必须覆盖健康度与效率两个层面。

(1)基础健康指标

  • 温度:核心温度(GPU Temperature)与显存温度(Memory Temperature),超过 85℃ 需告警,超过 90℃ 显卡会自动降频甚至保护性关机。
  • 功耗:当前功率与设计功耗(TDP)的比值,突然飙升或异常偏低都可能预示硬件损伤。
  • 风扇转速:风冷方案下的基础指标,异常高转速意味散热通道堵塞。
  • PCIe 链路状态:链路宽度(如 x16 降为 x8)、带宽降级、可纠正/不可纠正错误(CE/UE Error)数量。这常是 GPU 间歇性性能毛病的根源。

(2)显存与计算利用率

  • 显存占用(Memory Used):除跟踪绝对占用量(GB),还要关注显存碎片率。某些推理任务会因碎片化导致 OOM,但总占用却显示仍有空闲。
  • SM 核心利用率:nvidia-smi 中的 GPU Utilization 仅代表过去 1 秒内有计算任务的比例,不等于计算效率。更高的指标是 Tensor Core 利用率(需 nccl 或 DCGM 采集),以及 FP32/FP16 活跃度,可反映模型是否真正充分利用硬件。
  • 显存带宽利用率:许多大模型训练是“带宽瓶颈”型,监控 HBM 带宽占用比(%)比单纯看算力利用率更能定位性能木桶。

(3)常见采集工具

  • DCGM(Data Center GPU Manager):NVIDIA 官方监控库,通过 dcgm-exporter 输出 Prometheus 格式指标,覆盖 SM 占用、显存带宽、温度、功耗、ECC 错误等。
  • nvidia-smi + 自研脚本:适合小规模集群快速验证,但不适合规模化自动告警。
  • 国产 GPU(如昇腾)配套的 npu-smi、npu-exporter 等工具。

实用建议:不要等到训练任务报错再去查 GPU。生产环境必须对“GPU 温度 > 85℃”、“ECC 错误 > 0”、“链路降速”等指标设置 7×24 告警,且告警通道至少保证即时通知到运维工程师。


二、网络与存储监控:隐藏的算力杀手

大模型分布式训练的通信开销可占单轮迭代时间的 30%–50%。网络瓶颈往往伪装成“GPU 利用率低”,因此需要专门的监控维度。

(1)网络监控

  • InfiniBand / RoCE 端口状态:端口速率、链路状态(Up/Down)、CRC 错误计数、符号错误计数。哪怕只是偶尔的 CRC 错误,都能因重传导致 allreduce 时间翻倍。
  • RDMA 传输带宽与延迟:使用 perftest 工具逐节点打流并记录历史,监控是否存在性能退化。
  • 光模块 / 光缆状态:接收光功率(Rx Power)、发送光功率(Tx Power)、温度、偏置电流。光模块老化会导致误码率上升。
  • 拥塞与重传:从交换机侧监控 PFC(Priority Flow Control)帧计数、ECN 标记数等。网络拥塞会直接拖垮分布式训练。

(2)存储监控

  • 并行文件系统(Lustre/GPFS/JuiceFS)
  • IOPS 与带宽:元数据服务器(MDS)的请求速率,对象存储服务器(OSS)的读写带宽。训练 Checkpoint 保存时的瞬间写入压力极大,需确保带宽余量。
  • 慢盘与错误:磁盘 I/O 延迟(await)、坏块计数、文件系统错误数。
  • 元数据负载:训练任务会高频读取大量小文件(如 parquet 数据片),元数据服务压力是容易被忽视的性能瓶颈。监控 MDS CPU 使用率、请求队列深度至关重要。
  • 存储容量与增长趋势:Checkpoint 和训练日志会快速打满存储,需提前预警,并设置自动清理策略。

实用建议:对于百卡以上集群,优先部署 Infiniband Subnet Manager 的监控插件罗森(RoCE)集群的 Grafana 面板,统一展示网络健康度。存储端至少配置两个告警:“任意 OSS 磁盘延迟超过 50ms”“存储卷使用率超过 80%”


三、训练任务全链路监控与告警

GPU、网络、存储的指标是“设备级”的,真正对开发者有价值的是“训练任务为什么慢了 / 为什么挂掉”。需要从任务视角打通所有层级。

(1)任务级性能指标

  • 每轮迭代耗时(Iteration Time / Training Step Time):如果突然增加 20% 以上,可能对应某节点网络掉速、存储卡顿或 GPU 卡住了。
  • 吞吐量(Tokens per Second 或 Samples per Second):整体效率直接对应算力成本。
  • MFU(Model FLOPs Utilization):理论峰值算力的实际利用率,是集群综合性能的“金标准”。当 MFU 从 50% 掉到 40%,一定隐藏着通信或 I/O 瓶颈。
  • 梯度范数(Gradient Norm):用于监控训练健康度。norm 突然爆炸意味着可能发散,需要自动触发梯度裁剪或暂停任务。
  • Loss 曲线:包括 training loss 和 validation loss。除常规下降外,需自动检测“Loss 长时间不下降”(plateau)和“Loss 突然 NaN”等异常。

(2)分布式通信专用指标

  • AllReduce 耗时:各节点间同步梯度的总时间,可通过 nccl 的调试输出或 PyTorch Profiler 获取。
  • 通信量与带宽:NCCL 统计的总通信字节数和平均带宽,对比 InfiniBand 理论带宽,评估实际利用率。
  • 流水线气泡(Pipeline Bubble):如果使用流水线并行,可以通过 GPU 空闲等待时间来估算,反映切分策略是否合理。

(3)健康检查与日志告警

  • 进程存活:所有训练节点上的主要训练进程(如 torchrun 启动的 worker)是否正常运行。
  • OOM/Error 监控:自动抓取 CUDA OOM、NCCL timeout、文件读取失败等关键日志,并通过正则匹配触发告警。
  • Checkpoint 保存状态:定期检查最新 checkpoint 的时间戳,防止因存储满或权限问题导致“训练跑了一个月,但最后一次保存是两周前”。

四、平台化方案:实际搭建建议

将上述所有指标落地为可用平台,建议分层设计:

| 层级 | 工具链参考 | 职责 |
|------|-----------|------|
| 采集层 | DCGM-exporter、Node Exporter、InfiniBand Exporter、Lustre Exporter、自定义日志采集器(Filebeat) | 从每台节点采集 GPU/CPU/网络/存储指标和日志 |
| 存储与聚合层 | Prometheus(时序指标)+ Loki / Elasticsearch(日志) | 统一存储,支持高效查询和告警规则 |
| 可视化层 | Grafana 仪表板,分角色设计:管理员看全集群状态,用户看自己任务详情 | 降低信息噪音,快速定位问题 |
| 告警层 | Alertmanager,根据严重等级分通道(企业微信、钉钉、邮件、短信),设置静默与升级策略 | 避免告警风暴,确保关键事件不遗漏 |
| 可观测平台 | 有条件的可引入 OpenTelemetry 做训练全链路 Trace(根因分析),或直接使用 NVIDIA 的 NVIDIA DGX Station / Base Command 等成熟方案 | 减少自研成本,提供更深层性能分析 |

实用最低配置:即使资源有限,至少部署 DCGM-exporter + Prometheus + Grafana 先管住 GPU,再用 简单脚本轮询训练日志中的 OOM/NaN 并发送告警。这能覆盖 80% 的致命故障。


五、告警设计的核心原则

  1. 区分告警重要性:GPU 温度高、存储即将满 必须实时通知;GPU 利用率短暂下降可标记为“注意”,不做紧急打扰。
  2. 收敛规则:对同一故障(如一个节点网络断开)可能引发的上百条关联告警进行压缩合并,只发一条摘要。
  3. 关联上下文:告警内容必须包含:时间、涉及的节点/任务名、具体指标值和阈值、建议排查步骤。避免让值班人员收到一条“GPU 97℃”后无从下手。
  4. 任务同步:将监控数据与调度系统(Slurm / Kubernetes) 的作业信息关联,自动识别“哪些任务受此告警影响”。

六、小结

监控运维平台是算力中心上线前的“最后检查项”,却是长久稳定运行的第一道防线。核心要记住:

  • GPU 是心脏,网络是血管,存储是胃:任何一个器官出问题,整个训练任务都会“生病”;
  • 从任务视角反推设备监控:不要为了监控而监控,每个指标都应该能回答“训练为什么受影响”;
  • 告警是最后一道保险,自动恢复才是第一追求:在 21.5 节(算力利用率提升策略)中,将进一步讨论如何利用监控数据实现任务自动重新调度、坏卡自动隔离等自我修复能力。

这一层建设好了,你才能在深夜睡个安稳觉。