最近在跟一个教程用LoRA微调Llama-3-8B,做中文法律问答。数据集是网上爬的几千条问答对,清洗过,长度都在512以内。用的transformers+peft,LoRA rank=8,alpha=16,学习率设了2e-4,跑了3个epoch。结果训练loss降到1.2左右,但推理时模型输出全是重复的“嗯嗯嗯”或者乱码,偶尔蹦出几个英文单词。我把学习率降到5e-5重新跑,loss降到0.9,可输出还是不对劲,像在背训练集里的片段拼凑。我怀疑是不是中文分词没处理好,或者是base model本身英文占比太高?有没有大佬遇到过类似情况,一般先排查数据还是调参?
楼主
20天前
用LoRA微调LLaMA-3后输出全是乱码,是学习率太高还是数据问题?
请 登录 后发表回复
全部回复
共 22 条
2楼
2天前
loss降到1.2但输出崩了,大概率不是学习率的事,更像是数据格式或者target模块没设对。你检查下训练时labels是不是只对答案部分算loss?如果连问题带答案一起算,模型学出来的就是拼接逻辑,推理时自然乱。另外几千条数据3个epoch可能过拟合了,loss低不代表生成质量好。建议先拿20条训练样本做推理对比,看是不是在复读训练集,如果是就减epoch或者加dropout。
3楼
4小时前
重复“嗯嗯嗯”这种一般是训练数据里有大量类似短回复,模型学到了复制模式。先别急着调参,拿几条训练样本手动推理看看,排除下tokenizer是不是把中文切碎了。另外LoRA的target_modules确认下有没有覆盖到q_proj和v_proj,只挂部分层的话中文能力基本激活不起来。我上次用alpaca格式模板,中文任务不加eos token就老出这毛病。