把LORA训练跑通不难,真正让人抓狂的是调参。同一个数据集,换几个参数跑出来可能就是两回事——一个过于泛化丢掉了细节,另一个又死死记住了背景噪声。这篇不谈理论推导,只说实战中那些踩过的坑和对应的解法。
LORA训练里,学习率直接影响稳定性和收敛速度。很多人照搬SD原模型微调的1e-5,结果训练步数才几百就崩掉了。实战经验是:对于大多LoRA,初始学习率建议在1e-4到8e-4之间搜索。更细一点,如果你用的是AdamW优化器,步数在2000以内可以试试5e-4,超过5000步建议降到2e-4以下。我自己的实践是偏好带余弦退火调度的AdamW,初始设为6e-4,配合1000步预热,能兼顾收敛速度和最终质量。
Rank控制着额外参数矩阵的秩,本质是决定你能学多少“新知识”。但很多人不知道的是,Rank和Alpha(也称为“缩放因子”)之间有一层微妙的联动。如果Alpha设得太高(比如等于Rank值的2倍以上),模型会把太多注意力放在新增的权重上,导致原本的base模型被大幅覆盖,出现“过曝”现象——生成结果像套了滤镜一样不自然。反过来,Alpha低于Rank值的0.5倍,新特征又学不进去。一个保守但有效的经验公式:Alpha = Rank × 0.5 ~ 1.0。比如Rank=64,Alpha设在48到80之间都算安全区域。
团队里常有人问“到底跑多少epoch才够”。我从来不靠固定数字,而是盯着loss曲线。理想的loss应该在前200步快速下降,然后进入一个缓降平台。如果loss在平台期后反而开始震荡或上升,那就是过拟合的警报。此时立即停止,保留前一个checkpoint。不少教程推荐重复用同一批数据跑10个epoch,但实际中,对于角色或风格类训练,2到5个epoch通常就足够,过长的训练只会让模型记住训练集里的异常纹理。
6GB显存的用户可能会纠结batch size只能设为1。别硬撑,batch=1时的梯度噪声很大,建议用梯度累积步数模拟较大batch。一般累积4步效果接近batch=4,再往上提升就不明显了。另外注意:学习率需要和有效batch size联动。如果从batch=4改为batch=1加累积4步,学习率最好按比例下降一些(比如除以2),否则容易炸毁loss。
最后说个冷门点:善用Resume功能。调参最怕跑了十几个小时发现参数不对,但你不能每次都从头开始。建议每500步保存一次平滑checkpoint,这样换学习率或微调Rank时可以基于上一个好的状态继续训练,省下大量时间。对了,如果你用的是DreamBooth方式训练LORA,注意不要和原始数据集里的正则化图像冲突——我见过有人把同一个人物在背景不同的照片里反复训练,结果模型学会了背后的墙壁纹路。调参没有银弹,多跑实验才能找到适合自己的配方。
参与讨论
暂无评论,快来发表你的观点吧!