modelscope-funasr中,这段日志是怎么回事,为什么又要删掉,又要用到?

modelscope-funasr中,[2024-04-18 03:27:43,313][root][INFO] - Update best acc: 1.0000, outputs/model.pt.best
[2024-04-18 03:27:43,319][root][INFO] - Delete: ./outputs/model.pt.ep0
[2024-04-18 03:27:43,438][root][INFO] - rank: 0, time_escaped_epoch: 0.030 hours, estimated to finish 20 epoch: 0.000 hours

average_checkpoints: ['./outputs/model.pt.ep0', './outputs/model.pt.ep1', './outputs/model.pt.ep2', './outputs/model.pt.ep3', './outputs/model.pt.ep4', './outputs/model.pt.ep5', './outputs/model.pt.ep6', './outputs/model.pt.ep7', './outputs/model.pt.ep8', './outputs/model.pt.ep9']
Checkpoint file ./outputs/model.pt.ep0 not found. 上面这段日志是怎么回事,为什么又要删掉model.pt.ep0,然后马上又要用到它?

展开
收起
提问的橘子 2024-04-19 14:16:48 95 分享 版权
阿里云 AI 助理回答

根据您提供的日志信息,这段日志描述了在 modelscope-funasr 的训练过程中,模型检查点(checkpoint)的管理行为。以下是详细分析和解释:


1. 日志内容解析

日志片段:

[2024-04-18 03:27:43,313][root][INFO] - Update best acc: 1.0000, outputs/model.pt.best
[2024-04-18 03:27:43,319][root][INFO] - Delete: ./outputs/model.pt.ep0
[2024-04-18 03:27:43,438][root][INFO] - rank: 0, time_escaped_epoch: 0.030 hours, estimated to finish 20 epoch: 0.000 hours
average_checkpoints: ['./outputs/model.pt.ep0', './outputs/model.pt.ep1', './outputs/model.pt.ep2', ...]
Checkpoint file ./outputs/model.pt.ep0 not found.

关键点:

  1. 更新最佳模型:日志显示当前训练过程中,模型的最佳准确率(best acc)达到了 1.0000,并保存为 outputs/model.pt.best
  2. 删除旧检查点:紧接着,系统删除了 ./outputs/model.pt.ep0 文件。
  3. 平均检查点操作:随后,系统尝试对多个检查点文件(如 model.pt.ep0, model.pt.ep1, 等)进行平均操作。
  4. 文件未找到错误:在执行平均操作时,系统提示 Checkpoint file ./outputs/model.pt.ep0 not found

2. 问题原因分析

从日志中可以看出,问题的核心在于 检查点文件的删除与使用之间的冲突。以下是可能的原因:

(1)检查点清理策略

  • 在深度学习训练中,为了节省存储空间,通常会设置一个检查点清理策略,例如只保留最近的若干个检查点文件,或者仅保留最佳模型文件。
  • 在您的日志中,Delete: ./outputs/model.pt.ep0 表明系统在某个时刻删除了 model.pt.ep0 文件。这可能是由于配置了自动清理策略,导致旧的检查点被移除。

(2)平均检查点的需求

  • 平均检查点是一种常见的模型优化技术,通过对多个检查点的权重进行平均,可以提升模型的鲁棒性和性能。
  • 然而,在执行平均操作时,系统需要访问所有指定的检查点文件。如果某些文件(如 model.pt.ep0)已被删除,则会导致文件未找到的错误。

(3)时间顺序冲突

  • 日志显示,model.pt.ep0 被删除后,系统立即尝试对其进行平均操作。这种时间顺序上的冲突表明,检查点清理逻辑与平均操作逻辑之间缺乏协调。

3. 解决方案

为了避免类似问题的发生,您可以采取以下措施:

(1)调整检查点清理策略

  • 检查训练脚本中的检查点清理逻辑,确保在执行平均操作之前,不会删除所需的检查点文件。
  • 如果使用的是 modelscope-funasr 提供的默认脚本,可以在配置文件中调整相关参数。例如:
    # 示例:保留更多检查点文件
    checkpoint_config = dict(max_keep_ckpts=10)  # 保留最近的10个检查点
    

(2)延迟删除操作

  • 修改代码逻辑,确保在完成所有检查点相关的操作(如平均、评估等)之后,再执行删除操作。例如:
    # 示例:延迟删除检查点
    if current_epoch > max_epochs:
      delete_old_checkpoints()
    

(3)手动备份关键检查点

  • 在训练过程中,手动备份重要的检查点文件(如 model.pt.best 和用于平均的检查点),以防止意外删除。例如:
    cp ./outputs/model.pt.ep0 ./backup/model.pt.ep0
    

(4)调试与验证

  • 在修改代码或配置后,重新运行训练任务,并观察日志输出,确保问题已解决。

4. 总结

上述日志问题的根本原因是 检查点文件的删除与使用之间的冲突。通过调整检查点清理策略、延迟删除操作或手动备份关键文件,可以有效避免此类问题的发生。

如果您需要进一步的帮助,请提供更多上下文信息(如训练脚本或配置文件),以便更精确地定位问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

包含命名实体识别、文本分类、分词、关系抽取、问答、推理、文本摘要、情感分析、机器翻译等多个领域

热门讨论

热门文章

还有其他疑问?
咨询AI助理