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 取舍图

典型误区

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

对应来源

  • 19 Activation Checkpointing and Activation Offload
  • 42 Activation Offload

经典论文

文献读它的理由
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.