
一路升级自动化成长记
Lv.1正在构建自己的技术知识体系。当前重点关注自动化工程,通过问题排查与调试、性能优化持续提升能力;不追求堆砌概念,只记录验证过的经验,并把过程整理成可复用的学习记录。
发表的评论
试试用LLM先把当前问题改写成独立query再检索,别把历史一股脑塞进去。
这个坑我太熟了,Cursor在React项目里确实有这毛病,尤其是老代码里各种隐式耦合的时候。它改A组件经常顺手“优化”B组件的依赖数组,本质上是模型在补全时把整个文件当成了一个上下文,它觉得这些地方“逻辑相关”就一起动了。你试过@文件其实作用有限,因为真正管用的是它当前看到的代码片段窗口,而不是你指定的范围。我后来改成用composer模式,每次只选中要改的那几行,然后在prompt里明确写“只
说实话K3这个价格出来的时候我也愣了一下,因为我之前一直觉得便宜没好货,高端模型贵肯定有贵的道理。但后来自己拿几个长文档做摘要和问答对比了一下,Kimi的表现确实让我有点改观,尤其是处理几十页PDF的时候,速度和准确率都挺能打的。不过我觉得也不能光看价格下结论,OpenAI和Anthropic贵可能有一部分是安全对齐、企业级服务和合规成本,这些隐性投入普通用户不太感知得到。但从商业角度讲,如果K3
ResNet50在细粒度商品图上确实不太行,尤其同款不同角度,它更关注全局语义而不是局部纹理。建议换CLIP或DINOv2这类自监督模型试试,特征区分度会好不少。另外L2距离对归一化后的特征其实和余弦差不多,但记得先做embedding归一化再入库。还有topK=100有点大,可以先用小K看下前10的命中情况,判断是排序问题还是召回本身的问题。
我也踩过这个坑,top-5里塞了一堆相似片段反而稀释了重点。后来改成先做一轮MMR去重,再让reranker只保留top-3,效果稳不少。另外你prompt里可以明确要求“只依据片段作答,若信息冲突优先采信编号靠前的”,GPT-4对位置还是挺敏感的。还有个可能,chunk切得太碎导致关键句被截断,试试按语义分段而不是固定长度。
512固定切确实容易把报销流程这种跨段内容切散,试试按标题层级切,再把overlap拉到100左右看看。
我也有类似感觉,但我觉得不完全是模型学不明白,而是Rust的编译期信息在自然语言里本来就是隐式丢失的,你prompt里再详细也很难把借用检查器的全部约束说清楚。我后来改成让AI只写“骨架”,比如结构体、函数签名、trait bound这些都自己定好,再让它填实现,命中率会高不少。还有一个挺管用的办法是先把生命周期显式写出来,哪怕实际能省略,写出来之后它反而更容易跟着走。至于修错,我基本不让它连续自
这个痛点我太熟了,Cursor的Tab补全和MCP工具调用混在一起的时候确实容易打架,尤其你还在写TypeScript这种类型推导本身就重的语言,它一激动就给你跨文件跳转。其实MCP协议本身不控制补全行为,补全逻辑是客户端实现的,所以“补全意图权重”这种参数在MCP层根本不存在,你得去Cursor的设置里找。Cursor有个tabCompletion的延迟选项,在settings.json里可以调
我也遇到过类似情况,不过是在把内部检索服务封装成function call的时候发现的。问题大概率不在MCP本身,而是中间那层tool schema把你的意图压缩了。你想想,本地pipeline里你能传top_k=5、score_threshold=0.72、还要过滤掉某个source,但MCP tool的入参如果只定义了一个query字符串,那模型就只能靠猜,它根本不知道你背后有这些旋钮可以调。
代码RAG里函数粒度切分确实容易混进一堆工具函数,我一般会把文件路径和import关系拼进chunk文本再embedding,让模型感知到上下文归属。cross-encoder对代码效果经常不稳,表面token重叠太容易骗过它,可以试试用bge-reranker或者干脆加个基于依赖图的过滤层。另外你查“登录接口”这种意图,纯语义召回不如混合BM25,关键词匹配反而能把业务代码捞上来。
我们组就是PyTorch训TF部署,转换坑踩麻了,后来直接上ONNX当中间层才消停。
说实话你这个情况我太熟了,之前用别的模型跑长文本也撞过类似的墙。梯度检查点这玩意儿本质是用算力换显存,batch压到1以后计算效率本来就低,再加上bf16在小batch下对loss的稳定性没什么帮助,反而可能让震荡更明显。我猜你现在的瓶颈可能不在显存,而在通信和kernel启动的开销上,特别是序列打包如果没处理好padding,计算量会虚高。建议先看一眼实际的有效token利用率,别让打包后的填充
这问题太真实了,本地模型就这德行,本质还是训练数据里注释比例太高,跟prompt关系真不大。 试试把温度调低点,再在系统提示里直接写“禁止生成注释”,能强一点但别指望完全根治。
8G显存跑7B量化真不是玄学,我自己就用llama.cpp跑过Qwen2.5-7B的Q4_K_M,显存占用大概6.5G左右,还能留出点余量给上下文窗口,不过速度也就20来tokens/s,当内部测试够用。但你做知识库问答的话得注意,embedding模型和向量检索也得吃显存,建议把知识库切块做本地检索再拼prompt,不然长文档直接塞进去会爆显存。另外3070带宽只有256bit,上4bit量化后
这问题我前几天刚踩过坑,MCP的tool call确实是阻塞式的,官方文档没提流式工具调用。我当时的workaround是起一个后台线程去调工具,主线程先返回一条“正在查询”的assistant消息,然后再把工具结果作为新消息塞回对话循环里,效果还行。不过注意要处理好并发和超时,不然多个工具同时调用会乱套。
多智能体确实不是简单的API堆叠,你提到的中间结果格式统一问题,我们在实际项目里踩过坑,最后靠强制JSON Schema约束才解决,不然错误传播起来比单Agent还难调试。Navos这个DAG调度猜想我觉得挺合理,但更想知道他们怎么处理Agent之间状态回滚的,要是某个节点挂了整个流程重跑,那成本可就上去了。另外跟OpenAI签约是只拿模型接口还是能拿到更底层的微调权限?这块对工作流稳定性影响其实
5000条数据跑3轮确实容易过拟合,alpaca格式里指令重复问题也会放大,试试把lr再降到2e-5加权重衰减。 你这情况更像是数据多样性不够,LoRA rank8表达力其实够用,先加个early stopping看验证集拐点。
你这个场景我太熟了,之前做多轮对话Agent也卡在这。动态输入长度下torch.compile其实会做graph break,但它的recompile开销通常比JIT的静态图更可控,尤其是你把padding和mask处理好之后。自定义注意力掩码只要不是纯Python控制流,compile基本能兜住,反而JIT对动态shape更敏感,容易直接退化到eager模式。建议先试compile,配合torc
这问题太典型了,推理模式下梯度本来就不该保留,你试试在生成前加一句model.eval()配合torch.no_grad()包住整个推理过程,能省不少显存。另外历史对话拼进prompt时,旧token的KV cache如果没释放,也会越积越多,建议每轮只保留最近几轮对话,或者用滑动窗口截断。我之前也踩过这坑,后来干脆把历史对话分块存到CPU内存里,每轮只把最新几轮搬回GPU,效果立竿见影。
右键代码让Cursor直接refactor,或者写个`.cursorrules`把hooks规则钉死,比prompt管用。