大模型训练周期长、资源消耗大,在线监控是保障训练稳定、及时发现异常、优化性能的核心手段。MindSpore Transformers(MindFormers)提供日志监控、TensorBoard 可视化、MindInsight、msMonitor四大监控体系,覆盖损失 / 精度、学习率、梯度、吞吐量、NPU 利用率、通信性能等全维度指标,支持单卡 / 分布式、实时可视化、异常告警、性能诊断。
一、训练在线监控核心价值与指标体系
1.1 核心价值
- 实时洞察:监控训练进度、损失下降、性能波动
- 异常预警:及时发现梯度爆炸 / 消失、loss 不收敛、NPU 异常、通信卡顿
- 性能调优:定位瓶颈(数据加载、算子耗时、通信延迟)
- 稳定性保障:长稳训练监控、集群健康度检测
1.2 核心监控指标(必看)
- 精度指标:loss、acc、ppl、梯度范数(梯度爆炸 / 消失)
- 性能指标:吞吐量(token/s)、step 耗时、NPU 利用率、显存占用
- 训练状态:学习率、数据迭代进度、检查点保存
- 分布式指标:HCCL 通信耗时、数据并行 / 模型并行负载、节点健康度
二、MindSpore Transformers 监控体系(四大工具)
2.1 日志监控(基础)
- 功能:控制台 / 文件输出 loss、step、耗时、吞吐量
- 优势:轻量、低开销、无需额外依赖
- 适用:快速查看、脚本日志、批量训练
2.2 TensorBoard 可视化(主流)
- 功能:曲线展示 loss/acc/ 学习率、直方图(权重 / 梯度)、性能曲线
- 优势:交互强、实时更新、支持多实验对比
- 适用:单卡 / 分布式、调参对比、训练趋势分析
2.3 MindInsight(全链路可视化)
- 功能:计算图、标量、直方图、性能剖析、模型溯源
- 优势:深度调试、性能诊断、多实验对比
- 适用:模型结构检查、性能瓶颈定位、训练异常分析
2.4 msMonitor(分布式集群监控)
- 功能:NPU 状态、通信性能、慢节点、实时告警、trace dump
- 优势:集群级、低开销、实时预警、支持大规模分布式
- 适用:多机多卡、超大规模模型、长稳训练
三、监控核心配置(YAML)
3.1 日志 + TensorBoard 配置(基础)
# 监控总开关
monitor_config:
monitor_on: True
dump_path: './dump'
step_interval: 10 # 每10步记录一次
local_loss_format: ['log', 'tensorboard'] # loss输出到日志+TensorBoard
local_norm_format: ['log', 'tensorboard'] # 梯度范数
device_local_norm_format: ['log', 'tensorboard']
throughput_baseline: 1000 # 吞吐量基线(告警用)
# TensorBoard配置
tensorboard:
log_dir: './tensorboard'
flush_secs: 10 # 刷新间隔
# 回调函数(日志监控)
callbacks:
- type: LossMonitor
per_print_times: 10
- type: TimeMonitor
- type: CheckpointMonitor
3.2 性能分析(Profiler)配置
profile: True
profile_start_step: 5
profile_stop_step: 10
profile_communication: True # 收集通信性能
profile_memory: True # 收集显存
mstx: True # 时间戳记录
3.3 分布式监控(msMonitor)配置
ms_monitor:
enable: True
npu_monitor: True
hccl_monitor: True
alert_threshold:
npu_util: 95 # NPU利用率>95%告警
throughput_drop: 30 # 吞吐量下降30%告警
四、实战代码(单卡 + 分布式)
4.1 环境准备
# 安装依赖
pip install mindformers tensorboard mindinsight
# 验证
python -c "from mindformers import Trainer; print('OK')"
4.2 单卡训练监控(Python API)
from mindformers import Trainer
from mindformers.models import Llama2Config
# 1. 初始化Trainer(开启监控)
trainer = Trainer(
task="text_generation",
model="llama2_7b",
train_dataset="./data/wikitext2.mindrecord",
config=Llama2Config(),
monitor_config={
"monitor_on": True,
"step_interval": 10,
"local_loss_format": ["log", "tensorboard"]
},
tensorboard={"log_dir": "./tensorboard"}
)
# 2. 启动训练(自动监控)
trainer.train(
epoch=3,
callbacks=[
LossMonitor(per_print_times=10),
TimeMonitor()
]
)
4.3 分布式训练监控(命令行)
# 4卡分布式训练(开启监控)
bash scripts/msrun_launcher.sh "run_mindformer.py \
--config configs/llama2/pretrain_llama2_7b.yaml \
--train_dataset ./data/wikitext2.mindrecord \
--run_mode train \
--use_parallel True \
--monitor_on True" 4
4.4 启动 TensorBoard 可视化
# 启动TensorBoard
tensorboard --logdir=./tensorboard --port=6006
# 浏览器访问:http://localhost:6006
4.5 启动 MindInsight
# 启动MindInsight
mindinsight start --summary-base-dir=./tensorboard --port=8080
# 浏览器访问:http://localhost:8080
五、分布式监控(msMonitor)实战
5.1 配置开启
# 分布式监控配置
ms_monitor:
enable: True
npu_monitor: True
hccl_monitor: True
alert_threshold:
npu_util: 95
throughput_drop: 30
5.2 启动监控(命令行)
# 分布式训练+msMonitor监控
bash scripts/msrun_launcher.sh "run_mindformer.py \
--config configs/llama2/pretrain_llama2_7b.yaml \
--train_dataset ./data/wikitext2.mindrecord \
--run_mode train \
--use_parallel True \
--ms_monitor.enable True" 8
5.3 查看监控结果
- NPU 状态:利用率、温度、显存、功耗
- 通信性能:HCCL 带宽、延迟、通信耗时
- 告警日志:NPU 过载、吞吐量骤降、节点异常
六、常见问题与排查
6.1 loss 不收敛
- 排查:梯度范数(是否为 0 / 过大)、学习率、数据质量
- 解决:调整学习率、检查数据、梯度裁剪
6.2 吞吐量低
- 排查:NPU 利用率、数据加载、通信耗时
- 解决:优化数据管道、开启数据预取、调整并行策略
6.3 分布式通信异常
- 排查:HCCL 日志、节点健康、网络带宽
- 解决:检查网络、重启集群、调整通信参数
6.4 TensorBoard 无数据
- 排查:log_dir 路径、监控开关、step_interval
- 解决:确认路径、开启 monitor_on、调整记录间隔
七、最佳实践
- 监控必开:生产环境必须开启日志 + TensorBoard
- 分布式必用 msMonitor:大规模集群优先用 msMonitor
- 监控频率:step_interval=10~100(平衡开销与实时性)
- 异常告警:设置 NPU 利用率、吞吐量阈值
- 性能诊断:定期开启 Profiler 定位瓶颈
八、总结
MindSpore Transformers 提供日志、TensorBoard、MindInsight、msMonitor四层监控体系,覆盖精度、性能、状态、分布式全维度指标,支持实时可视化、异常告警、性能诊断、集群健康度检测。通过YAML 配置 + API / 命令行即可快速启用,显著提升大模型训练稳定性、调优效率、问题定位速度,是国产化大模型训练必备监控方案。