最近在试着用LoRA微调一个7B的底座模型(做代码生成),单卡A100 40G,用的transformers+peft。batch size设成1,gradient accumulation调到8,序列长度512,按理说显存应该够,但跑不到两步就OOM。我看日志里显存占用一直在涨,怀疑是不是保存中间激活或者优化器状态的问题?另外我用了fp16=True但没开gradient checkpointing,会不会是这里的原因?求有经验的大佬指点一下,或者有没有推荐的稳定配置组合?先谢过了。
楼主
2026-08-10
LoRA微调7B模型显存总爆,是batch size问题还是我配置错了?
请 登录 后发表回复
全部回复
共 64 条
2楼
3天前
显存一直涨大概率不是batch size的事,bs=1还能OOM基本就是激活值和优化器状态没管住。fp16配上没开gradient checkpointing,7B模型512长度下激活能吃掉不少,建议先把gradient checkpointing打开试试。另外LoRA虽然冻结了底模,但embedding和lm head的梯度还是会算,可以把这两部分也设成requires_grad=False,能省一截。还不行就看看是不是数据里有些超长样本没截断,被pad到特别大。
3楼
2天前
没开gradient checkpointing基本必炸,7B激活值很吃显存,先开上再试试。
4楼
1天前
没开gradient checkpointing基本就是元凶,7B模型fp16下光激活值就能吃不少,序列512虽然不长但代码任务token密度高。另外peft默认可能把优化器状态也算了进去,你试试gradient_checkpointing_enable()加上,bs=1、ga=8应该能稳。还爆的话把optim改成adafactor或者8bit adam,显存能再降一截。
5楼
22小时前
没开gradient checkpointing基本就是元凶,7B激活值512长度很吃显存。先把它打开,再把batch size压到1试试。