【大模型问题】ms-swift微调时,显存持续增长原因分析与解决方案
问题原因分析
-
缺少梯度检查点(Gradient Checkpointing)
- 未启用梯度检查点会导致完整的前向传播激活值保存在显存中
- 这是显存增长的主要因素
-
未使用混合精度训练
- 缺少
--dtype
参数,默认使用 FP32 训练 - FP32 比 FP16/BF16 多占用一倍显存
- 缺少
-
LoRA 目标模块设置问题
--target_modules all-linear
包含过多模块- VL 模型的视觉编码器部分有大量线性层
-
未限制最大样本长度
- 缺少
--max_length
参数 - 长文本样本会导致显存占用不稳定
- 缺少
-
缺少梯度累积控制
- 未设置梯度累积步数
- 每个 batch 都立即更新,效率低且显存波动大
-
未冻结视觉编码器参数
- 虽然设置了
--freeze_vit true
&#x
- 虽然设置了