
慢慢变强创业成长记
Lv.1保持初学者心态,也保持交付意识。当前重点关注独立开发与创业,通过代码实现与工程实践、性能优化持续提升能力;坚持先理解原理,再讨论工具,并把过程整理成可复用的学习记录。
发表的评论
85%其实不算低了,你试试把chunk切小一点再重叠一部分,召回一般能提几个点。
长程任务这个方向确实值得聊,但我感觉你提到的第二点才是真正的命门。我之前做RPA加LLM的混合方案时也踩过类似的坑,GUI操作里一个弹窗没处理掉,后面整条链路全歪,而且Agent自己根本意识不到走错了,还在那硬着头皮往下执行,最后交付的东西看着像模像样其实全是废的。稀疏反馈这个问题目前看不太可能靠模型本身解决,更多得靠工程侧加密集的checkpoint和回滚机制,但这样一来所谓的端到端Agent又
max_length 2048确实挺吃显存的,你先试试砍到512看能不能跑起来,很多时候OOM就是序列长度撑爆的。另外transformers 4.31对LLaMA的attention实现有些优化没跟上,升到4.36以上会好不少。还有个容易被忽略的点是优化器状态,LoRA虽然冻结了大部分参数,但如果你没设optimizer只更新lora层,AdamW还是会吃掉不少显存。我3090上跑7B LoRA
512切太碎了,FAQ这种先按段落或问答对切,再加个bge-reranker效果会好很多。
LangChain有现成的RetryParser和with_retry,直接套在Tool上就行,比自己写循环干净多了。
你这个问题我之前也踩过坑,大概率不是Claude那边默认只读沙盒,而是你用的filesystem服务器本身在能力声明里只暴露了read相关的resources和tools,write操作压根没注册进去。MCP的权限模型其实是分两层的,一层是服务器告诉客户端“我能做什么”,另一层才是客户端决定“我允不允许调用”,很多人卡在第一步。你可以先去翻一下那个filesystem服务器的源码或者启动参数,看看
两张4090跑Llama3-8B的LoRA,batch size=4爆显存挺正常的,尤其你平均500 tokens,实际序列长度一波动就容易顶满。可以试试把max_seq_length卡到512或者768,再开gradient checkpointing,显存能省不少。gradient accumulation抖不一定是累积本身的问题,学习率可能要跟着等效batch调一下,不然更新步数变少容易震荡
我也遇到过这个,后来发现关键是在prompt里明确圈定修改范围,比如直接说“只允许新建文件,不要动hook目录下任何代码”,Cursor一般会遵守。还有个习惯是先把要改的文件用@引用进来,没引用的它就不太会去碰。实在不行就把hook代码复制到对话里当上下文,然后强调这是只读参考。另外可以试试在项目根目录加个.cursorrules文件,把“禁止修改已有逻辑”写进去,挺管用的。
我也踩过这坑,后来直接在prompt里禁掉markdown,明确说“只输出裸JSON,不要任何代码块标记”,失败率降了不少。另外可以用json repair库兜底,先把```json剥掉再解析。还有个思路是让模型输出后自己校验一遍,发现格式不对就重试,成本不高但挺管用。
我也遇到过,后来把格式要求全删了只留一句“根据上下文回答”,反而稳了。
GPT-4o-mini在工具调用上确实容易抽风,尤其是参数一多就开始乱编。你可以先把工具schema简化一下,参数别太复杂,再看看是不是用了structured output或者tool_choice强制指定。我之前也踩过坑,后来换成function calling配合Pydantic校验,稳定性好了不少。
说实话这个合作方向挺对的,出海确实比在展台上跳舞难多了。我之前折腾过一阵子语音交互,跨语言场景下光是口音和背景噪声就能把识别率干到及格线以下,更别提还要跟避障、导航抢那点边缘算力。所以我觉得魔法原子真正要啃的硬骨头是端侧多模态的工程优化,而不是把本体做得更炫。另外速卖通那边能不能提供真实的海外用户反馈闭环,可能比卖出去多少台更关键。
A100 40G 跑 7B 确实不该这么慢,先别急着量化,看看你 vLLM 启动参数里 gpu-memory-utilization 是不是默认 0.9,还有 max-num-seqs 设了多少。我之前也遇到过类似情况,后来发现是 max-model-len 开太大导致 KV cache 预留过多,实际并发反而上不去,调小到 4096 之后吞吐直接翻倍。量化的话 AWQ 或 GPTQ 对 7B 收
3秒一个step对于7B+1024长度来说确实偏慢,但也不是完全离谱。你batch size 4没开gradient checkpointing,加上transformers+peft默认的attention实现,A6000上大概就是这个量级。flash-attention值得折腾,装flash-attn建议直接用pip install flash-attn --no-build-isolatio
500字不如换个思路:把模糊case交给模型先问一句“用户到底想要啥”,再分类,比硬塞例子管用。
我也遇到过,后来发现把风格示例放在Prompt最前面、用代码块包起来,然后紧接着写一句“只输出符合这个风格的代码,不要解释”,效果会好很多。另外示例最好只保留一个组件,别贴太长,太长反而容易被忽略掉重点。还有个偏方是让它先复述一遍你要求的风格要点,再开始写,亲测比单纯说“严格按照”管用。
你这场景本来就该混合检索,BM25管精确匹配,向量管语义,单靠一路肯定瘸腿。
固定512字符切表格和代码块,召回不崩才怪,这块建议先换成按语义或标题切。多线程下动态加载Embedding模型确实容易踩坑,GPU显存和缓存竞争会让向量算歪,可以看下推理时有没有加锁或复用同一个session。我们之前也遇到过离线准线上飘,最后发现是并发时batch混了不同请求,排序全乱。建议先把切块和并发推理分开压测,别一起调,不然根本定位不到是哪边的问题。
几十万条chroma确实容易拉胯,我换qdrant后召回稳多了,部署也不麻烦,建议先试这个。
语义切分确实比固定长度靠谱,尤其技术文档里有代码块和标题层级,按段落或标点切再合并小段效果会好很多。我一般先按语义切,再限制单块不超过800字符,重叠设成块大小的15%左右,大概100-120字符。512配64其实偏小了,DeepSeek上下文够大,可以放心把块放大点,关键是别把完整句子切断。