大模型训练监控配置:从零搭建GPU与训练指标观测环境
大模型训练监控配置的核心目标,是让训练过程中的 GPU 利用率、显存占用、温度和训练损失等关键指标能够被持续采集并可视化展示。
本文适合刚接手 GPU 训练服务器、希望从零搭起监控环境的读者,默认环境为 Linux 服务器,已安装 NVIDIA 驱动,并具备 sudo 权限。
以下步骤按“先确认硬件可见,再采集指标,最后接入看板”的顺序展开,每一步都给出可验证的结果。
先确认 GPU 与驱动状态
监控配置之前,先确认系统能正确识别 GPU。
执行:
nvidia-smi
正常输出应包含驱动版本、CUDA 版本、GPU 型号、显存占用和当前进程列表。
如果命令不存在,说明驱动未安装或 PATH 未生效;
如果输出报错 NVIDIA-SMI has failed,优先检查驱动是否加载:
lsmod | grep nvidia
没有输出时,可尝试重启服务器或重新安装匹配的驱动。
只有 nvidia-smi 能稳定输出,后续监控采集才有意义。
采集 GPU 指标:nvidia_gpu_exporter 配置
社区常用的做法是部署 nvidia_gpu_exporter,把 nvidia-smi 的输出转换为 Prometheus 可抓取的指标。
以二进制方式安装为例:
wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.2.1/nvidia_gpu_exporter_1.2.1_linux_x86_64.tar.gz
tar -xzf nvidia_gpu_exporter_1.2.1_linux_x86_64.tar.gz
sudo mv nvidia_gpu_exporter /usr/local/bin/
创建 systemd 服务文件 /etc/systemd/system/nvidia_gpu_exporter.service:
[Unit]
Description=NVIDIA GPU Exporter
After=network.target
[Service]
ExecStart=/usr/local/bin/nvidia_gpu_exporter --listen-address=:9835
Restart=always
[Install]
WantedBy=multi-user.target
启动并验证:
sudo systemctl daemon-reload
sudo systemctl enable --now nvidia_gpu_exporter
curl http://127.0.0.1:9835/metrics | grep nvidia_smi
能看到 nvidia_smi_utilization_gpu_ratio 或显存相关指标,说明采集端已经工作。
注意版本号和下载地址可能随项目更新变化,安装前应到项目发布页核对当前可用的文件名。
接入 Prometheus 与 Grafana 看板
在 Prometheus 的 prometheus.yml 中增加抓取任务:
scrape_configs:
- job_name: 'gpu'
static_configs:
- targets: ['127.0.0.1:9835']
重启 Prometheus 后,在 Web 界面 Status -> Targets 中应看到 gpu 任务为 UP。
随后在 Grafana 中添加 Prometheus 数据源,导入 GPU 监控面板,即可看到利用率、显存和温度曲线。
如果训练任务使用 PyTorch,也可以在训练脚本中通过 torch.cuda.memory_allocated() 定期打印或上报显存指标,与 GPU 采集数据对照。
容易踩坑的几个地方
- 端口未放行:Prometheus 与 exporter 不在同一台机器时,需要确认防火墙或安全组放行
9835端口。 - 权限不足:部分环境下普通用户执行
nvidia-smi正常,但 systemd 服务用户无法访问设备,可在服务中指定User=root或加入 video 组。 - 指标为空:先手动
curl验证 exporter,再检查 Prometheus 抓取间隔和目标地址是否写错。 - 不要只看 GPU 利用率:显存缓慢增长往往比利用率更能提前暴露泄漏问题。
验证监控是否真正生效
启动一次训练任务后,观察 Grafana 看板中 GPU 利用率是否随训练波动,显存曲线是否与 nvidia-smi 输出接近。
同时检查 Prometheus 的 Targets 页面没有报错。
如果曲线长期为 0,优先回到 exporter 的 /metrics 输出确认数据源,再检查训练进程是否真的在 GPU 上运行。
配置完成后,建议把 exporter 服务和 Prometheus 抓取规则纳入日常巡检;
训练规模扩大时,再考虑增加节点标签和告警规则。
监控配置不是一次性工作,先保证核心指标可见,再逐步补充训练损失和吞吐量等业务指标。