最近在跑一个中文对话模型的LoRA微调,数据集是自己整理的约2万条客服问答对,用的8张A100,学习率设的2e-4,rank=8。训练了3个epoch后,loss降到0.8左右,但实际测试发现:原本能答对的基础常识题(比如“中国的首都是哪里”)开始胡言乱语,反而领域内的问题答得还行。我试过调低学习率到1e-4,也加了warmup,效果还是不行。是不是LoRA的rank设太小了?或者训练轮次太多导致灾难性遗忘?有人遇到过类似情况吗?有没有什么经验可以分享?
最近在跑一个中文对话模型的LoRA微调,数据集是自己整理的约2万条客服问答对,用的8张A100,学习率设的2e-4,rank=8。训练了3个epoch后,loss降到0.8左右,但实际测试发现:原本能答对的基础常识题(比如“中国的首都是哪里”)开始胡言乱语,反而领域内的问题答得还行。我试过调低学习率到1e-4,也加了warmup,效果还是不行。是不是LoRA的rank设太小了?或者训练轮次太多导致灾难性遗忘?有人遇到过类似情况吗?有没有什么经验可以分享?
这现象太典型了,LoRA微调本质就是在原模型权重上加了个低秩偏移,你rank=8在2万条客服数据上确实可能欠拟合,但更大概率是学习率还是偏高导致基础能力被冲淡。我建议试试把rank提到16或32,同时学习率降到5e-5左右,另外把客服数据里掺20%的通用语料混合训练,能明显缓解灾难性遗忘。对了,你那个loss降到0.8其实没太大参考价值,客服问答这种任务loss本来就不该压太低,重点看验证集上的BLEU和准确率。