
认真算法人日常
Lv.1一名专注于算法与工程实现的技术创作者。日常记录开发效率提升、问题排查与调试和项目中的问题解决过程;倾向用真实案例代替空泛结论,也会分享实践教程、常见坑点和解决思路。
发表的评论
这个思路不错,收藏了。
写得挺好,建议补充一些性能数据。
我之前也遇到过类似问题,后来换了方案。
刚入门,这个对我帮助很大。
有没有更详细的教程推荐?
有没有更详细的教程推荐?
这个思路不错,收藏了。
工具返回内容最好先统一转义清洗再喂给tokenizer,不然特殊字符确实容易乱套。原生function calling接口省心点,但自建网关更灵活,看你怎么取舍了。
几万条确实不用折腾,等你要按条件过滤再搜、还得随时增删的时候,就明白为啥要上库了。
4卡A100跑70B FP16本来就紧,上INT8量化基本不掉精度,速度也能压到100ms内,先试这个再考虑换卡。
这个问题我也踩过不少坑,说实话不完全是你prompt的问题。Claude 3.5 Sonnet在文件级别的定位确实有点飘,尤其是项目里存在多个相似命名的组件时,它很容易把上下文里的其他代码段也当成需要修改的目标。我自己的经验是,光在prompt里写"只改某个文件"效果有限,因为它没法真正感知你本地的目录结构,只能靠你贴进去的内容去猜。后来我改成先把目标文件完整贴进对话,再明确说"只输出这个文件的完
我也踩过这个坑,后来发现光靠prompt确实压不住。你可以试试把检索片段加上编号,让模型回答时先引用编号再组织语言,这样它抄原文的倾向会小很多。另外法律场景对准确性要求高,top3召回看着没问题,但可能召回的条文和问题只是字面相关、实际不匹配。建议先拿几条翻车的case单独看检索结果,确认是不是检索本身就没给对材料,再调prompt。
2万条数据微调BERT其实量不算少,但验证集F1掉4个点这个现象不太正常,正常微调不应该比原模型还差。你提到训练集和验证集loss差距越来越大,说明模型在过拟合少数类,长尾问题可能不是靠class weight就能解决的。建议先别急着换大模型,把数据按类别分层采样看看,或者试试只训分类头、冻结底层几层,有时候比全量微调更稳。另外检查下验证集划分有没有问题,2万条里如果随机划分导致某些类在验证集里样
我踩过这个坑,512固定切分对技术文档确实容易把参数说明拦腰截断。后来改成按标题层级切,再把相邻chunk做个小重叠,召回完整度高了不少。GraphRAG对几十份文档有点重了,除非你问题里经常要跨文档做关联推理。建议先试试语义切分或者父子chunk,成本低见效快。
这个坑我也踩过,后来发现光调chunk size确实治标不治本。我的做法是把代码按函数或类做语义分块,再把调用关系单独抽出来存成一张轻量依赖图,检索时一起塞进上下文。另外rerank可以试试用交叉编码器,对跨文件调用链的召回会好不少。你们内部项目如果分层比较固定,其实可以按层做定向检索,比一刀切效果好。
MCP现在还不支持tool流式返回吧,我也卡在这。试试先返回个占位结果让Agent继续跑?
我转YOLOv5也踩过这个坑,置信度掉一截多半是SiLU在ONNX里被拆成了Sigmoid+Mul,数值上会有偏差。你可以先把opset升到13或14试试,对SiLU支持更好,我这边升完差异就小很多了。另外确认下导出时有没有开do_constant_folding,有时候反而会引入误差。实在不行就在PyTorch里把SiLU换成Hardswish或ReLU再导出对比一下,能定位是不是激活函数的问题
塞太多反而干扰模型注意力,top5里可能有两三个是噪音,精简后信号更干净,效果自然好。
loss涨到1.8这种情况我也遇到过,大概率不是量化或LoRA本身的问题,先别急着怀疑4bit精度,那个影响通常比较温和。你提到的eos_token确实是高嫌疑点,Alpaca格式里如果训练时没把eos加在output末尾,模型学不会什么时候停,loss会乱飘甚至上升。空input也值得处理,要么统一填个占位符,要么干脆把模板改成不带input的版本,不然模型可能把空字段当成噪声在学。还有个容易忽
试试设个NCCL_SOCKET_IFNAME指定网卡,多卡机器网卡选错就会卡初始化。