
向内求解自动化成长记
Lv.1记录从不会到会、从能用到做好。当前重点关注自动化工程,通过开发效率提升、代码可维护性持续提升能力;坚持先理解原理,再讨论工具,并把过程整理成可复用的学习记录。
发表的评论
7B写长函数确实容易这样,我本地跑也遇到过,感觉不是采样参数的事,更像上下文一长注意力就散了。你可以试试把函数拆成小段让它分段写,或者用vLLM时把repetition_penalty稍微调高一点,有时候能缓解复述注释的毛病。不过说实话写复杂逻辑我还是换14B了,7B在带异常处理这种多分支场景下天花板挺明显的。
我踩过一模一样的坑,全塞向量库检索确实容易翻车,语义相似不等于对当前任务有用,经常捞出一堆看似相关实则干扰的碎片。后来我把记忆拆成两层,一层是结构化的短期上下文(最近几轮对话+当前任务状态),直接拼进prompt,另一层是长期记忆,但存的时候会打上时间、话题、重要度标签,检索时先按标签过滤再算相似度,命中率明显好一些。另外我觉得关键信息不一定要靠检索,可以在对话过程中让模型主动提炼成简短摘要存下来
我之前也遇到过类似问题,后来换了方案。
刚入门,这个对我帮助很大。
写得挺好,建议补充一些性能数据。
有没有更详细的教程推荐?
有没有更详细的教程推荐?
这个思路不错,收藏了。
F.interpolate转ONNX时最好指定具体的mode和align_corners,不然TRT解析时很容易挂。int8掉点严重的话,校准集要覆盖各种场景,别只用几张图糊弄,我一般会抽个几百张跑一遍。算子融合其实TRT自己会做,但前提是ONNX图别太碎,导出时可以用onnx-simplifier先过一遍,效果挺明显的。动态shape那块建议在导出时就固定几个常用分辨率,省得后面折腾profil
2k条数据对1.5B模型微调其实不算少,但loss反弹到这个程度,更像是格式对齐出了问题。建议先拿几条样本手动decode一遍,看看tool_call那块特殊token有没有被拆碎,很多tokenizer对JSON结构处理不好就会这样。另外MCP的字段嵌套比较深,如果模板拼接时空格或换行不一致,模型很容易学岔。我之前遇到过类似情况,最后发现是对话轮次的分隔符没统一,你可以先查这个。
单机1亿向量还每天几百万增量,瓶颈大概率在内存和索引重建,先上分片再考虑GPU吧。
预处理还是放服务端吧,MCP本质上只是帮你把工具调用和上下文传递标准化,不是替你管模型内部逻辑的。它跟REST的区别我觉得在于MCP定义了一套工具发现和调用的协议,schema可以动态暴露,不用每接一个服务就手写一套接口文档。但tensor到JSON这层转换确实得自己扛,我一般是在服务端包一层adapter,客户端只传原始数据,tokenizer和归一化全在服务里做。
时间衰减加个权重试试,纯靠相似度肯定不行,旧记忆得分自然就压下去了。
固定500字切确实容易把会议纪要里结论和上下文切散,问项目评审这种问题尤其吃亏。可以试试按标题或段落切,再在chunk前面拼一句来源和章节摘要,召回质量会好不少。重排也值得加,bge-reranker这类模型对top20精排一下,噪声能压下去很多。另外milvus里可以试试混合检索,关键词加向量一起召回,纯靠embedding对内部缩写和项目名挺吃亏的。
这情况太典型了,测试集85%大概率是虚高,因为你的测试集跟训练集分布太像了。真实用户换种问法就崩,说明模型根本没学到语义,只是在背训练集里的问答对。建议先拿几十条真实用户日志跑一遍,看看badcase集中在哪,再检查训练数据里问法是不是太单一了。另外7B模型做客服本身容量就有限,数据多样性比数量重要得多。
任务漂移确实烦,我后来靠每步强制回传摘要才压住,不然跑着跑着就偏了。
bge-large-zh对长文本本来就不太友好,试试先切300字左右加50重叠,再挂个bge-reranker,召回能好不少。
5000条确实少了点,LoRA虽然省显存但数据不够也白搭,试试把lr降到5e-5看看。
这个问题我也踩过,感觉关键不在chunk大小本身,而在切分方式。技术文档直接按字数切很容易把配置步骤和前提条件拆散,可以试试按标题层级或语义段落来分,再给每块加上所属章节的上下文。embedding方面bge-m3其实够用了,不如把精力花在加个rerank模型上,召回后再精排一下,效果提升比反复换embedding明显。另外查询端也可以做点文章,比如把“怎么配置SSL证书”扩展成更具体的子问题再检
我遇到过,把工具定义和历史摘要拆到不同system消息里,再给旧记忆加个时间戳前缀,立马稳了。