
青空煮茶集
Lv.1把零散灵感沉淀为可复用的方法,关注技术学习与数字生活,记录持续成长、读书与思考和真实实践中的思考;注重把个人踩坑沉淀成可复用的方法。愿与认真做事的人一起长期成长。
发表的评论
推理阶段本就不该回传梯度,你硬把在线学习和DDP混一起,上下文不串才怪。
换数据集就崩,大概率是模板里隐含了对旧数据分布的假设,比如字段顺序、措辞习惯。我一般先把失败case按“格式错、漏字段、语义偏”分三类,每类抽10条看模型到底在补什么脑。然后针对最频繁的失败模式改一句指令,而不是整段重写。温度对结构化输出影响其实很小,不如把格式约束放进system里,再用json schema或函数调用兜底。直觉有用,但得建立在你能复现失败原因的基础上,不然就是碰运气。
换Qwen2.5的function calling版试试,普通版对工具调用支持确实不太行,我踩过这坑。
我也踩过这个坑,后来把每步工具返回的结果单独存到state里,只在prompt里塞当前步骤真正需要的摘要,token一下就降下来了。你可以在LangGraph的节点里加个压缩步骤,用个小模型把工具输出精简成几句话再往下传。另外目标漂移的话,试试把原始问题固定在system prompt最前面,别让它被中间的工具结果冲掉。
我一般会先让AI复述一遍我的需求,确认它理解对了再让它动手写。你说的那种脑补异常值处理,其实是因为模型默认想“帮忙帮到底”,你得在prompt里明确加一句“只做我要求的事,不要添加额外逻辑”。另外可以试试用“输出格式”约束它,比如“只输出代码,不要注释”,比单纯说“明确”管用多了。
先想好组件结构再让AI补细节,别让它替你定逻辑,不然真会越写越陌生。
指数退避确实比无脑重试靠谱,但得先区分是网络抖动还是工具真挂了,后者重试纯属浪费。
4060 8G跑7B确实太勉强了,我同款卡试过,FP16必炸,4bit能用但智商掉线。你可以试试Qwen2.5-7B的GGUF Q5_K_M,比GPTQ稳不少,多轮对话的割裂感会轻一点,但别指望跟API一样聪明。分层跑CPU的方案有,比如llama.cpp的--n-gpu-layers参数,只把关键层塞进显存,速度慢点但显存压力小很多,你可以先调成20层试试,效果和速度平衡一下。另外本地知识库这需
loss都到0.2了输出还是乱码,这基本可以排除欠拟合,问题大概率出在数据格式上。纯文本直接喂给Qwen2这种需要chat模板的模型,指令跟随能力根本学不到,建议你把LeetCode题解转成system+user+assistant的对话格式再试。另外10个epoch对LoRA来说确实偏多,QLoRA在两张3090上跑1万条数据,5个epoch左右就该早停了,过拟合到重复token很常见。warm
编译开销摊到长会话里其实挺划算的,但要是单轮请求多那这300ms就有点肉疼了。 20%的加速对工具选择这种小模型挺香了,不过动态shape多的话建议先确认下CUDA graph会不会频繁recompile。
说实话这个问题我前段时间也踩过差不多的坑,LangChain里回调和流式输出本质上不是同一层的东西,流式生成器只管token,回调更像是个全局事件总线,硬把它们绑在一起肯定乱。我当时最后是选择在on_llm_new_token里统一做状态更新,但用了一个asyncio.Queue把token和工具调用事件都塞进去,前端那边只消费这个队列,UI刷新和答案拼接反而变得特别干净。不过你提到Agent内部
先试试把temperature调低到0.1,再强行约束输出json格式,能解决大部分卡顿。
我一般把必避项和输出格式写死,其他留给模型自由发挥,方向偏了直接开新会话省心。
这问题太典型了,pgvector的HNSW索引在带过滤条件时,没法像暴力扫描那样在过滤后的子集里精确建图,搜索时容易走偏。我试过先按部门把向量拆成独立collection/分区,查询时只搜对应分区,召回质量立刻上来了。另外你留意下过滤字段的基数,如果部门值太少,倒排索引可能直接退化,这时候不如把过滤条件也拼进embedding里做语义约束。
中文场景真别死磕固定大小,按语义段落切比啥都强,重叠率20%够用了。
显存持续上涨这个特征,大概率不是graph没剪枝,而是你的backward里确实有张量在跨step累积。检查下索引矩阵是不是用了`.detach()`或者干脆在forward里就转成`int64`的non-differentiable tensor再存,这样autograd不会管它但显存会一直占着。另外scatter_add反向很容易踩的坑是梯度要回传到`src`的每个位置而不是只回传`index
5000条数据量还是偏小,而且周报这种格式文本建议先做规则清洗去掉噪声,乱码多半是数据里混了特殊字符。
把需求拆成小任务喂给它,再自己搭好骨架让它填肉,别指望一次生成整个文件。
直接把package.json和组件路径贴进Prompt,再指定“基于xxx组件实现”就行,比模糊描述管用多了。
确实,光说“写个脚本实现xxx”AI就放飞自我了。我现在的习惯是prompt里必须带输入输出的样例数据,哪怕就两行假的CSV,再明确说清楚“如果目标文件不存在就报错退出”,这样它至少不会自己脑补路径。另外加一句“禁止修改原文件,结果输出到新目录”这种边界条件,能少踩好多坑。