模型检查点是什么?训练保存、继续训练与发布版本
说明检查点中模型权重与优化器状态的区别,通过中断训练例子解释恢复条件,并列出只推理与继续训练时各自需要核对的文件。
先理解这个概念
模型检查点是训练过程中保存的一份状态快照,通常包含模型权重,也可能包含优化器状态和训练进度。它能用于恢复训练或挑选模型版本,但具体保存内容取决于框架配置。只有权重文件,不代表能从原来的训练步骤完整继续;文件名写着best,也不证明它适合所有实际任务。
保存权重与保存完整训练状态有别
PyTorch允许保存模型的state_dict,也说明了通用检查点应包含优化器等状态。前者常用于加载已学到的参数,后者能支持更完整的恢复。实际需要哪些字段,应以训练脚本为准,不能仅按文件后缀判断。
例如长任务运行到一半中断,加载权重以后若重新初始化优化器,接下来的更新可能不同于原运行。还需记录数据顺序和随机状态等条件,才有机会接近原过程。保存了一个文件,不等于已经验证能够恢复。
继续训练与单纯推理准备不同文件
只进行文本生成时,通常还要匹配模型配置与分词器,不能把权重单独交给任意运行程序。继续训练则应检查框架是否保存所需状态。Transformers提供从检查点恢复的接口,具体恢复范围仍受保存选项影响。
若更换了模型结构或词表,旧权重未必能够直接加载。错误信息中的缺失字段和形状不匹配值得逐项检查,不能为了让程序启动就忽略全部告警。加载成功以后仍要运行最小输入,确认实际输出符合预期。
选择版本应保留评测和恢复记录
训练中间保存的版本未必优于前一个。选择所谓最佳检查点时,需要说明使用的评测集和指标,且保留独立任务检查。某项验证损失最低,不代表事实准确性或部署延迟也同时达到最好,不能把版本标签扩成全面结论。
实用的恢复核查包括读取文件、加载匹配配置,再确认训练步骤是否接续。本文解释文件作用,没有执行训练恢复实验。备份时保存版本标识和必要配置,避免只留下几个同名权重,后来无法对应到具体训练条件。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。