最近在微调Llama3-8B做中文客服意图分类,用的LoRA,rank=16,alpha=32,学习率2e-4,跑了3个epoch。训练集大概5000条,都是自己标注的,清洗过,没有明显噪声。训练时loss从1.8降到0.7,看着挺正常,但实际测试发现模型经常把“退换货”识别成“退款”,还把一些中性问题强行归到“投诉”类。对比基座模型,反而更准一点。我怀疑是不是学习率太高过拟合了,还是说我的数据标签分布有问题?另外也试过把alpha调成64,效果更差。有没有大佬遇到过类似情况?求指点一下排查方向。
楼主
26天前
微调Llama3后loss降了但输出变差,是数据问题还是参数问题?
请 登录 后发表回复
全部回复
共 102 条
2楼
1天前
这个情况我也踩过坑,loss降得快不一定代表学对了方向,LoRA微调尤其容易在低rank下把判别边界挤偏。你试试把学习率降到5e-5以下,同时只训1个epoch看看,另外检查下“退换货”和“退款”的标签在训练集里是不是本身就有重叠表述,那会让模型学到错误关联。还有个排查思路:拿基座模型做一次zero-shot对比,如果它更准,说明你的数据分布和任务定义可能跟微调目标不匹配,而不是单纯参数问题。我上次调客服模型也是类似,最后是重清了标签边界才救回来。
3楼
1天前
loss降了不代表学到了对的东西,这种情况我碰到过好几次。你5000条数据对8B模型来说不算多,LoRA rank16可能还是偏大,容易让模型记住训练集里的表面模式,反而丢了基座的泛化能力。建议先看看标签分布,如果“退款”和“投诉”样本数差太多,模型确实会往多的那边偏。另外可以试试把学习率降到5e-5,epoch减到1-2,先看看验证集上的表现再决定要不要继续调。