S19:Memory、Communication、Throughput、Checkpoint 与恢复
训练系统效率与可恢复性由内存放置、通信等待、有效吞吐和 checkpoint 策略共同决定,单独优化某一项可能把瓶颈移到另一层。
内容类型:预习教材(不代表已完成)
日期:2026-12-11
阶段:P2 · AI Systems Engineering 90
总路线:Day 109 / 360
周次 / 节奏:W3 · 周五知识整理
状态:教材已备;学习未完成
主题:W3 知识连接、checkpoint、failure recovery
一句话定义
训练系统效率与可恢复性由内存放置、通信等待、有效吞吐和 checkpoint 策略共同决定,单独优化某一项可能把瓶颈移到另一层。
学习目标
- 能把本周内存、并行、collective 与 checkpoint 画进同一 step/run 时间线。
- 能区分 samples/s、tokens/s、model FLOP utilization 与 time-to-train。
- 能计算 checkpoint interval 在写入开销和失败重算之间的取舍。
- 能解释恢复所需的模型、optimizer、scheduler、RNG 与数据位置状态。
核心知识
Throughput 必须说明单位和有效工作。不同序列长度用 samples/s 比较会误导;tokens/s 更可比,但 padding、丢弃样本和无效重算仍可能抬高表面值。最终目标常是达到某训练 token/质量所需的 wall-clock 与成本,而不是单步最快。
Checkpoint 保存的不仅是模型参数。要精确恢复训练,还需要 optimizer state、学习率调度、global step、随机数状态、数据 sampler/offset、混合精度 scaler,以及并行分片元数据。只存模型可用于推理或重新开始优化,却不是原地续训。
Checkpoint 太频繁会占用 I/O、阻塞计算并增加存储;太稀疏会在故障时丢失更多工作。异步写入可隐藏部分延迟,但需要 snapshot 一致性与额外内存。分片 checkpoint 降低单节点压力,却增加元数据、world-size 变化与恢复协调。
机制与推导
Step time 可拆为:
[ T_{step}=T_{compute}+T_{exposed_comm}+T_{input}+T_{imbalance}+T_{checkpoint}/K ]
其中每 K 步 checkpoint 一次。若故障近似均匀发生,故障后平均重算约半个 checkpoint interval。经典直觉是在 checkpoint 成本 C 与平均故障间隔 MTBF 间取舍;近似最优时间间隔常与 sqrt(2C×MTBF) 同阶,但真实训练还受存储拥塞与作业抢占影响。
有效 token 吞吐应排除 padding 或无效样本:useful_tokens / wall_time。恢复时间 RTO 又包含读取、重建 process group、reshard、数据定位和 warmup,checkpoint 文件写完不等于可恢复。
最小练习或观察步骤
- 画一条训练 step 时间线,标 compute、collective、input wait 与 checkpoint。
- 为一个假想作业设 step time、每步 tokens、checkpoint 写入时间和 interval,计算平均摊销。
- 假设在两个 checkpoint 中间失败,算最好、最坏和平均丢失步数。
- 列续训必须恢复的状态,并标注只存模型会遗漏什么。
- 写本周最多三个未清楚点,不建立评分或补考。
常见误区与边界
- 用 GPU utilization 直接代表 useful throughput。
- Checkpoint 只保存 weights,却声称可无缝续训。
- 只测写入速度,不实际考虑读取、reshard 与数据 offset。
- 增加 checkpoint 频率却不计算 I/O 干扰。
- 周总结追求覆盖所有并行算法,忽略已形成的核心连接。
系统场景连接
云训练会遇到抢占、节点故障和共享存储拥塞。平台 SLO 不应只写“checkpoint 每 N 步”,还要理解预计丢失工作和恢复时间。Artifact registry 接收的最终模型与训练 checkpoint 也应区分生命周期:前者服务发布,后者服务恢复,保留和访问策略不同。
自检问题
- Tokens/s 在什么情况下仍会高估有效进度?
- 精确续训需要哪些模型外状态?
- Checkpoint interval 怎样影响正常开销和故障损失?
- 为什么写出 checkpoint 不等于验证可恢复?
专业课程对齐
- 阅读 CMU Deep Learning Systems 的训练执行与系统优化课程,重点把 operator/communication timeline 映射到 step time 分解。
- 阅读 PyTorch Distributed Checkpoint 官方文档 的 state dict、sharded save/load 和 planner 概念,辨认恢复需要的状态边界。
- 阅读 MIT 6.5840 的 fault tolerance 与 replicated state machine 主线,比较训练 checkpoint 恢复与普通服务复制的共同问题和差异。
深入学习提示
用“一次正常 step、一次 checkpoint step、一次故障恢复”三条时间线学习。每条线标出谁持有状态、何时同步、哪里可能等待。阅读 checkpoint API 时不要只看 save 调用,追踪 state dict 如何分片、metadata 如何保存、load 时 world size 变化会怎样。最后写一个“文件存在但不能恢复”的反例。
学后填写区
- 我的 step 时间线:
- checkpoint 摊销与丢失工作计算:
- 续训状态清单:
- 三个以内薄弱点:
- 本周最重要的系统连接: