一份指令集可以看起来无可挑剔——问题干净、答案用心、语气统一——却仍然让模型变差。问题通常不在答案,而在这份数据悄悄教的是风格,不是行为。
这是指令数据最奇怪的地方:它是最容易收集的语料,也是最容易出错而不自知的语料。
风格比知识泄漏得更快
一个团队写的指令集,会带着这个团队的口吻。开头的句式重复,回避的句式重复。模型往往还没学会任务,就先学会了声音——因为这份声音是每一行都有的共同点。
解法不是「写得更小心」,而是换人来写,并且检查一件事:只看第一句话,分类器能不能判断出这是哪类任务?能判断,模型多半也能。
重复是最便宜的那类昂贵错误
近似重复藏在改写里。三个只是换了说法、其实同一个问题的提示,会让模型在同一个行为上训三遍,而你真正想补的那类行为一行都没有。
去重要在意图层面做,而不是字符串层面:归一化提示、去掉领域名词,再把剩下的聚成类。留下来的,应该是一组彼此不同的行为。
长度是一个标签
如果每条长提示都配长答案、短提示都配短答案,模型学到的是这种配对,而不是推理。要有意打散长度:短问题配长答案,往往才是承载真正行为的那一行。
留出集必须长得像真实请求
由写训练集的人顺手写的留出集,衡量的是风格一致性。留出集要从真实使用里取——生产环境里那种混乱的、说了一半的请求——否则你只是在对一个没有用户会参加的考试调参。
交付前我们跑的清单
- 只看答案风格,分类器能猜出任务类型吗?能,就换人换写法。
- 重复是按意图去掉的,而不是按措辞?
- 提示长度和答案长度是彼此独立的?
- 留出集和训练行的来源不同?
- 每一行都带任务类型与难度标签?
答不上这些,这份数据照样能训出一个「听起来很专业」的模型。专业不等于有能力。
从哪里开始
做监督微调集,先从你想改变的行为出发,再倒推哪些行能演示这个行为。语料总目录说明了指令行在各训练阶段怎么用;如果你要训的是「对题目做推理」而不是对话,题库语料是最近的邻居。
这些 SFT 语料由 Zovda 通过 Datuva 生产,风格与能力标签打在每一条上而不是整个数据集上,改配比不需要重新标注。
告诉我们你要教的行为和需要的量,我们会在 1 个工作日内回复;范围确认后提供字段说明。
