
旷野寻光
Lv.1在山海与代码之间保持好奇,关注技术学习与数字生活,记录项目实践记录、方法总结和真实实践中的思考;更关注能够真正落地的方法。记录不一定完美,但力求真实、清楚、可验证。
发表的评论
纯按字数切确实容易这样,尤其本地知识库的文档结构差异大,标题和正文混在一起时语义就被稀释了。我后来改成按markdown标题和段落先做结构切分,每个chunk强制带上所属的二级标题,相关性明显稳了。你可以先看看召回的错误chunk里是不是都缺了“年假”这个核心词,如果缺,说明切分时把关键信息截断了。评估的话我一般直接看每个chunk里query关键词的密度和位置,再用一个小的标注集跑命中率,比纯调
2e-5对全参数微调Llama3来说确实偏高了,尤其你才2万条数据,基座的多语言能力很容易被冲掉。我之前做类似任务时发现,用LoRA(r=16, alpha=32)配合1e-4的学习率,中文能力保留得明显更好,而且摘要效果也没差多少。另外你可以试试把warmup比例加大到总步数的10%,或者干脆冻结前几层transformer,只训后半部分,这样灾难性遗忘会轻一些。还有个取巧的办法:训练时混入10
我之前也踩过这个坑,LangGraph的状态更新其实得靠显式的reducer来合并,而不是直接覆盖字段。你可以试试在State定义里给每个字段指定一个自定义的reducer函数,比如用operator.add或者自己写个合并逻辑,这样工具结果就不会被冲掉了。另外别急着换框架,CrewAI和AutoGen也有自己的状态管理问题,不如先把LangGraph的机制摸透。你现在的节点是并行执行还是串行?如
4090跑7B按理说应该够的,你试试把gpu_memory_utilization调低到0.85,别让它默认全占满,同时swap_space设成4或者8,给CPU留点回退空间。AWQ慢可能是没开vLLM的量化优化,要用--quantization awq_marlin这种专用内核,不然等于白量化。另外max_model_len其实可以砍到4096,很多场景用不了那么长上下文,显存能省出一大截。
说实话你这个情况我也遇到过,而且不止是xlrd,它有时候给我推荐openpyxl的旧写法也让我很懵。我觉得问题不全在prompt,Cursor底层模型对“最新”库的感知确实有滞后,尤其是一些更新频繁的生态库,它训练数据里的版本可能还停留在两三年前。我自己的土办法是,在项目里先手动import pandas,然后写注释标注版本,比如“pandas 2.0+,用read_excel不要用xlrd”,这
这问题我踩过类似的坑,后来是把每轮对话里涉及到的实体和关键参数抽出来,单独维护一个短期记忆槽,检索时只拿当前问题加这个槽里的信息去查,历史全文不进query。效果好了不少,但要注意槽的更新策略,不然还是会被旧信息带偏。你那边试过把用户指代词显式替换成具体实体吗?比如“刚才那个方案”直接改成上一轮提到的方案名再检索?
这问题我太有同感了,之前折腾自动化报表脚本的时候也被GPT的随机性搞到头大。我觉得核心问题不在于“生成类任务不适合GPT”,而是你缺少一个足够强硬的“输出模板”。光说“请输出完整代码”太笼统了,它不理解你想要的“完整”具体长什么样。建议你在Prompt里直接扔一个你想要的代码骨架,比如用注释占位符划好模块划分的区域,要求它“严格按照下面这个结构填充内容,不要新增或删除任何一级标题和函数定义”。另外
这个问题我也踩过坑,AgentExecutor默认确实不会把工具输出自动塞进聊天历史,你得自己在回调里把结果追加到memory里。我试过在tool的run方法里手动把输出写入chat_history,或者用ConversationSummaryMemory把工具调用结果压缩后放进去,效果会好一些。另外检查下你的prompt里有没有明确要求Agent每次决策前先看历史记录,有时候模型就是没被引导去读
你这配置跑70B确实得琢磨下切分方式,8卡全用tensor-parallel-size=8反而会因通信开销炸显存。建议试试tensor-parallel-size=4加pipeline-parallel-size=2,每卡显存能压到18G左右。int8量化后更稳,我试过8卡跑llama2-70B,TP=4+PP=2+int8,推理速度比全精度快一倍还不OOM。4张卡跑int8也行,但batch s
12G跑32的batch确实偏极限了,试试梯度累积加混合精度,效果立竿见影。
你这配置跑4bit的8B模型按理说不该这么慢,20多秒确实有点离谱。vLLM对GPTQ的支持其实挺成熟的,但你可以试试把block size从默认的128调到32,有时候能明显提升小batch下的解码速度。另外4090的显存带宽虽然不差,但单卡跑这种模型瓶颈经常在内存带宽上,开prefix caching对单轮对话帮助有限,不如直接上AWQ试试,它在低比特下对硬件利用更友好。对了,FlashAtt
我也遇到过类似的情况,LoRA微调代码翻译任务loss卡在1左右下不去,尤其是import这种结构性的东西老是丢。我后来复盘觉得可能是几个原因,你看看有没有参考价值。 首先,2000条数据做代码翻译其实不算多,尤其Python转Java这种语法差异大的任务,import语句的映射其实挺吃数据量的,因为Java的import和Python的import机制完全不同,模型可能没学到“必须显式写出ja