[AI算法] LLM中LoRA的占用显存没有减少多少?
LoRA微调方法虽能减少参数数量,但显存占用仍较高,主要原因是计算图完整构建导致中间特征无法及时释放。LoRA输出特征图与原始模型大小相同,需参数融合送入后续计算。相比之下,torch.no_grad最节省显存(不构建计算图),requires_grad=False仅停止梯度回传,而eval()模式会影响BN/Dropout层行为。这些差异导致显存优化效果不如预期。
·
Lora为什么没有减少多少显存
- 在使用 PEFT(Parameter-Efficient Fine-Tuning) 方法(如 LoRA、IA³ 等)时,你可能会观察到:即使只微调了少量参数,模型的显存占用却比预期高很多。这通常是因为:
- lora的lora.linear输出的feature map和原始的是一样大小的,而且和原始的可能要通过参数设置来融合到一起,送到后面。
计算图(Autograd Graph)依然完整构建,导致中间 feature map 无法被及时释放。


几种Freeze的设置方式
torch.no_grad
- 不会产生计算图,这个更加节省显存
require_grad=False
- 不一定避免计算图,只是不申请空间放grad或者不回传grad了
eval()
- 梯度的设置上和require_grad类似,但是对于BN/Dropout的设置和training存在一定的差异
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)