返回 AI 基础设施 思维导图
中文·English
🖥️ AI 基础设施ID: checkpoint-resume

检查点与故障恢复

Checkpointing & Recovery
🎯核心定义
检查点 = 训练状态的完整快照,让千卡训练在故障(节点宕机 / OOM / 断电)后从最近一步续跑,而不是从头重来。必须保存: ① 模型权重;② 优化器状态——Adam 的 mtm_tvtv_t 一阶二阶动量与 FP32 主权重副本(只存权重无法无损续训,动量与学习率进度丢失会导致恢复后 loss 波动);③ 进度——epoch/step 计数与学习率调度器步数;④ 随机性——每 rank 的 RNG 状态(权重初始化之外还有 data shuffle);⑤ 数据游标——DataLoader 的分片边界。碎片保存(Sharded checkpoint): 大模型单文件慢写易坏(70B FP16 单文件 140 GB,分钟级落盘),HF safetensors 把权重切多分片 + index.json 索引,支持并行写、mmap 零拷贝读,且不用 pickle、无反序列化任意代码执行风险;ZeRO-3/FSDP 训练中参数本就分片,每 rank 只保存自己的分片 16Ψ/Nd16\Psi/N_d,恢复时逐 rank 读回(或先 All-Gather 拼全量导出单文件)。异步保存: 同步保存会 stop-the-world(训练暂停等落盘),异步保存先把一致快照从 GPU 拷贝到 CPU 内存(需 copy-on-write / 版本戳防与后续更新互相踩),再交给后台线程/独立进程写盘,训练不中断。断点续训: 恢复 = 重建优化器状态 + 重置 epoch/step 与 RNG + 恢复 shuffle 顺序与数据切分,ZeRO-3 要求每个 rank 读回自己的分片。训练稳定性: 与保存联动——loss/梯度尖刺(gradient spike)时回滚到上一个“好检查点”(last-good)、降 LR 或跳过异常 batch;保存频率权衡: 太密则 IO 开销吃掉吞吐,太疏则一次故障损失大,常用时间/步数阈值 + 每 epoch 保存候选检查点。
💡使用场景
面试常问“checkpoint 里存什么、为什么只存权重不行”“HF sharded/safetensors 解决什么问题”“异步保存怎么做一致快照”“断点续训与 loss 尖刺回滚”。
解决的核心痛点
千卡训练单次故障概率随规模不可忽略(MTBF 缩短),无检查点则数天算力归零;碎片 + 异步保存把保存开销从“分钟级停机”压到后台异步、训练吞吐几乎无损,续训从“重新预热数小时”降到分钟级;配合 last-good 回滚与尖刺检测,训练系统对硬件故障与数值发散都具备可恢复性。
🎯5 个高频面试考点 (Exam Points)
1
完整列出 checkpoint 必须保存的状态(权重、Adam mtm_t/vtv_t、step/epoch 与 LR 调度、RNG、DataLoader 游标),并解释为什么只存权重会导致恢复后 loss 波动(优化器状态与学习率进度丢失)。
2
碎片保存解决什么: 70B FP16 单文件 140 GB 分钟级落盘且易损坏;HF safetensors sharded 如何用 index.json + 多分片并行写 + mmap 零拷贝读解决,为什么比 pickle(.bin)安全。
3
异步保存原理: 为什么同步保存必须 stop-the-world(权重持续变化、无法直接后台写);异步保存如何拿一致快照(GPU→CPU 拷贝 + copy-on-write/版本戳 + 后台落盘)以及权衡。
4
ZeRO-3/FSDP 分片训练下如何保存与恢复: 每 rank 只存自己的分片 16Ψ/Nd16\Psi/N_d,恢复时逐 rank 读回(或先 gather 拼全量导出);续训时 RNG 与 shuffle 为何必须一并恢复。
5
训练稳定性: loss/梯度尖刺如何检测与应对(回滚 last-good 检查点、降 LR、跳过异常 batch),保存频率如何权衡(IO 开销 vs 故障损失),结合每 epoch 候选检查点给出策略。
📖 关联深度指南:📄 mlops-and-testing
更新于 2026-08-12
🎯
检验攻克程度:针对「检查点与故障恢复」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点训练框架与 Profiling下一个知识点KV Cache 与 PagedAttention

🔗 更多 AI 基础设施 知识点卡片

激活显存估算Agent 运行时(跨模块)弹性伸缩与成本优化集群调度 Ray/K8s