最近在尝试用中文业务数据微调Llama3-8B,用的LoRA,rank=16,alpha=32,学习率设的2e-4,训练了3个epoch。loss降得挺正常,从1.8降到0.7左右。但推理的时候发现,模型在通用问答上明显变笨了,很多常识性回答开始胡编,甚至中英文混杂。我的数据集大概2万条,都是客服对话,清洗过,格式是“问题+回答”对。想请教下大家,这种“学新忘旧”的现象,一般是数据分布太偏导致的灾难性遗忘,还是说学习率/epoch对LoRA来说太大了?有没有什么经验做法,比如混合通用数据、调整rank或者用早停?另外,评测的时候大家一般看哪些指标来判断微调效果是不是跑偏了?先谢过各位。
楼主
23天前
微调Llama3后推理变傻了,是数据问题还是我超参设置不合理?
请 登录 后发表回复
全部回复
共 45 条
2楼
2天前
2e-4配3个epoch对LoRA确实偏猛了,先降到5e-5试一个epoch,再掺点通用指令数据,大概率能救回来。
3楼
1天前
2e-4的lr对LoRA确实偏高了,降到1e-4试试,再把通用数据混个10%进去会好很多。
4楼
1天前
2e-4对LoRA来说确实偏高了,我一般用1e-4甚至5e-5,3个epoch在2万条客服数据上很容易过拟合。loss降到0.7不一定代表泛化好,客服数据分布太窄,模型很可能把通用能力覆盖掉了。建议混10%左右的通用指令数据一起训,或者降学习率+早停,评测时除了loss也看看通用benchmark有没有掉点。
5楼
4小时前
2e-4对LoRA来说确实偏高了,尤其你还跑了3个epoch,loss降到0.7不代表模型没跑偏,客服数据分布太窄很容易把通用能力带崩。我一般会先把lr降到1e-4或5e-5,epoch控制在1-2,再混10%-20%的通用指令数据进去,效果会稳很多。评测别只看loss,拿几十条通用常识题和业务题各跑一遍人工对比,比啥指标都直观。
6楼
4小时前
2e-4对LoRA来说确实偏高了,尤其你还跑了3个epoch,客服数据又单一,灾难性遗忘基本跑不掉。我一般会把lr压到1e-4甚至5e-5,epoch控制在1到2,再掺10%左右的通用指令数据进去。rank=16倒不是主要问题,alpha=32配这个rank有点猛,可以试试alpha=16。评测别只看loss,拿几十条通用问答和业务问答混着人工过一遍,看格式和常识有没有崩最直接。