已关闭
[Bug]: PyNative MaxLogitsMonitor 隔步打印崩溃且无法独立关闭日志 #2468
Java不加糖创建于  7月27日关闭于  8月3日
Java不加糖成员
7月27日 创建

Checklist

🐞 问题详细描述

PyNative MaxLogitsMonitor 同时负责输出 max-attention-logit 和在每个训练步结束后清零 tracking 状态。Trainer 内部将模型保存为列表,但 callback 在跳过日志的分支中把整个列表传给单模型 reset 接口。

当配置日志间隔大于 1 时:

optimizer:
  type: Muon
  qk_clip_enabled: true

callbacks:
  - type: MaxLogitsMonitor
    step_interval: 2

第 1 步结束后会报错:

AttributeError: 'list' object has no attribute 'reset_max_attention_logit'

此外,QK clip 需要每步自动 reset max-logits 状态,但当前 callback 没有独立的日志开关,用户无法保留 QK clip tracking/reset 并关闭 max-logits 日志。

期望行为:

  • reset 每步执行,与日志策略解耦;
  • 支持不打印、每步打印和每 N 步打印;
  • 跳过打印时不读取 max-logits Tensor,避免额外设备到主机同步;
  • 支持 Trainer 的模型列表以及程序化使用时的单模型输入。

详细的环境信息描述

  • 硬件:Ascend 910B2
  • MindSpore:2.10.0
  • 运行模式:PyNative
  • 优化器:Muon,qk_clip_enabled: true
  • Attention:standard MLA + FlashAttention

其他辅助信息

建议新增独立的 enable_logging 配置,并让 step_interval 只控制日志频率;callback 在所有路径上仍对每个模型 chunk 执行 reset。

版本信息

  • MindFormers upstream/master
  • 基线提交:dad55f0cf
likedislike
JJava不加糖成员
7月27日 issue类型由 Documentation 改变为 Bug-Report
MindSpore-BotMindSpore-Bot成员
8月3日 关闭了 issue
MindSpore-BotMindSpore-Bot成员
8月3日 issue状态由 TODO 改变为 DONE