玩过带存档的游戏就知道:打关底前先存档,失败了读档重来,进度一点不丢。训练 AI 模型时干的正是同一件事——那个「存档」,行话叫检查点(checkpoint)。训练动辄跑几小时到几周,中途断电、显存不足、任务被杀,没有存档就得从头再来。
训练为什么非存档不可
模型训练是一步步迭代出来的:每一轮,参数都朝着更好的方向微调一点。这个过程怕中断,中途断了不存档,之前算的全白费。检查点按固定间隔(比如每几百步)把当前状态完整落盘,中断后从最近的存档读回来接着算,前面的功夫一分不浪费。
另一个用处是「回退」。训练有时会越练越差,比如学习率设得不合适,模型后半程表现不升反降。有了沿途的存档,就可以退回某个更早的状态换个策略重来,而不必推倒整场训练。
存档频率是个取舍:存得太密,写盘占用训练时间;存得太稀,一次中断就丢掉大量进度。常见做法是按固定步数存,再额外保留最近几份、旧的自动清掉,别让存档把磁盘塞满。
一个存档里装了哪些东西
比游戏存档复杂一点,检查点通常包含三部分:当前的全部权重(模型学到哪了)、优化器状态(训练脚步的惯性)、进度信息(走到第几步)。少了优化器状态,恢复训练虽然能继续但状态不完整,这是新手常踩的坑。
| 组成部分 | 装的是什么 | 缺了会怎样 |
|---|---|---|
| 权重 | 模型当前学到的全部参数 | 训练成果无从恢复 |
| 优化器状态 | 训练脚步的惯性 | 能接着跑,但状态不完整 |
| 进度信息 | 训练走到了第几步 | 不知道从哪接续 |
这些存档的体积可观,权重加上优化器状态常常比最终发布文件大不少,保存格式多与训练框架一致,safetensors 就是常见的一种。所以发布页上会出现一种现象:推理用的模型文件是一份,训练续跑用的存档又大出一截——加载者各取所需,只想推理的人拿权重就够。
步数多不代表练得好
看到「第 10000 步检查点」,别急着觉得它比第 5000 步的强。存档只说明训练走到了哪一步,不代表那一版效果更好,练过头反而可能把训练数据背下来、遇到新问题不会变通。微调者的常规做法是沿途多存几个,最后挑验证效果好的那一版,步数只当坐标用。
挑出来的那版再整理成发布格式给用户下载,比如打包成 GGUF 单文件,或者以不同权重精度导出。开源项目常在发布页同时挂出多个存档的导出版,附上各自的评测结果,替使用者把这步挑选手续做掉。你在 ModelScope 上看到的开源模型,大多就是作者从若干存档里挑中的一版。
至于只想用 AI 的普通人——你每天在 DeepSeek、豆包里聊天时,背后早已是训练完、挑选完的成品,检查点这个概念与你隔着一整个训练流程,知道即可。
检查点要点速查
- 它存什么:权重、优化器状态、训练进度,三样齐全才能无缝续训。
- 它何时存:按固定步数间隔自动落盘,间隔太长断档损失大。
- 它怎么挑:发布时选验证效果好的一版,步数本身不是成绩。
记住一句:存档是保险,不是勋章。
存档留几个、能不能直接发出去
- 训练中断后一定要从最近的检查点恢复吗?:常规做法是就近恢复,也可以退回更早的存档换策略,看中断原因定。
- 检查点文件可以直接发布给人用吗?:技术上能加载,但它含优化器状态、体积大,发布前一般会整理精简。
- 微调小模型也需要存档吗?:建议要,哪怕只跑几十分钟,断了能续、练坏了能退,成本很低。


