已关闭
[Bug]: 【自提单】断点续训加载 checkpoint 时缺少 optimizer 文件报错不明确 #2459
lanshaozuishuai创建于  7月22日关闭于  7月23日
lanshaozuishuai成员
7月22日 创建

Checklist

🐞 问题详细描述

标题: [Bug]: 断点续训加载 checkpoint 时缺少 optimizer 文件报错不明确

描述:

当使用 no_load_optim=False(即需要恢复训练状态)加载 checkpoint 时,存在两种场景的报错信息不明确问题:

  1. HuggingFace checkpoint + no_load_optim=False:HF checkpoint 本身不包含 optimizer 权重,但代码没有前置校验,会在后续流程中抛出难以定位的底层错误。
  2. MindSpore checkpoint + no_load_optim=False:当 checkpoint 目录中缺少 optimizer 文件(opt-.safetensors)时(例如只拷贝了 model 权重而遗漏了 optimizer
    文件),代码在后续加载时才会报错,信息不直观,用户难以快速定位原因。

期望行为:在加载 checkpoint 前就进行前置校验,给出明确的错误提示,告知用户原因及修复建议(如设置 no_load_optim=True)。

复现代码:

场景1: HF checkpoint 尝试续训

trainer = Trainer(
model=model,
optimizer=optimizer,
config=TrainConfig(
checkpoint=CheckpointConfig(
checkpoint_path="/path/to/hf_checkpoint",
no_load_optim=False, # 尝试恢复训练
)
)
)
trainer.train()

场景2: MS checkpoint 目录缺少 optimizer 文件

例如某个 MS checkpoint 目录中只有 model-.safetensors,没有 opt-.safetensors

trainer = Trainer(
model=model,
optimizer=optimizer,
config=TrainConfig(
checkpoint=CheckpointConfig(
checkpoint_path="/path/to/ms_ckpt_without_optim",
no_load_optim=False,
)
)
)
trainer.train()

修复后报错信息:

场景1 修复后:

ValueError: Resume training (no_load_optim=False) is not supported for HuggingFace checkpoints.

场景2 修复后:

ValueError: no_load_optim is False but no optimizer checkpoint found in /path/to/ms_ckpt_without_optim.
Please ensure the checkpoint directory contains optimizer weight files (-opt-.safetensors),
or set no_load_optim=True to skip optimizer loading.

详细的环境信息描述

  • MindSpore 版本: 2.10
  • mindformers 版本/分支: master
  • 硬件平台: (请填写,如 Ascend 910B)

其他辅助信息

版本信息

mindformers commit: e46a1ac25(修复提交)

Thanks for contributing 🎉!

likedislike
Llanshaozuishuai成员
7月22日 添加了label:bug
Llanshaozuishuai成员
7月22日 添加了label:bug
Llanshaozuishuai成员
7月22日 关联分支 由 [] 改变为 [master]
Llanshaozuishuai成员
7月22日 关联组件 由 [] 改变为 [B-SIG-MindFormers-Train]
Llanshaozuishuai成员
7月22日 问题后端类型 由 [] 改变为 [Ascend]
MindSpore-BotMindSpore-Bot成员
7月23日 关闭了 issue
MindSpore-BotMindSpore-Bot成员
7月23日 issue状态由 TODO 改变为 DONE
Llanshaozuishuai成员
7月23日 修改标题为 “[Bug]: 【自提单】断点续训加载 checkpoint 时缺少 optimizer 文件报错不明确”,原标题为“[Bug]: 断点续训加载 checkpoint 时缺少 optimizer 文件报错不明确”
Llanshaozuishuai成员
7月23日 将 lanshaozuishuai 设为负责人