训练一上大模型就 OOM,别先只会调 batch size:我在 RTX 3090 上把 activation checkpointing 的 3 条路都跑了一遍
训练一上大模型就 OOM,别先只会调 batch size:我在 RTX 3090 上把 activation checkpointing 的 3 条路都跑了一遍很多人一遇到训练 OOM,第一反应就是把batch_size=8改成4,再改成2,最后把吞吐砍到自己都不想看。但我在 RTX 3090 上把同一个小型 Transformer 分别按不开 checkpoint、隔层 checkpoint、全量 checkpoint 跑完后发现:真正更值得先回答的,不是“要不要开”,而是你到底在用它换哪一层内存,又愿意多付出多少重算时间。如果你最近在做 SFT、长序列训练、视觉 encoder 微调,或者面试里被问到“训练 OOM 怎么排查”,这篇文章最应该带走的不是一句“gradient checkpointing 能省显存”,而是这套更实用的判断顺序:先分清你卡的是权重、优化器状态还是激活;再决定 checkpoint 是默认起点、补救手段,还是根本不该先动的旋钮。1. 先把名字讲清:activation checkpointing 和 gradient checkpointing 经常说的是同一件事这两个词在社区里经常被混用,尤其是在 PyTorch 和 Hugging Fac