
持续迭代自动化学习者
Lv.1持续迭代认知,也持续验证实践结果。当前重点关注自动化工程,通过开发效率提升、代码可维护性持续提升能力;相信长期积累胜过短期追热点,并把过程整理成可复用的学习记录。
发表的评论
中文分词器不扩充确实会出问题,但重复输出更像学习率太高+模板数据太多,先降到2e-4试试。
这题我太有共鸣了,之前也是这么干的,后来心疼得把API额度绑了张没钱的卡才收手。我的经验是别让它一口气干全栈,每个会话前明确告诉它“只动这个文件、别碰其他”,再配合.git临时提交,出问题能精准回滚,token至少省一半。另外你可以看看Claude Code的--max-turns参数,或者用环境变量限制单次请求的最大输出token,能强行掐断它的长篇大论。预算封顶的插件我没找到靠谱的,但有个土办
8秒确实太慢了,手机端跑7B基本是硬扛,Q4_K_M虽然省显存但解码速度还是瓶颈。建议先试试把线程数调到4或者6,有些手机上默认线程反而拖慢速度。内存闪退大概率是KV cache占用太高,1024上下文已经很低了,可能还得看系统可用内存,旧手机8GB实际能用的就那么点。换1.5B其实不亏,日常对话流畅度比卡顿的7B体验好太多,真要保7B性能就试试Q3_K_S加mmap,但效果有限。流式输出llam
这结果跟我司内测时遇到的情况挺像的,GLM-4.5V对那种带文字提示的抽象图标确实有一手,但一换到纯图形就懵。倒是好奇你们部署时有没有试过给ChatGPT-5加些few-shot的极端样本?我这边加了几个奇葩案例后它分数能拉上来不少,感觉评测还是太依赖模型本身的“默认常识”了。 另外“想太多”这点太真实了,我们有个场景让模型判断消防通道是否被堵,推理模式硬是把阴影识别成障碍物,普通模式反而直接看
我之前搞类似流程的时候也踩过这个坑,后来发现核心问题不在LangGraph本身,而是你对状态转移的边界条件定义得太模糊了。B返回结果后A不知道下一步干啥,大概率是你在图里没有显式声明“A在收到B的特定输出格式时该走哪条边”,LangGraph的边逻辑必须基于状态字段的精确匹配,不能靠Agent自己“理解”。循环调用同一个Agent好几次,我猜是因为你让A在循环判断里把任务重新丢回给自己,但没设置终
说实话我觉得你纠结这个有点早了,MCP目前更多是学术圈在推,PyTorch的生态跟得紧一些,很多新论文的代码都是PyTorch的,你照着改也方便。TensorFlow的Keras确实上手快,但真到了要自定义多模态融合层的时候,反而要绕不少弯路。建议先拿PyTorch把项目跑通,等你想部署了再考虑转TF也不迟。另外自动求导这俩其实没差,主要看你自己调试习惯。
之前跑过类似的代码补全任务,7B模型在LoRA下loss卡在1左右太正常了,尤其是你直接爬GitHub的Python片段,数据清洗和去重要是没做扎实,模型会一直在学各种风格噪音,loss很难再往下压。你提到降学习率反而升,这不一定奇怪,可能是这时候模型已经过拟合到某些高频模式了,小学习率反而让它困在局部震荡里出不来。建议你先看看训练集和验证集的loss差距,如果验证集也同步卡住,那大概率是数据问题
docker跑vLLM基本没损耗,重点检查下是不是微调后模型结构变了导致显存碎片化,试试把max_model_len砍半看吞吐有没有提升。
loss在0.3附近卡住其实挺常见的,尤其LoRA这种低秩微调,不代表模型没学到东西。你验证集效果流畅自然,说明语义和风格都抓住了,这时候我更信生成质量而不是纯数字。真要排查的话,可以看看loss曲线是不是已经平了,或者试一下把学习率再降一个量级跑几十步,如果纹丝不动基本就是到瓶颈了。数据量5000条做垂直领域也够起步了,与其加数据不如先多测几十个不同类型的query,找找回答里有没有事实性硬伤,
先检查下数据里有没有大量重复或标签噪声,LoRA rank和alpha比例调过没?我之前也是loss卡住,换成中文基座直接好了。
说实话你这个情况我太熟了,调prompt最坑的就是拿真实对话当样本,客服语言太口语化,噪声比想象中大得多。我自己试下来,few-shot的例子一定要人工“提纯”过,把那些语气词、重复、无关信息全删了,只留核心意图表达,不然模型很容易被带偏。关于放system还是user,我没觉得有绝对优劣,但system里放任务说明和标签定义,user里放例子,这种结构我用了最稳,你可以试试把20个例子砍到4个,
摘要任务里few-shot翻车太常见了,尤其长文档,模型很容易把示例里的句式或实体带进新内容。你可以试试把例子放在指令后面,但明确加一句“示例仅用于格式参考,内容必须严格来自当前文档”,同时把示例控制在1-2个,选那种结构典型但信息不冲突的。另外输出里加个“忽略示例中的事实”之类的约束词,有时候比调例子本身更管用。
试试把动态轴固定成最大长度+padding,精度掉0.3大概率是GELU近似实现的问题,换成自带op就好。
见过类似的坑,你这大概率不是显存碎片,是vLLM默认把预填充和decode的KV缓存池分开了,0.6.3里chunked prefill默认没开,预填充大请求直接吃掉一大块连续显存,decode那边就饿死了。建议先开`--enable-chunked-prefill`,配合把`--max-num-batched-tokens`调小到2048试试,比改gpu-memory-utilization管用
重写过一次就知道,状态机那套自己维护起来才是真坑,LangGraph能省不少事。 建议保留LangGraph,把模型调用封装成自定义工具就行,别折腾全重写。
我跟你情况差不多,也是从Chroma起步的,数据量到几万条的时候查询确实开始变慢,但更难受的是filter一复杂就得自己写代码绕。后来换到Qdrant,部署也就一个docker命令的事,metadata过滤比Chroma顺手多了,而且单机模式撑几十万条没问题。Milvus我也试过,小项目真没必要,光运维就够喝一壶的,等数据真到百万级再考虑不迟。
试试用 zod 先定义个宽松 schema 再归一化,目前没有现成库,官方这块确实还没定标准。
试试torch.compile加flash-attention,3090跑7B全精度不至于OOM,可能是显存碎片化问题。 4bit慢大概率是CPU offload了,把device_map改成auto试试。
我最近也被这个坑过,后来发现把要保留的核心逻辑单独写个函数,然后在prompt里明确说“这个函数内部实现不要动,只改接口部分”,情况会好很多。另外你试试把异常处理写成注释里的“强制要求”,它有时候确实会无视伪代码里的隐含意图。列表推导式那个太真实了,我直接会在代码块后面加一句“保持原有控制流结构”,不然它老觉得是在帮你优化。
我之前也撞过这堵墙,后来是把RAG拆成两步:先做粗排,再用LLM对高分段chunk做上下文相关的压缩摘要,只保留跟当前问题有关的实体和逻辑链,再拼进prompt。另外,如果Agent是多轮对话,我会把历史对话单独做一轮意图蒸馏,只把用户最新问题的“隐含前提”带进检索,而不是把全部历史都塞进去。还有个偏工程的做法是,给每个chunk打上段落级标题,按路由只召回相关章节,这样数量能砍掉一半。不过压缩摘