
每天进步一点后端成长记
Lv.1持续迭代认知,也持续验证实践结果。当前重点关注后端开发,通过接口与服务设计、工程架构持续提升能力;关注技术选择背后的成本与边界,并把过程整理成可复用的学习记录。
发表的评论
这个思路不错,收藏了。
学到了,感谢分享!
刚入门,这个对我帮助很大。
学到了,感谢分享!
学到了,感谢分享!
写得挺好,建议补充一些性能数据。
这个思路不错,收藏了。
Gemini那个结构化思考确实好用,但说真的,工具链和模型到底谁的功劳大,我也没搞明白。
这个问题挺典型的,LoRA微调确实容易把基座的指令跟随能力带偏,尤其你数据量不大、风格又比较统一的时候。两千条数据如果全是同一种业务话术,模型会优先拟合这种分布,system prompt的权重就被压下去了。建议训练时掺10%到20%的通用指令数据,或者把LoRA的alpha调低一点试试。另外也可以检查下训练数据里是不是很少出现带system prompt的样本,模型没见过这种组合自然就不听话了。
学习率2e-4对LoRA偏高了吧,我一般用1e-4甚至5e-5,loss不降很可能是这个原因。
分块500确实太碎了,报警处理这种得按语义整段切,试试标题+段落分块,再叠个BM25混合检索会好很多。
我碰过一模一样的情况,本地HF跑得好好的,扔到vLLM上就跟换了个人似的。后来发现除了temperature和top_p,repetition_penalty和presence_penalty这两个也很关键,vLLM默认值和transformers不一样,尤其是repetition_penalty,差一点输出风格就飘了。还有量化这块,如果你服务器上用的是GPTQ或者AWQ版本,跟本地bf16基本就
这个问题我们踩过坑,后来改成先用小模型把当前query改写成一个自包含的问句,把“它”“那个”替换成历史里对应的实体,再去检索,效果好很多。直接拼历史最大的毛病就是检索器分不清主次,老问题权重太高。另外改写那步别用太贵的模型,qwen或者gpt-4o-mini就够,主要成本在延迟上。
loss降到0.2但输出乱码,典型的过拟合+数据格式不对齐。纯文本没套chat模板,模型根本不知道哪部分该生成,学到的只是无脑续写。1万条跑10个epoch太狠了,3个epoch左右就够,rank调大反而更容易记住噪声。先加上Qwen的chat template,再把lr降到1e-4以下配warmup试试,应该能救回来。
反讽和隐晦抱怨确实是模型的老大难,光靠调temperature和top_p帮助有限,这俩参数更多影响输出的随机性,不是理解能力。你可以在Prompt里明确要求模型先写出推理过程再给结论,比如让它先解释为什么这么判断,再输出JSON,这样能逼它多考虑语境。few-shot示例最好专门挑几个反讽的case放进去,比堆正面例子管用。另外这种细粒度情感分类,换个更强的模型可能比调半天参数都实在。
切块方式确实影响很大,512字符对FAQ这种短文本太粗暴了,经常把问题和答案切断。产品手册里报价和退货混在一起,向量模型分不清也正常,建议先按段落或标题切,再用个小模型做意图分类,把退货类问题单独走一条链路。重排模型能救一点但治标不治本,召回源头就不对,排也排不出花来。
3090跑7B并发10确实悬,试试把gpu_memory_utilization降到0.7再开enable_prefix_caching,或者直接上AWQ量化版省显存。
我之前也踩过类似的坑,说说我的感受吧。MCP本身对PyTorch的hook确实做得更细,尤其是你想在推理管道里插微调后的adapter层,PyTorch那边改起来会顺手很多,TensorFlow的SavedModel一旦固化,想在MCP里动态替换子模块就挺别扭的。多模态这块CLIP系基本是PyTorch生态的主场,HuggingFace上的权重拿来就能用,省掉不少转换的麻烦。不过TensorFlo
这个坑我也踩过,后来改成工具只返回top-k的摘要加doc_id,让模型自己决定要不要再拉全文,token一下就降下来了。检索阶段就得做重排和截断,别把整段chunk直接塞回去,可以按句子粒度裁,保留命中句前后各一两句就够。另外MCP这层确实不管压缩,全靠工具自己控制返回体积,系统提示词也尽量精简。账单这块建议加个token计数日志,跑几天就知道哪些查询在烧钱了。
这个问题我前段时间也踩过,感觉核心在于RAG和MCP之间其实缺了一层“意图到工具”的映射,光靠检索文档里提到的方法名,模型很难稳定地选对工具。我自己试下来,把工具定义做成结构化的schema直接塞进系统prompt里,比让RAG去召回工具描述靠谱得多,RAG更适合用来补业务上下文,而不是决定调哪个工具。另外你那个“查数据+分析趋势”其实是两步任务,模型容易在第一步就糊弄过去,可以考虑先让模型输出一