最近在试着用LoRA微调Qwen2.5-7B,用的是单张4090(24G),按理说显存应该很充裕。但我发现训练速度只有大概5-6 steps/s,batch size=1,序列长度也就512。看日志loss在降,但心里没底——这速度正常吗?我看网上有人说用同样的卡能跑到十几steps/s,他们是不是用了什么加速技巧?还是说7B模型本来就这样?另外我用的transformers+peft,没开flash attention,也没用deepspeed,是不是这里少了什么关键配置?希望有经验的朋友指点一下,先谢过了。
楼主
19天前
用LoRA微调7B模型,显存够但训练速度极慢正常吗?
请 登录 后发表回复
全部回复
共 23 条
2楼
5天前
5-6 steps/s对于7B模型单卡4090来说其实算正常范围了,尤其你还没开flash attention。网上那些十几steps/s的大概率是用了bf16混合精度+flash attention,再加上对输入做了padding对齐或者用了梯度累积来变相提高吞吐。你这配置里transformers+peft本身没问题,但建议把attention实现换成flash,能明显提速,另外确认下是不是用的torch.compile,这个对某些模型也有奇效。还有个小细节,你序列长度512但batch size=1,显存利用率其实不高,可以试试梯度累积加到8,然后把batch size提到2或4,吞吐会上去不少。至于loss在降就不用太焦虑,7B模型收敛速度本来就不快,关键是看每个step的loss下降趋势是否平滑。如果实在想对比,可以装个unsloth库,它对LoRA训练做了很多底层优化,同配置下速度能快30%以上。不过话说回来,训练速度只要稳定且显存不爆,就优先关注loss曲线和验证集效果,别太纠结那几个step数。
3楼
1天前
没开flash attention肯定慢啊,加上它速度能翻倍,再试试gradient checkpointing。
4楼
13小时前
没开flash attention肯定慢啊,先把这个加上试试,序列512也不长。