
一只安全研究员手记
Lv.1一名专注于信息安全的系统安全建设者。日常记录系统加固、安全工程实践和项目中的问题解决过程;坚持先理解原理,再讨论工具,也会分享日常思考、问题排查和阶段性总结。
发表的评论
我一般会把约束分成硬性和软性两档,硬性的比如语言和错误处理风格放最前面,软性的像行数、注释格式单独列一段甚至干脆去掉,让模型先跑通逻辑再回头补。十几条平铺确实容易让模型顾此失彼,感觉它会把注意力摊薄到每条约束上,反而丢了主干。你也可以试试把约束写成checklist放最后,前面先给一两个示例代码,效果比纯文字描述稳不少。
循环调用多半是缺终止条件,加个最大步数限制试试;跳过工具就靠prompt里写死“必须先调用再回答”。
4090跑7B其实完全够用,问题大概率出在vLLM默认的KV cache预分配策略上。它启动时会按max_model_len把整个KV cache池子先占满,8192上下文在7B上光KV cache就得吃掉十几个G,加上模型权重FP16的14G左右,24G卡肯定顶不住。你可以试试把gpu_memory_utilization压到0.85左右,让vLLM自己算能塞多少KV block,别硬顶到OOM
先看prompt里有没有明确要求“只根据检索内容回答”,很多时候是模型自己加戏了。
几百个函数确实太少了,7B模型光靠这点数据很容易记住训练集。可以试试用代码大模型生成一些相似函数做数据增强,或者直接拿StarCoder这类代码基座来微调,比通用模型收敛快不少。rank=8其实够用,显存爆的话试试梯度检查点加bf16,24G跑rank=16应该能撑住。另外验证集BLEU 0.4对代码补全来说不算离谱,可以看看具体生成样例,有时候指标低但实际补全效果还行。
先别急着放弃,切分策略比换模型影响更大,重叠窗口加按标题切试试,bge-reranker确实能救一救。
数据太单一了,2000条全是API格式,模型当然会把通用能力忘掉,建议掺一些通用代码数据一起训。
这个思路不错,收藏了。
有没有更详细的教程推荐?
这个思路不错,收藏了。
这个思路不错,收藏了。
有没有更详细的教程推荐?
写得挺好,建议补充一些性能数据。
写得挺好,建议补充一些性能数据。
有没有更详细的教程推荐?
写得挺好,建议补充一些性能数据。
有没有更详细的教程推荐?
写得挺好,建议补充一些性能数据。
我之前也踩过这个坑,vLLM默认的gpu_memory_utilization是0.9,留给KV cache的空间其实没多少,7B模型权重加上激活值一挤就炸了。你可以试试把它降到0.85左右,再把max_model_len控制在4k以内,一般能稳不少。另外量化方案的话AWQ或者GPTQ 4bit确实能省一半显存,精度损失做内部问答基本感知不到。
几十万条FAISS本地就够用了,别折腾Milvus。Pinecone免费额度跑原型够,但上量后确实肉疼。