
发布正在加载工程日常
Lv.1代码偶尔不听话,复盘必须写清楚。主要研究软件工程与问题排查,记录代码实现与工程实践、项目复盘以及那些看似简单却很容易踩坑的问题。技术会变化,解决问题的方法值得长期积累。
发表的评论
这类任务光靠提示词结构其实挺难稳的,日志里字段一多,模型很容易把真实栈和业务上下文混在一起编。我现在更倾向于让它先只做抽取、原样返回日志里出现的片段,再单独一步生成修复建议,两步拆开比一个长提示词靠谱不少。结构化模板可以当骨架,但别指望它包治百病,关键还是把任务边界切窄。
切太碎确实是个大坑,我之前做内部文档问答也踩过。500字一刀切基本等于把语义单元打散了,尤其技术手册里一个配置项和它的说明、适用场景经常跨段,切完就成孤岛了。我后来改成按标题层级切,优先保留完整小节,超长再按段落二次切,效果比固定字数好不少。 另外召回一堆关键词匹配但没用的片段,很可能是embedding对短文本区分度不够,你可以试试在检索前先做一层query改写,把“A功能怎么配置”扩成更具
几十万切片这个量级其实挺尴尬的,Chroma跑demo没问题,但真上生产并发一上来就容易崩,我之前也踩过这个坑。Milvus Lite跟正式版差距确实有,Lite就是个单机玩具,分布式那些特性基本没有,别指望平滑过渡。你这个数据量我建议直接看Qdrant,单机性能足够还能平滑扩到集群,迁移成本比后面从Chroma换Milvus低多了。ES加插件也不是不行,但调参和资源占用够你喝一壶的,除非团队本来
我们之前内部知识库也踩过这个坑,说下真实感受。纯中文场景下BGE-large-zh其实挺能打的,尤其你数据如果是垂直领域,微调一下BGE收益比换OpenAI明显,ada-002中文并不是它的强项,它更多是胜在通用和稳定。但你得注意BGE对查询指令比较敏感,query和passage要加对前缀,不然召回率会莫名其妙掉一截,这个坑很多人没提。至于Rerank,确实能兜底,Embedding差一点、召回
我一般把AI当高级代码补全用,复杂状态流转还是自己画完状态图再让它填骨架。订单超时这种最好把状态定义、触发条件、并发场景都塞进prompt里,光靠注释不够。另外建议让它先输出伪代码或者时序描述,你确认逻辑没问题再让它转成Java,比直接生成靠谱不少。
10类每类300张,这个数据量对微调ResNet18来说其实挺紧的,loss卡在1.8附近震荡我第一反应是学习率可能太大了,预训练权重微调一般用1e-4甚至更小,你要是直接上1e-3很容易把预训练学到的特征打散。另外你说验证acc只有50%多,训练loss又降不下去,这更像是欠拟合而不是过拟合,所以数据增强别开太猛,尤其RandomResizedCrop和ColorJitter这种,小数据集上容易
试试unstructured吧,表格解析比PyPDF2强太多,部署也就一个容器的事,跨页问题用layout识别能救回来大半。
纯本地检索确实没必要硬上MCP,等你要接外部API再考虑也不迟。 协议统一是表面,MCP真正解决的是工具像插拔一样动态接入,不用每次改代码。
5000条医疗对话真不够,先做领域预训练再加指令微调,数据量提到2万以上试试。
个人觉得Agent最大的价值是处理那种需要多步推理或者条件判断的复杂问题,简单问答硬套框架反而拖慢速度。
PyTorch动态图调试起来顺手多了,MCP只是封装层,跟底层框架关系不大,选自己熟的就行。 其实哪个都行,关键是模型导出格式统一,TorchServe配MCP也见过不少案例,不用太纠结官方示例。
工具描述里加几个few-shot示例试试,顺序改成高频优先,比调temperature管用。 我前两天也这样,后来发现是参数schema写太死,放宽点就稳多了。
试试AWQ量化吧,13B能压到8G左右,比GPTQ稳,精度损失小到基本看不出来。
我跑segmentation也遇到过一模一样的,nvidia-smi看的其实是物理占用,但PyTorch的缓存分配器会预留显存,所以实际峰值早超了。你那个显存慢慢涨多半是缓存碎片化,尤其是不同shape的中间变量反复分配释放,建议用pytorch的torch.cuda.memory_summary()看下allocated和reserved的差。混合精度按理说省显存,但如果你把loss也cast成
大概率是Docker容器网络模式默认桥接,端口没映射到宿主机IP上,改成host模式或检查下防火墙试试。 八成是容器端口只绑了127.0.0.1,没绑0.0.0.0,改下docker run的-p参数就行。
说实话你这结果真不意外,7B基座本身中文能力就弱,LoRA只是微调偏好,补不了预训练的知识缺口。数据预处理倒是其次,分词那步对BPE影响真不大,问题更可能出在alpaca子集那种指令风格和客服场景差太远。建议先拿你那套few-shot prompt当测试集,用GPT-4标一批高质量客服问答对来训,比硬刷2万条通用数据靠谱。另外英文混排基本是模型输出分布没校准,可以试试在adapter里加几个中文客
这个问题我最近也踩过坑,光加“不知道”约束确实不够,模型还是会硬拗。我后来是把prompt改成两步走,先让模型判断检索片段和问题有没有实质关联,输出“相关”或“不相关”,不相关就直接走兜底话术,这样比让它直接回答稳定多了。另外可以在模板里要求模型只能引用片段里的原话,并且标注对应来源编号,一旦它开始自己发挥,格式上就很容易暴露问题。
给范文最管用,直接甩一段你想要的README,再让它照着写,语气立马就对了。
八成是历史token要缓存导致的,建议推理完把旧的KV cache释放掉,不然内存肯定越堆越高。 我之前也踩过这坑,把工具结果截断一下能缓解不少。
双修太累了,建议主攻PyTorch,部署那层用ONNX或者TorchScript兜底,TF老代码找人封装成服务接口就行。