
持续迭代创业修炼册
Lv.1不过度追求速成,更相信稳定进步。当前重点关注独立开发与创业,通过开发效率提升、项目复盘持续提升能力;不追求堆砌概念,只记录验证过的经验,并把过程整理成可复用的学习记录。
发表的评论
10万切片单机部署这个量级,说实话两个都能扛住,选型焦虑可能有点过度了。我上个项目正好两个都用过,Milvus当时部署了一整套etcd加minio加pulsar,运维成本确实不低,小团队如果没有专职运维会比较累。Qdrant单机跑起来就一个二进制文件,docker一行命令的事,10万条数据用它的内存模式响应基本是毫秒级,性能完全够用。LangChain那边两个都有官方集成,Qdrant的接口写起来
数据里得掺点“拒绝调用”的负样本,光教它调对不够,还得教它啥时候不调。
你这个512配top_k=5确实容易出碎片,我之前也踩过这个坑。后来发现关键不是单纯调chunk size,而是得让切块带上语义边界,比如用递归切分加段落重叠,或者按标题层级来切,别硬按token数砍。另外检索完可以加一层重排,把相邻或同源的chunk合并回完整段落再喂给模型,这样断章取义会好很多。top_k也别固定5,可以先用小k召回再动态扩展到上下文窗口,配合MMR去重。还有个思路是把chun
几百个函数确实太少了,代码补全想靠这点数据让loss降到很低基本不现实,模型很容易就把训练集背下来了。你可以试试把爬来的函数按项目切分train/val,防止同源泄漏,不然验证集指标虚高或者虚低都说不准。rank=8其实够用,重点该放在数据增强上,比如把函数拆成prompt-completion对、加些docstring转代码的样本。另外BLEU对代码补全不太合适,换成exact match或者e
你这情况太典型了,我上个月也卡在类似的地方。后来发现prompt写太细反而容易让Qwen死板地套模板,回答变得又臭又长。我的做法是只给结构和边界,比如"只根据检索内容回答,不知道就说不知道",剩下的让模型自己组织。另外检索出来的片段顺序和去重也很影响效果,你可以先看看召回的内容是不是本身就乱。
多轮tool call显存涨这么多不太正常,4000 token根本不该撑到24G。建议先看下vLLM有没有开prefix caching,Agent场景下每轮都带完整历史,缓存命中率低的话KV cache会重复占。另外确认下是不是每轮都新建了LLM实例或者没复用engine,那个才是真凶。可以加个定时log显存和block使用情况,定位下是KV还是别的泄漏。
官方那几个够用就别折腾社区的了,代码分析场景稳定性比花哨功能重要多了。
7B做function calling确实容易翻车,参数一多就开始瞎编。我后来换了Qwen2.5-14B的q4量化版,准确率明显好一截,但代价是速度更慢,基本要20秒起步。现在我的做法是本地只跑检索和意图分类这种轻活,真正需要调工具的时候还是走云端API,混合着用体验好很多。纯本地跑Agent现阶段也就玩玩可以,真当生产力工具还差点意思。
512 token切太碎了,中文长尾问题确实容易丢语义,试试加大到1024再叠个BM25混合检索。
量化确实掉点,但更关键的是上下文窗口和训练数据差异,试试把项目里相关函数签名拼进prompt。
试试把prompt初始化成实际词向量,再冻结BERT底层,我之前也这样,稳多了。
小改动直接过,涉及并发和状态我肯定逐行看,AI写的这块翻车概率太高。
先加个轻量rerank试试,别一上来就上大模型,延迟没那么夸张,效果立竿见影。
我3060 12G也试过,SDXL base直接跑确实勉强,得把attention slicing和vae slicing都开上,batch size只能1,再大就爆。你说的那个offload虽然省显存但巨慢,生成一张要一两分钟,体验很差。想微调的话建议直接上LoRA,别全量微调,不然12G根本不够用。或者试试SDXL-Turbo蒸馏版,速度能快不少,画质也能接受。
这毛病我太熟了,agent类工具基本都有这倾向,它觉得顺手就改了,rules写“最小化改动”经常被当成耳旁风。我自己的做法是分两步走:先让它只输出方案和要改的文件列表,确认没问题再让它动手,能挡掉大部分乱改。另外diff的时候把无关改动直接reject掉,多来几次它也会收敛一点。真要治本还得靠git,改完先看stat,不对劲就reset重来。
我之前也卡在这一步,后来加了cross-encoder做重排序,效果提升挺明显的,你可以试试bge-reranker这种,比单纯调阈值靠谱多了。另外检索阶段可以多召回一些,比如top50,再用rerank压到top5给LLM,这样既不容易漏也不会太杂。让LLM自己过滤也行,但得多一轮调用,成本和延迟都上去了,看你能不能接受。还有个小技巧是把chunk切小一点,粒度细了相关性判断会更准。
我也遇到过这毛病,Sonnet总觉得自己的类型推断更“聪明”,结果把我特意留的联合类型全给合并了。后来我在项目根目录加了个.cursorrules,明确写清楚“不要修改已有类型定义,只做新增”,情况好了不少。另外重构前记得先commit,改乱了一眼就能diff出来回滚。或者干脆把类型文件单独拆出去,让它碰不到,也是个笨办法但挺管用。
遇到同样的问题,我后来发现光靠description和schema真不够,模型该飘还是飘。你可以试试把tool的name改成get_weather_by_city这种语义明确的,参数名也直接用city,别用location,少给模型自由发挥的空间。另外在prompt里加一两个调用示例,比单纯描述管用多了,我这么改完基本就稳了。
我4070也跑过Qwen2.5-Coder,改老项目确实容易断片。我的土办法是别让它一次吞整个文件,按类拆开喂,改完一个方法就让它重新贴一遍相关接口签名当锚点。RAG搭起来其实没想象中重,Chroma加个bge-small本地嵌入就够,主要费时间在切代码块。硬切对话最坑,上下文一丢它就开始编,不如手动维护个简短的项目结构摘要塞在system里。
7B模型标称14GB显存那只是权重本身在bf16下的占用,实际生产里大头往往在KV cache和激活值上。你8个并发、max_num_batched_tokens=4096,光KV cache按Qwen2.5的GQA配置算下来就得好几GB,再加上vLLM预分配的显存池和CUDA graph,冲到22GB其实不意外。RTX 4090跑推理确实容易卡在显存上,24G看着大,但vLLM默认gpu_mem