返回 S01~S90 教材库
S19 · 总 Day 109教材已备 ≠ 学习已完成

S19:Memory、Communication、Throughput、Checkpoint 与恢复

训练系统效率与可恢复性由内存放置、通信等待、有效吞吐和 checkpoint 策略共同决定,单独优化某一项可能把瓶颈移到另一层。

2026-12-11W3知识连接、checkpoint、failurerecovery

内容类型:预习教材(不代表已完成)
日期:2026-12-11
阶段:P2 · AI Systems Engineering 90
总路线:Day 109 / 360
周次 / 节奏:W3 · 周五知识整理
状态:教材已备;学习未完成
主题:W3 知识连接、checkpoint、failure recovery

一句话定义

训练系统效率与可恢复性由内存放置、通信等待、有效吞吐和 checkpoint 策略共同决定,单独优化某一项可能把瓶颈移到另一层。

学习目标

  1. 能把本周内存、并行、collective 与 checkpoint 画进同一 step/run 时间线。
  2. 能区分 samples/s、tokens/s、model FLOP utilization 与 time-to-train。
  3. 能计算 checkpoint interval 在写入开销和失败重算之间的取舍。
  4. 能解释恢复所需的模型、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 文件写完不等于可恢复。

最小练习或观察步骤

  1. 画一条训练 step 时间线,标 compute、collective、input wait 与 checkpoint。
  2. 为一个假想作业设 step time、每步 tokens、checkpoint 写入时间和 interval,计算平均摊销。
  3. 假设在两个 checkpoint 中间失败,算最好、最坏和平均丢失步数。
  4. 列续训必须恢复的状态,并标注只存模型会遗漏什么。
  5. 写本周最多三个未清楚点,不建立评分或补考。

常见误区与边界

  • 用 GPU utilization 直接代表 useful throughput。
  • Checkpoint 只保存 weights,却声称可无缝续训。
  • 只测写入速度,不实际考虑读取、reshard 与数据 offset。
  • 增加 checkpoint 频率却不计算 I/O 干扰。
  • 周总结追求覆盖所有并行算法,忽略已形成的核心连接。

系统场景连接

云训练会遇到抢占、节点故障和共享存储拥塞。平台 SLO 不应只写“checkpoint 每 N 步”,还要理解预计丢失工作和恢复时间。Artifact registry 接收的最终模型与训练 checkpoint 也应区分生命周期:前者服务发布,后者服务恢复,保留和访问策略不同。

自检问题

  1. Tokens/s 在什么情况下仍会高估有效进度?
  2. 精确续训需要哪些模型外状态?
  3. Checkpoint interval 怎样影响正常开销和故障损失?
  4. 为什么写出 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 摊销与丢失工作计算:
  • 续训状态清单:
  • 三个以内薄弱点:
  • 本周最重要的系统连接:
重点主线 · H01 · 任务契约与上下文架构本周配套机制实验 · W3 · 分布式训练:先算内存,再谈并行 →详细讲义、离线示例与源码;按需要选读,不新增必交任务。
本页是未来 P2 的预习教材。等 P1 完成并正式进入 P2 后,再填写真实理解、练习结果和不确定项;现在阅读不会改变P1 唯一进度账本