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()]  # 启用自定义监控
)

六、监控日志价值总结

  1. 实时掌握训练状态,不用猜、不用等
  2. 快速定位问题:loss 不下降、NPU 未跑满、显存爆、学习率异常
  3. 可视化直观展示曲线趋势
  4. 分布式多卡统一监控,支持 8/16/32 卡集群
  5. 零代码侵入,只需配置 logging_steps 即可开启
Logo

一站式 AI 云服务平台

更多推荐