激活检查点
也叫:Activation Checkpointing · Gradient Checkpointing · 梯度检查点
激活检查点释放部分前向中间张量,并在反向传播时重算,用更多计算时间换较低训练显存。
他们说
通过反向传播时重算中间激活来降低训练内存
老白翻译
前向时少存一些结果,反向时再算一遍。
它到底是什么
激活检查点只保存选定计算区段的输入,释放区段内部的中间张量。反向传播需要这些结果时,框架重新执行前向计算。
它省的是什么
它减少一次训练步骤中间激活占用的显存,用额外重算换空间。它不会减少模型参数,也不同于保存到磁盘的断点续训文件。
常见误解
检查点越多并不一定越好。重算区段过多会拖慢训练,随机状态或全局状态不一致还可能让梯度出错。
普通人怎么用
先用固定小批次比较开关前后的损失和梯度,再记录峰值显存、单步时间与吞吐,按结果调整分段。