MindSpore Transformers 训练在线监控日志效果
·
MindSpore Transformers(MindFormers)内置全链路训练在线监控体系,通过实时日志输出、可视化监控、指标采集、异常告警、分布式追踪五大能力,让开发者在大模型训练过程中实时掌握 loss、学习率、吞吐量、NPU 利用率、显存占用等核心指标,快速定位不收敛、爆显存、训练慢、卡死等问题。
日志支持控制台彩色输出 + 文件持久化 + MindInsight 可视化,开箱即用、零代码侵入,是 LLM 微调、预训练必备的训练保障工具。本文完整说明监控内容、日志效果、核心代码、可视化配置。
一、训练在线监控核心内容(能看到什么)
1. 实时训练指标(控制台实时滚动)
- 迭代步数
step/ 总步数total_steps - 损失值
loss(判断是否收敛) - 学习率
lr(warmup / 衰减状态) - 吞吐量
samples/sec(速度快慢) - 耗时
time/ 剩余时间eta - NPU 利用率
npu_usage - 显存占用
memory
2. 关键状态监控
- 模型加载、权重初始化
- 数据集加载进度
- 检查点保存(ckpt)
- 分布式并行状态(TP/PP/DP)
- 混合精度(FP16/BF16)状态
- 梯度 norm、溢出检测
3. 异常自动监控
- Loss 异常波动
- 梯度爆炸 / 消失
- NPU 显存 OOM
- 通信中断(HCCL)
- 卡死、长时间无响应
4. 可视化监控(MindInsight 网页)
- Loss 曲线
- 学习率曲线
- 吞吐量曲线
- 硬件资源曲线
- 计算图、数据图
二、真实日志效果展示(控制台)
[2025-12-29 10:20:30] INFO: Starting training on Ascend NPU 0-7
[2025-12-29 10:20:35] INFO: Model Qwen-7B loaded, total params: 7.2B
[2025-12-29 10:20:40] INFO: Train dataset loaded: 120000 samples
Step: 10/10000 | Loss: 2.3456 | LR: 5.2e-5 | Speed: 1280 tokens/sec
Step: 20/10000 | Loss: 1.9876 | LR: 5.5e-5 | Speed: 1302 tokens/sec
Step: 30/10000 | Loss: 1.7234 | LR: 5.8e-5 | Speed: 1298 tokens/sec
...
[2025-12-29 10:25:10] INFO: Checkpoint saved at ./ckpt/rank_0/step_500.ckpt
[2025-12-29 10:25:12] INFO: NPU Memory Used: 26.8GB / 32GB
[2025-12-29 10:30:00] INFO: ETA: 1h 20m 30s
效果价值:
- 实时看 loss 是否下降 → 判断训练是否有效
- 实时看速度 → 硬件是否跑满
- 实时看显存 → 避免 OOM
- 实时看学习率 → 避免不收敛
三、核心配置代码(开启完整监控)
1. 训练代码(自动开启日志)
import mindspore as ms
from mindformers import Trainer, TrainingArguments
from mindformers.models import QwenForCausalLM, AutoTokenizer
# 1. 设置运行环境
ms.set_context(
device_target="Ascend",
mode=ms.GRAPH_MODE,
max_device_memory="32GB"
)
# 2. 训练配置(内置日志监控)
training_args = TrainingArguments(
run_mode="finetune",
epochs=3,
batch_size=4,
learning_rate=5e-5,
warmup_steps=100,
# ========== 在线监控核心配置 ==========
logging_steps=10, # 每10步输出日志
logging_level="INFO", # 日志级别
log_level_regex=".*", # 输出全部组件日志
save_steps=500, # 保存ckpt
save_total_limit=3,
# 可视化监控(MindInsight)
sink_mode=True,
profile=False, # 性能分析
summary_dir="./train_summary", # 可视化输出目录
enable_monitor=True, # 开启硬件监控
)
# 3. 加载模型
model = QwenForCausalLM.from_pretrained("qwen-7b")
tokenizer = AutoTokenizer.from_pretrained("qwen-7b")
# 4. 启动训练(自动开启在线监控)
trainer = Trainer(
model=model,
args=training_args,
tokenizer=tokenizer,
train_dataset="./train.mindrecord"
)
trainer.train() # 运行后自动输出实时日志
四、MindInsight 可视化在线监控(网页端)
启动命令
mindinsight start --port 8080 --summary-base-dir ./train_summary
打开浏览器访问:
http://服务器IP:8080
可监控内容
- Loss 实时曲线
- 学习率变化曲线
- 吞吐量曲线
- NPU 显存 / 利用率曲线
- 训练流程追踪图
五、高级功能:自定义监控日志
from mindformers import LogCallback
# 自定义日志回调(实时打印自定义指标)
class CustomMonitor(LogCallback):
def on_step_end(self, run_context):
super().on_step_end(run_context)
loss = run_context.loss
step = run_context.step_num
print(f"[自定义监控] Step={step}, Loss={loss:.4f}")
# 加入 Trainer
trainer = Trainer(
model=model,
args=training_args,
callbacks=[CustomMonitor()] # 启用自定义监控
)
六、监控日志价值总结
- 实时掌握训练状态,不用猜、不用等
- 快速定位问题:loss 不下降、NPU 未跑满、显存爆、学习率异常
- 可视化直观展示曲线趋势
- 分布式多卡统一监控,支持 8/16/32 卡集群
- 零代码侵入,只需配置
logging_steps即可开启
更多推荐




所有评论(0)