Skip to content

04. Checkpointing 与 Offload | Checkpointing and Offload

页面目标

本页比较两种常见的显存策略:用重算换空间,以及用搬运换空间。

本页的输出是策略边界:明确 checkpointing 消除的是哪类保存,offload 改变的是状态驻留位置,以及算力、带宽和 wall time 各自承担什么代价。

核心问题

1. checkpointing 做了什么

它不保存所有激活,而是只保存少量检查点。反向传播需要时,再从检查点重新计算中间段。

2. offload 做了什么

它把部分状态从 GPU 搬到别的存储层,比如 CPU 或更慢的内存层。

3. 它们有什么区别

checkpointing 是重算,offload 是搬运。两者都在省 GPU 显存,但代价来源不同。

机制分解

checkpointing / offload 不是同一个维度的方案:

  • checkpointing 改变的是“前向状态要不要保留”
  • offload 改变的是“状态保留在哪里”
  • 两者都能省 GPU 显存,但一个吃算力,一个吃带宽

因此需要先区分它们的作用边界:

  • 如果显存不够但算力还富余,checkpointing 往往更直接
  • 如果显存特别紧但重算已经太贵,offload 才更有价值
  • 如果带宽太弱,offload 可能把瓶颈从显存换成传输

图册占位:Checkpointing 取舍图尚未生成,当前以本页的计算、显存和时间代价说明为准。

图册占位:Offload 取舍图尚未生成,当前以本页的搬运、显存和吞吐代价说明为准。

选择前先确认压力来源

如果峰值主要来自 activation,checkpointing 才有直接作用;如果状态可以安全地放到 CPU 且 PCIe / NVLink 传输仍可接受,offload 才值得尝试;如果峰值来自参数、梯度或 optimizer state,应转向 dtype、LoRA、ZeRO 等方案。小 workload 可能看不出明显节省,不能用一次 CPU 运行推断 GPU 收益。实际策略比较由 Part 02 · 76 激活检查点与 Offload 对比负责。

典型误区

  • checkpointing 省的是激活显存,不是参数显存和优化器状态显存。
  • offload 不是 checkpointing 的另一种说法。
  • 是否开启这两类方案,不能只看显存,还要看 wall time 和带宽代价。

对应来源

经典论文

文献读它的理由
Training Deep Nets with Sublinear Memory Costcheckpointing 的经典起点。
ZeRO: Memory Optimizations Toward Training Trillion Parameter Modelsoffload / partition / memory hierarchy 的系统起点。
ZeRO-Offload: Democratizing Billion-Scale Model Training看 CPU offload 如何被纳入训练系统。
ZeRO-Infinity: Breaking the GPU Memory Wall for Extreme Scale Deep Learning看 GPU / CPU / NVMe 分层如何继续扩展 offload 路线。

工程资料

资料读它的理由
torch.utils.checkpoint看哪些张量可以通过重算从账本里拿掉。

阅读建议

  • 先把 checkpointing 和 offload 区分开。
  • 这页的重点是代价模型,不是 API 语法。

进入下一页

把策略带来的显存和时间变化带入 05 梯度累积、训练闭环与 Profiling,统一 effective batch、step time 和验证口径。

Released under the MIT License.