
上周在一个技术群里看人吐槽他自己攒了两万多条对话数据把一个开源 7B 模型 SFT监督微调拿人工标注的问答对教模型怎么回话了一遍loss 曲线漂亮得像教科书评测集分数也涨了。兴冲冲部署上去用户反馈就一句话——这模型怎么变话痨了问个价格它先道歉再安抚再绕一大圈最后报了个数。他百思不得其解把截图甩到群里问是不是模型基座不行。我点开他的样例数据看了十分钟基本就明白了。问题不在模型在他那两万条数据里。先把这事从头捋一遍。这两年开源微调的全家桶越来越顺手LoRA、QLoRA 加上几个开源训练框架一个懂点工程的程序员从零到模型学会回话一个下午就够。技术门槛降下来之后大家的注意力都放在了怎么训上学习率怎么设、rank 给多少、几轮不过拟合。而数据本身多数人的理解停留在燃料这个比喻上——多多益善攒就完了。这位群友的两万条就是这么来的业务日志里捞一批网上爬一批再用强模型蒸馏用能力更强的模型生成训练数据一批凑齐了就开训。问题就出在这几处。SFT 的监督信号粒度比你想象的细得多。你以为模型在学怎么答对实际上它在逐 token 学接下来说什么——包括那些道歉、铺垫、绕圈子的废话。你的数据里三成对话带着您好非常抱歉给您带来不便模型就原原本本把这套腔调学回去了还学会了在任何场合调用它。评测集为什么发现不了因为评测题也大多是这种客气问答风格模型把腔调答得越标准分越高。训练目标和你真正想要的东西从根上就岔开了。这不是什么新发现。Meta 三年前那篇 LIMA 论文Less Is More for Alignment已经把话说得很直白一个 7B 模型只用精心筛选的 1000 条数据做 SFT效果就跟那些喂了几万条数据的版本打得有来有回。论文里的结论我到现在都记得模型的能力绝大部分在预训练阶段就长好了SFT 教它的不是会不会而是用哪种方式说话。既然只是教说话方式你要的样本就贵在准不在多。道理听着都懂真到自己动手的时候坑还是一个接一个。去年我帮一个做智能客服的团队看他们的 SFT 数据就是这个坑的现实版。他们准备了差不多两万条对话标了好几个星期训练预算烧了不少模型答业务问题倒是对的就是废话密度高得离谱。我们坐下来做数据审计把对话按信息含量重新过了一遍——麻烦就麻烦在这儿原始客服日志里混着大量礼貌性寒暄、重复话术甚至还有几千条是同一个问题的换皮重写。真正带着业务知识、答案风格干净利落的筛完只剩两千多条。我们就做了一次很粗暴的对照实验同一份模型一边用原封不动的两万条训一边只用裁出来的两千三百条训。结果不体面但很真实——小数据版本在他们的真实业务评测里赢了回答长度砍掉接近一半信息密度翻了一倍还多。那个负责标注的姑娘幽幽来了一句所以我们几个礼拜的白干了我只能说那几个礼拜不是白干是给筛选积累了库存。话是这么说她白了我一眼。比多而杂更隐蔽的是多而同。数据量够大、单条质量也不差但样本之间长得太像——同一个模板换汤不换药同一类问法反复出现。这种情况模型不会变话痨它会干更隐蔽的事背题。我在审计另一个项目的时候专门做过检查把验证集里的题拿去和训练集做匹配发现不少验证题在训练集里有近似克隆模型答得又快又好其实是复述见过的话术换个稍微不同的问法就露馅。后来我们养成了个习惯训之前先做去重用 MinHash 这类指纹算法把近似重复的样本找出来加多样性检查宁可样本少也要让每条样本教模型一点新东西。跳出来看这件事在行业里的分量正在悄悄变重。早年大家吹微调比的是谁的数据多、谁的算力猛现在越来越多团队把预算往数据工程上挪——用奖励模型当裁判给样本打分低分直接扔从零标注转成先造再筛用合成数据铺量再靠严格的质检把噪声滤掉。数据清洗这个以前没人爱提的脏活正在变成训练管线里公认的贵环节。当然它自己也长出了新毛病合成数据铺量的路子噪声是会自我复制的——上一代模型的毛病喂给下一代可能被放大成下一代的地基问题。脏数据进、脏模型出这条链子越来越长每一环都得有人盯着。回到群里那位话痨模型的哥们。我给他的建议土得掉渣别急着调参数先把两万条数据裁一遍把所有超过三句废话的回答砍掉重标。两天后他回消息就四个字好了清爽。所以想问问大家你手里那份准备拿去微调的数据集有多少条是真正在教模型新东西的又有多少是拿来凑数的要是心里没底不妨学我做一次数据审计——被自己数据的真实成色吓一跳的估计不止我一个。评论区聊聊你筛数据的时候踩过什么坑