最近在试着用Llama3.1 8B微调一个中文电商客服模型,数据集大概2万条多轮对话,用的Lora(r=16, alpha=32),跑了3个epoch。训练时loss从1.8降到0.9,但实际测试时发现模型经常把“退货政策”答成“发货时间”,甚至有时直接复读用户问题。我检查过模板,加了system prompt,也试过降低学习率到2e-4,还是不行。想问下各位大佬,这种情况是数据质量的问题,还是8B太小扛不住中文多轮任务?或者我该换用Qwen2.5-7B这类中文基座模型重新试?另外,评估时除了BLEU和ROUGE,有没有更靠谱的指标判断对话连贯性?先谢过各位了。
微调Llama3.1 8B做中文客服,loss降了但回复还是答非所问正常吗?
全部回复
共 70 条这情况太典型了,loss降了不代表模型真学到东西,LoRA微调很容易只顾着拟合训练集,尤其多轮对话里指令跟随能力跟不上,答非所问太正常。建议先检查数据里是不是有很多“退货政策”和“发货时间”混在一起的相似样本,或者某些轮次的回复本身就没对齐。8B做中文确实吃力,换Qwen2.5-7B大概率会好不少,毕竟基座语料优势在那儿。评估的话,我建议你试试给模型设几个固定场景,人工看它能不能坚持角色不跑偏,比BLEU靠谱多了,那玩意儿对对话任务基本没参考价值。
这情况太典型了,八成是数据里退货和发货的上下文太像,模型没学会区分,先查查标注质量吧。
我建议直接换Qwen2.5,中文场景下同参数效果真比llama3.1稳,别死磕。
这情况太典型了,loss降不代表模型真学会了任务,LoRA大概率是把模板和对话格式背下来了。中文多轮语义理解8B确实吃力,尤其电商这种实体和意图密集的场景,建议直接换Qwen2.5-7B,你会明显感觉“听懂人话”了。另外你可以试着拿20条真实用户问题做人工A/B测试,比BLEU靠谱多了,那玩意儿对生成式对话基本没参考价值。顺便检查下数据里是不是有大量重复问法,模型容易学成复读机。
loss掉到0.9但生成还是复读机,这太典型了,我怀疑你八成是数据里“问-答”对的太机械,模型根本没学会意图区分,反而把模板和停用词背下来了。建议你先抽几十条训练集看看回复里有没有“退货”和“发货”这类关键词混用的情况,大概率是标注一致性问题。另外8B跑中文多轮确实吃力,但换Qwen前可以先试试把system prompt里的角色描述改成更具体的行动指令,比如“当用户提到退货时,必须回复退货流程”,有时候效果立竿见影。评估连贯性的话,可以试试用GPT-4打分或者算意图命中率,比BLEU靠谱多了。
loss降了不代表学对了,这个loss大概率只是拟合了模板和语气词,中文客服这种任务对基座的语言习惯要求很高,llama3.1的中文语料占比本身就少,8B参数去硬扛多轮意图识别确实吃力。你不如先抽几十条训练集看看模型是不是在背答案,如果输入换个说法就废,那基本就是数据里意图覆盖太单一。换qwen2.5-7b是正道,中文预训练差距不是lora能补的,另外评估别只看bleu,试试人工打分维度比如“是否解决用户问题”和“是否保持上下文一致性”,哪怕抽100条也比自动指标靠谱。
数据干净度先查查,2万条里可能混着大量模板噪音,建议抽50条人工跑一遍看回复逻辑。
Qwen2.5-7B大概率更省心,中文客服场景真别跟英文基座死磕。
loss掉到0.9但实际对话崩,这个现象我太熟了,八成不是模型大小的问题,而是你数据本身和推理模板之间有“隐性裂缝”。我见过用7B模型做客服,数据干净的话,效果能吊打乱喂数据的13B,所以先别急着换基座。你检查下多轮对话里,助手回复是不是经常出现“知识库内容”和“闲聊内容”混在一起的情况?LoRA微调对这种风格混杂特别敏感,模型学到的可能是“生成流畅文本”而不是“遵循客服逻辑”。另外你试过在测试时把system prompt换成训练时完全一样的格式吗?有时候就差一个标点符号,模型行为就天翻地覆。至于评估指标,BLEU和ROUGE基本是看字面重合,对客服这种任务毫无意义,建议你抽200条测试集,人工标注“是否解决用户问题”和“是否涉及无关信息”,算个准确率都比那些自动指标靠谱。如果真想用自动指标,可以试试衡量“回复与上下文语义相似度”的BERTScore,但最好还是人工抽检。
loss能降到0.9说明模型确实在拟合数据,但答非所问大概率是数据本身的问题,比如对话里退货和发货的上下文太像,或者回复模板单一导致模型学串了。建议先抽几十条bad case看看是不是标签本身就有歧义,另外多轮对话的history截断策略也可能影响。Qwen2.5-7B做中文客服肯定更省心,但换模型前可以试试把system prompt里的角色约束写得更具体,比如明确“你是售后专员”而不是泛泛的“客服”。评估对话质量别只看BLEU,可以人工标注几个维度比如意图准确率和回复可执行性,或者用LLM-as-judge跑一批测试集,比ROUGE靠谱多了。
loss降不代表模型学会了对话逻辑,很可能只是在背模板。你这种答非所问的情况,八成是数据里多轮上下文没对齐,或者不同意图的回复混在一起了。建议先抽几十条测试样本人工看看,模型是不是把退货和发货的对话搞混了。Qwen2.5-7B中文底子确实好很多,换基座可能比继续调Llama更省事。评估连贯性可以试试用GPT-4打分或者看perplexity,BLEU/ROUGE对开放对话基本没啥参考价值。
loss降不代表模型学会了,很可能只是过拟合了数据里的表面模式。2万条多轮对话对客服场景来说其实偏少,而且退货和发货混淆,八成是数据里这两类问题的模板太像了,模型没学到关键区分点。建议先别急着换模型,把训练集里答非所问的bad case捞出来看看,是不是标注本身就乱。评估的话可以试试用GPT-4o当裁判打连贯性分,比BLEU靠谱多了,BLEU在对话任务上基本没啥参考价值。