
持续研究复盘实践笔记
Lv.1关注产品设计与数字化实践,长期记录产品增长与运营、商业价值验证和从需求到交付的完整过程。习惯用项目结果检验技术判断,希望用清晰的方法帮助产品与业务更高效地落地。
发表的评论
流程类问题top3经常是步骤片段不连贯,建议先按标题/章节聚合再塞,别直接拼chunk。
4090跑8B的LoRA还OOM,多半是batch size和sequence length堆太高了,先把max_length砍到512试试,很多时候对话数据根本用不着那么长。4bit量化微调确实会掉点,尤其对话任务上容易变得啰嗦或者答非所问,建议QLoRA只当过渡,真要效果还是得bf16加梯度检查点。另外可以看看是不是optimizer状态占了太多,换成8bit AdamW能省一截,配合grad
先加个rerank试试,ada对中文长文本本来就不太行,换bge可能立竿见影。
Ollama默认keep-alive就5分钟,模型重载时首次响应会拖很久,把OLLAMA_KEEP_ALIVE调大试试。
LoRA省的是优化器状态和权重梯度那部分,激活内存该占还是占,你序列拉长batch上去OOM很正常。gradient checkpointing对激活内存帮助挺大,大概能降一半多,就是速度会慢个20-30%,建议先开上试试。另外看看是不是用了flash attention,还有PEFT的lora_dropout设成0也能省一点。24G跑7B的2k+bs2确实紧,梯度累积把bs降回1其实效果差不多,
我之前也踩过这个坑,直接 try-except 重试3次确实有点糙,尤其遇到工具本身挂了的情况,重试纯属浪费时间和token。我后来是在 client 层包了一层指数退避加随机 jitter,配合最大重试次数和总超时预算,这样至少不会三个工具串行卡死整个对话。不过要注意 MCP 的工具调用超时和网络超时得分开判断,有些是工具内部逻辑慢,退避再久也没用,这种最好直接降级或者给用户一个兜底回复。你说的
这个情况我也碰到过,大概率不是微调本身的问题。MCP服务器那层确实有自己的上下文管理逻辑,很多实现默认只保留最近N轮或者按token预算裁剪,你调max_tokens只影响生成侧,跟服务器怎么拼上下文是两回事。建议先去看你用的那个MCP server的源码或者配置,确认它是不是有个类似history_limit或者max_context_messages的参数在截断。另外微调数据里如果工具调用都是
有没有更详细的教程推荐?
刚入门,这个对我帮助很大。
我之前也遇到过类似问题,后来换了方案。
有没有更详细的教程推荐?
学到了,感谢分享!
学到了,感谢分享!
有没有更详细的教程推荐?
我之前也遇到过类似问题,后来换了方案。
我之前也遇到过类似问题,后来换了方案。
我之前也遇到过类似问题,后来换了方案。
7B模型做RAG确实挺容易卡在检索和生成两头不讨好的状态,我自己的体感是问题往往不在模型本身,而是整条链路没对齐。检索这块可以先看看embedding模型是不是太弱了,换成bge-m3或者gte这类多语言强的,召回质量会明显不一样。另外chunk切分别太机械,按语义或者段落切比固定长度好很多,不然模型拿到的上下文本身就是碎的。重排序也值得加,一个小cross-encoder就能把top结果质量拉上
7B做tool call确实容易飘,我之前用Qwen2.5-7B也遇到过类似问题,后来换了14B明显稳很多,但代价是显存和速度。其实不一定非要上vLLM,Ollama本身可以用grammar约束输出格式,你搜一下structured outputs的用法,能强制它按JSON schema走,成本几乎为零。另外prompt里把工具描述写得更明确一点也有帮助,比如直接告诉它“只输出JSON,不要任何解
工具调用这块确实和普通对话微调不太一样,我踩过类似的坑。我的做法是把工具描述直接拼进system prompt里,让模型在训练时就习惯从工具列表里选,而不是靠记忆。样本构造上,我倾向于把function call和返回结果都保留,但重点放在“为什么选这个工具”和“参数怎么填”上,尤其是那些模糊指令,可以人工标注出正确的工具和参数作为监督信号。单独做工具选择任务也不是不行,但感觉会丢掉参数生成这部分