8bit 优化器 + 梯度检查点 + 极小 batch 什么意思
一、梯度检查点 gradient_checkpointing=True
1. 原理
模型正向计算时会保存全部中间计算结果,反向传播求梯度时要用,这部分缓存极其占显存。
开启梯度检查点后:正向计算不保存全部中间缓存,反向传播需要时,重新再算一遍。
2. 代价与收益
收益:显存直接减少 40%~50%,是最核心的显存节省手段;
代价:CPU/GPU 重复计算,训练速度变慢 20%~30%;
3. 你的场景作用
2~3B 全参数训练,不开这个直接爆显存;开启后才能腾出空间放下梯度、优化器数据。
二、8bit 优化器(8-bit AdamW)
1. 普通 FP32 AdamW 的显存问题
全参数训练三大显存块:模型权重、梯度、优化器缓存(Adam 维护两组动量参数,和模型参数一样大)。
标准 Adam 用 32 位浮点存动量,占用显存巨大。
2. 8bit 优化器作用
把优化器内部的动量、方差数据压缩为 8 位整数存储,优化器显存占用直接降低 75%。
3. 限制
轻微损失精度,loss 会小幅震荡,不适合对精度极致苛刻的场景;
V100 架构完美兼容,新款消费卡也支持;
4. 必要性
2~3B 全量训练不用 8bit 优化器,优化器缓存就能塞满 32G 显存。
三、极小 batch(per_device_train_batch_size=1)
1. batch 含义
batch 是单次丢进 GPU 并行计算的样本数量(对话 / 文本 / 图片条数)。
batch 越大,单次并行处理的数据越多,显存占用线性上升。
2. 极小 batch = 每次只训练 1 条样本
设置 batc
