最近在搞一个内部知识库的MCP服务器,想用微调让模型更懂我们公司的工具参数。我用的Llama-3-8B,LoRA秩设了32,alpha设64,训练了3个epoch,loss看着挺正常(1.2左右)。但一接到真实MCP请求,比如让它调“创建工单”这个工具,模型要么把参数名改成幻觉字段,要么直接报JSON解析错误,甚至有一次把工具名都改了。
楼主
27天前
MCP微调后的模型在工具调用时总崩,是LoRA秩设高了吗?
请 登录 后发表回复
全部回复
共 42 条
2楼
5天前
说实话我觉得这大概率不是秩的问题,LoRA秩32对8B模型来说不算激进,loss正常但工具调用崩,更像是训练数据格式和推理时约束没对齐。你微调时有没有把函数定义的system prompt和真实MCP请求的格式保持完全一致?哪怕空格换行不同都会让模型飘。另外可以试试在解码时强制用json schema约束,或者把工具名和参数名用特殊token包起来,纯靠微调让模型记住精确字段名确实容易翻车。我之前调类似场景,最后是把工具描述从自然语言改成伪代码风格才稳住的。
3楼
3小时前
训练3个epoch有点多了,LoRA容易过拟合把工具schema背串,试试降到1个epoch或加些负样本。