
刚入门的机器学习玩家日常
Lv.1Developer,关注技术原理与工程落地,技术方向以AI应用开发、软件工程为主。持续整理模型选型与效果评估、提示词与上下文工程和可复用的工程方法;更关注能够真正落地的方法。
发表的评论
有没有更详细的教程推荐?
我之前也踩过这坑,后来统一用队列消费token和工具事件,UI只认一个流就顺了。
本地Python脚本用stdio完全够用,改SSE也没想象中麻烦,主要是把启动方式从spawn进程换成起个HTTP服务而已,协议层不用动。但鉴权这块差别挺大,stdio天然靠本机进程隔离,SSE暴露端口就得自己加token或者反代,调试时SSE能用curl直接打比较爽,stdio就得靠日志。真要给同事用建议早点上SSE,不然临时改容易漏掉鉴权。
我之前也踩过这个坑,改写后反而把原query里的关键实体给弄丢了,bge-small对短文本本来就不算特别敏感,改写完句子一长语义反而稀释了。你可以先别急着换embedding,试试用原始query和改写query各召回一次再做融合,或者干脆改成抽关键词而不是整句重写。另外有时候口语query本身带的上下文信息比你以为的多,改写容易丢细节,这个真得看具体场景。
大模型这块基本就是PyTorch的天下了,HF上开源模型和微调脚本清一色torch,你跟着生态走能省很多踩坑时间。TF Serving那套更多是老项目或者公司基建已经铺好的场景,新入坑没必要为它分心。我建议先把PyTorch吃透,能跑通LoRA微调和推理部署再说,TF真遇到了现查文档完全来得及。两个都精通当然好,但起步阶段贪多容易哪个都不扎实。
chunk切太碎确实容易丢上下文,建议先看看召回片段拼起来是否自洽,再排除rerank背锅。
我试过在server返回里塞约束,效果不太稳,模型有时候会把它当普通文本忽略掉,而且跟客户端system prompt叠在一起容易打架。后来改成在工具的description里写清楚用途和限制,再让客户端system prompt做整体流程控制,分工明确多了。server端最好只管工具本身的逻辑和参数校验,真要做强制流程建议用tool result里的结构化字段引导,别硬塞prompt。
先加个reranker试试,成本最低见效快,模型和索引别急着动。
这个思路不错,收藏了。
有没有更详细的教程推荐?
学到了,感谢分享!
刚入门,这个对我帮助很大。
这个思路不错,收藏了。
写个定时tool把老向量按时间戳删掉就行,几百条卡多半是每次全量重嵌了,增量存才对吧。
我也踩过这坑,AI写RAG检索逻辑确实容易翻车,尤其是chunk切分那块,它经常按固定字符切,把句子和段落硬生生截断。后来我干脆自己写核心的split和召回部分,只让它帮我写向量库连接、参数配置这种胶水代码,反而省心。few-shot可以试试,但别指望它能理解你私有文档的语义边界,这块还是得自己盯。
8张A10跑7B其实资源不算紧,关键看你怎么切。可以试试TP=2或4,别单卡硬扛大batch,vLLM的PagedAttention对并发提升挺明显,gpu_memory_utilization拉到0.9左右再压max_num_seqs。GPTQ乱码可能是校准集或group_size的问题,换AWQ通常稳一些,精度掉得也少。估算公式大概就是权重+KV cache,KV cache按2×层数×头数×
动态shape基本就是罪魁祸首,每次输入长度一变就触发recompile,开销全耗在这上面了。我之前也是7B模型推理,固定长度能快15%左右,一改成变长直接倒挂。建议先加mode="reduce-overhead"配合CUDA graphs试试,再把常见长度分桶固定下来,别让它反复重编。生产环境我现在只在固定batch和固定seqlen的场景开,变长的直接eager省心。
双路3090跑7B不该这么慢,先看看是不是PCIe带宽拖后腿了,或者模型没完全加载到GPU上。
先看看检索片段里是不是混了相似但不对的条款,rerank能救不少,另外生成模型别用太小的。
几十万切片其实真不算大,chroma召回不准大概率是索引和距离度量没配对,换库之前先把HNSW参数和归一化调一遍试试。我拿qdrant和pgvector做过对比,单机小数据量下延迟差距基本感知不到,pgvector还省得单独维护一套服务。milvus功能全但部署运维对单人项目有点重,除非你后面要上亿级别再考虑。建议先用pgvector或es插件把链路跑通,召回收敛了再谈换不换。