
周末开源手记
Lv.1主要整理开源技术相关的学习笔记与工程经验,内容覆盖代码实现与工程实践、项目复盘。喜欢从问题、方案到复盘形成完整闭环,希望把复杂问题讲清楚、把实践步骤写完整。
发表的评论
40G这个数字确实不太对劲,我拿3090跑同款模型开默认参数也就23G左右。你八成是撞上vLLM的隐式KV cache预分配了,它按max-model-len=8192和0.9的利用率一次性把显存全锁了,但实际生成时根本用不满。试试把gpu-memory-utilization降到0.75,再手动加个--max-num-seqs=4,应该能压到25G以内。另外transformers版本别追新,v
我之前也踩过类似的坑,LoRA rank开到32在8B上其实风险挺大的,尤其你只跑了3个epoch,大概率是过拟合到客服话术的浅层模式上了,而把基座模型里那些常识性的语义关联给冲淡了。我后来把rank降到16,学习率调到1e-4,然后只训练1.5个epoch,效果反而稳住了。另外你提到中英混杂,这个我建议先拿一个小的通用中文测试集(比如CLUE里抽几百条)在微调前和微调后分别跑一下,如果通用分数掉
我之前也踩过这个坑,几千份文档全塞进去之后,召回质量断崖式下跌很正常。你提到的粗分类我觉得是个方向,但别光按项目分,最好按文档类型或者业务主题先做个层级目录,然后每个分类单独建索引,检索的时候先路由到对应子索引,这样能避免跨领域片段互相污染。另外chunk大小这块,我试过固定窗口效果一般,后来改成按语义边界切,比如标题、段落、表格自动断开,配合重叠窗口,相关性会稳很多。还有个小技巧,召回阶段别只靠
说实话我建议你先从检索端下手,bge-m3直接算相似度确实容易把主题沾边但语义偏离的段落拉进来,加个cross-encoder重排效果会立竿见影。Prompt那边也别光说“忽略无关内容”,可以试试给模型一个显式的“段落投票”指令,比如让它先逐段标出与问题相关的关键词,再只基于标出的部分组织回答,这样它能更聚焦。另外Top-K降到3,同时把chunk切小点到150字左右,减少噪声混入的概率,你会发现
resource这招我也试过,效果确实看场景。感觉Claude对resource的主动读取优先级没那么高,除非你把它和工具调用绑在一起,强制它先读再写。另外prompt模板塞太多反而容易稀释重点,不如把最关键的几条规范直接写进system prompt里,剩下的细节再走resource。
说实话这是个特别典型的坑,我之前也踩过。你现在的做法其实没错,但漏了多模态这一层,纯文本向量根本覆盖不了图表信息。图片得单独过一遍视觉模型(比如CLIP或者那种能出图向量的模型),把生成的向量也存进Milvus,同时把图表里的关键数字、标题、结论用文本描述出来一起存,这样检索的时候才能双路召回。另外建议你建个映射关系,文字块和图片向量要能关联到同一个文档ID,不然就算召回了图片,系统也不知道该回哪
跟你情况差不多,bge-small确实有点弱,尤其法律条款这种专业场景,换个bge-m3或干脆用text-embedding-3-large试试,召回准头能提升不少。rerank别犹豫,直接上,特别是top3混入无关内容时,cross-encoder一过滤效果立竿见影,延迟多几十毫秒但值。至于向量库对比纯塞prompt,数据量大了以后准确率其实没差太多,但延迟和成本优势明显,主要坑在chunk切分
试试把top_k调小点,再给召回加上关键词过滤,这类技术文档术语匹配还挺管用的。
6G显存跑7B确实挺极限的,我之前用2080(8G)试过Qwen-7B,FP16勉强塞进去但生成时显存直接爆掉,后来换4-bit才稳定。你提到bitsandbytes慢,大概率是因为加载时没开`bnb_4bit_compute_dtype=torch.float16`,这个选项能明显提速,否则默认fp32计算会拖死你。另外torch.compile对量化模型收益不大,反而可能因为动态图编译报错,建
说实话中兴这次确实让我有点改观,OEX超节点强调的“极致协同”比单纯堆参数实在多了,毕竟大规模训练最怕通信瓶颈。不过全栈这东西,链路越长越容易掉链子,我比较好奇OEX跟AIOS的适配是深度定制还是拿现成框架套壳,这直接决定实际落地效率。要是真能打通底层调度,那端侧AI的体验质变就有戏了。
说实话你这问题我太有同感了,之前用RAG做记忆模块也踩过类似的坑,后来发现光调chunk size和top_k根本治标不治本。我的经验是,记忆这种场景得先区分“事实查询”和“语义召回”,你问“上次讨论的API设计修改”本质上是时间线+主题的混合检索,纯向量相似度很难捕捉到这种上下文关系。建议你可以试试在分块时保留一些元数据,比如文档标题、章节层级、更新时间,然后检索时先用关键词过滤一次范围,再做向