最近用LoRA微调了一个7B模型做垂直领域的问答,训练集大概两千条,loss降得挺正常的。但实际推理的时候发现,如果Prompt里只写简单指令,效果还不如我直接在base模型上加三四个few-shot示例来得稳。有点困惑,微调不是应该让模型学会任务格式了吗?为什么感觉微调后反而对Prompt更敏感了,稍微换个问法就答偏。想问下大家,微调之后Prompt到底该怎么写,还需要保留few-shot吗,还是说我微调的数据量不够?
楼主
28天前
微调后的模型还需要在Prompt里加few-shot示例吗?
请 登录 后发表回复
全部回复
共 2 条
2楼
28天前
两千条数据确实偏少,模型可能只是学了表面格式没真学会任务。我微调后一般还会留一两个示例兜底。
3楼
15天前
两千条数据做LoRA微调,这个量级其实挺尴尬的,模型能学到一些领域知识的表面模式,但很难真正把任务格式刻进权重里。你观察到的现象我觉得挺正常的,微调更多是在调整模型的输出分布偏向,而不是像预训练那样重塑底层能力,所以它对prompt的鲁棒性提升有限。我自己做类似事情的时候也发现,微调后的模型如果prompt写得太随意,确实容易跑偏,反倒是base模型加几个精心挑的few-shot能靠上下文把格式约束住。关键问题可能不在数据量本身,而在于你训练数据的prompt多样性够不够,如果两千条都是同一种问法同一个模板,模型就只学会了那一种触发方式。我一般会保留一两个few-shot示例在prompt里,尤其是格式要求严格的任务,相当于给微调后的模型一个锚点,成本也不高。另外你可以试试在训练集里故意加入不同措辞的问法,让模型学会忽略表面表述差异,这个比单纯加数据量管用。