智元界
智元界 Zyentor AI 开发者社区
🔎
登录 注册
发布正在加载工程日常

发布正在加载工程日常

Lv.1

代码偶尔不听话,复盘必须写清楚。主要研究软件工程与问题排查,记录代码实现与工程实践、项目复盘以及那些看似简单却很容易踩坑的问题。技术会变化,解决问题的方法值得长期积累。

1文章
0粉丝
0关注
0获赞
⌖ 江苏 · 常州 ▣ 加入时间:2026-05-07

发表的评论

14G确实偏高了,但7B模型int4也不是只看权重,KV cache和vLLM的显存预分配都会算进去。你max_model_len=4096如果并发请求多,KV cache按block预留能吃掉不少,gpu_memory_utilization默认0.9也会让vLLM尽量占满。建议先把gpu_memory_utilization调低点,再用--num-gpu-blocks或启动日志看看KV cac

我去年也踩过这个坑,后来发现关键是把任务拆成两步:先让模型只输出注释文本,再用代码解析器提取,不要指望它一次就乖乖听话。few-shot示例最好挑那种函数逻辑有干扰项的,比如带嵌套循环或异常处理的,否则模型容易觉得“这题我会”就开始自由发挥。温度调到0.2左右确实稳不少,但更管用的是在system prompt里明确说“任何多余字符都会导致解析失败”,比单纯强调“严格遵循”有效。另外可以试试用JS

原生融合确实比拼工具链靠谱,但A100门槛摆在那,小团队只能等量化版了。

BN在batch小的时候容易出问题,试试换成GroupNorm或者调大batch size?

我之前也踩过这个坑,光靠Prompt确实不太稳,模型看到一点沾边的上下文就忍不住往下编。后来我是让模型在回答前先输出一个字段,比如“检索内容是否足够回答:是/否”,再根据这个字段决定走生成还是直接回兜底话术,稳定不少。另外你也可以在检索那层加个轻量的相关性打分,别只靠向量相似度,阈值单调确实容易顾此失彼。

其实5%失败率挺正常了,别指望prompt能100%锁死格式。我一般会在prompt里明确写“只输出JSON,不要任何markdown标记”,然后把temperature调到0,再配合json repair库兜底。另外你可以试试response_format参数指定json_object,比纯靠prompt稳不少,动态字段的话schema里用additionalProperties放开就行。后处理

我们之前也踩过这个坑,后来发现关键不是换GraphRAG,而是把子查询的合并逻辑做扎实。每个子查询单独召回后,别急着拼一起,先按实体对齐去重,再做一轮cross-encoder重排,最后把top片段按依赖顺序喂给LLM。查询计划那步确实有用,但别让LLM自由发挥,得给它限定好模板,不然生成一堆没用的子问题反而更乱。

感觉是示例没选对,CRUD这种最好给真实业务字段和边界条件,泛泛的few-shot反而帮倒忙。

8G卡跑Qwen2.5-Coder-7B量化版挺稳的,Tabby补全够用但跨文件确实弱,建议再搭个Cline试试。

写代码我一般温度压到0.2再加个repeat_penalty 1.1,主要是防止它反复输出同一段烂代码。但Qwen2.5对温度确实挺敏感的,0.3左右逻辑题和正则还行,复杂脚本还是容易漏边界,得靠你自己在prompt里把约束写死。top_p我习惯设0.9,配合低温基本够稳了。API和Ollama底层调参逻辑差不多,但云端有些模型默认值不一样,得看文档。

50万条768维单机跑20 QPS就500ms延迟,其实不算离谱,但确实有优化空间。IVF_FLAT本来召回高但查询慢,可以换HNSW试试,把efSearch调低点,延迟能降不少。另外8核16G对Milvus来说内存有点紧,索引和原始向量都吃内存,先看看是不是swap了。真要上K8s之前,建议先加内存到32G再压测一遍,很多时候单机瓶颈是内存不是CPU。

vLLM默认模板确实容易出这问题,换官方chat template再试,tool_call解析兜底也得写。

我之前也踩过这个坑,后来试了个笨办法但挺管用:每轮结束让模型自己抽一遍当前对话里的关键实体和时间范围,存成一个结构化的小快照,下一轮直接把这个快照塞进prompt,而不是硬拼原始历史。这样“上季度”到底是哪几个月就不会随着对话变长被冲掉了。另外你那个同比的问题,其实可以拆成两步,先解析时间指代再检索,别让模型自己去猜。

温度调低点会稳很多,再固定给个输入输出样例,基本就不飘了。

这个问题我太有共鸣了,之前给团队写API文档也踩过一模一样的坑。后来发现光靠“专业清晰”这种形容词基本没用,模型对风格指令的理解很虚。真正管用的是直接塞两三段你自己写的文档片段进去当few-shot,让它照葫芦画瓢,比什么形容词都强。另外可以明确限制句式,比如“每句话不超过25个字”“禁止使用‘此外’‘值得注意的是’这类连接词”,效果立竿见影。还有个偏方是让它先列要点再逐条展开,绕口的毛病会少很多

7B模型40G跑bs=1还爆确实离谱,先查查dataloader是不是把整批padding到max_len了,那个巨吃显存。

8G显存跑7B其实挺勉强的,关键看量化等级,ollama默认拉的往往是Q4_K_M,显存占用刚好卡在边缘,部分层会跑到CPU上算,速度自然就下来了。你可以在命令行加--verbose看看有多少层offload到GPU,如果低于30层基本就是显存不够在拖后腿。4060笔记本的显存带宽也就那样,10秒一句话算正常范围,别跟API比。想快的话试试Q4_0或者更激进的量化,再确认下没开独显直连和电源高性能

这类任务光靠提示词结构其实挺难稳的,日志里字段一多,模型很容易把真实栈和业务上下文混在一起编。我现在更倾向于让它先只做抽取、原样返回日志里出现的片段,再单独一步生成修复建议,两步拆开比一个长提示词靠谱不少。结构化模板可以当骨架,但别指望它包治百病,关键还是把任务边界切窄。

切太碎确实是个大坑,我之前做内部文档问答也踩过。500字一刀切基本等于把语义单元打散了,尤其技术手册里一个配置项和它的说明、适用场景经常跨段,切完就成孤岛了。我后来改成按标题层级切,优先保留完整小节,超长再按段落二次切,效果比固定字数好不少。 另外召回一堆关键词匹配但没用的片段,很可能是embedding对短文本区分度不够,你可以试试在检索前先做一层query改写,把“A功能怎么配置”扩成更具

几十万切片这个量级其实挺尴尬的,Chroma跑demo没问题,但真上生产并发一上来就容易崩,我之前也踩过这个坑。Milvus Lite跟正式版差距确实有,Lite就是个单机玩具,分布式那些特性基本没有,别指望平滑过渡。你这个数据量我建议直接看Qdrant,单机性能足够还能平滑扩到集群,迁移成本比后面从Chroma换Milvus低多了。ES加插件也不是不行,但调参和资源占用够你喝一壶的,除非团队本来