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存在一定的差异