微调与对齐

SFT 训练数据怎么构造?数据质量要求高体现在哪些方面?数据量怎么确定?

91学AI·2026/7/26·10 阅读

考察点

SFT 阶段「数据大于配方」是行业共识,面试官想看你是否真做过数据:来源怎么组合、怎么清洗去重、质量差的数据会造成什么症状。LIMA 这类工作证明了「少而精」的可行性,所以数据量问题不能拍脑袋报数,要讲出和数据质量、任务覆盖度的关系。追问常落在「怎么自动筛数据」「标注不一致怎么办」「自己造数据怎么保证多样性」。

参考答案

数据来源的几种组合

SFT 数据本质是 (指令, 期望回复) 对。常见来源有四类:一是开源指令集,如 Alpaca、ShareGPT、OpenAssistant 等,量大但质量参差,直接用要重筛;二是人工撰写和标注,质量最高、成本也最高,适合定义任务的「标准答案范式」;三是用强模型(GPT-4 级别)生成,即 Self-Instruct 路线——从少量种子任务出发,让模型自动扩展指令再生成回答,成本骤降,是现在的主流;四是业务真实数据改写,比如把客服工单、审核记录加工成指令格式,这类数据对落地最有价值,因为它自带真实分布。

实际项目几乎都是混合使用:通用指令打底保泛化,领域数据定能力上限,人工精标的一小部分定输出风格和格式标准。

质量要求体现在哪

质量要求高不是一句口号,拆开看至少五个维度:

  • 准确性:回答本身必须是对的。一条事实错误的 SFT 样本,模型会忠实地学会这个错误。强模型生成的数据必须有过滤环节,常见做法是规则校验(代码要能跑通、数学要验算)加模型交叉验证。
  • 指令多样性:任务类型(问答、摘要、改写、推理、代码……)、指令句式、长度、难度都要铺开。指令分布太窄,模型会对没见过的问法泛化差。多样性比单纯堆量重要得多,LIMA 用 1000 条精选数据就训出了可用模型,靠的就是精挑的多样性。
  • 回复风格一致:输出格式、口吻、详略程度要统一。数据里一部分回答很简短、一部分很啰嗦,模型学到的是行为上的随机性,线上表现就是「同样的问题两次回答风格飘忽」。
  • 去重与去污染:重复样本等于变相加大权重,会加剧过拟合;和评测集重合的样本必须清掉,否则评测数字全是水分。通常用 n-gram 或 embedding 相似度做两级去重。
  • 难例覆盖:不能全是简单题。多步推理、长上下文、需要拒答的安全样本都要有,缺哪类模型就差哪类。

构造流程长什么样

一个典型的流水线是:种子任务设计 → 强模型批量生成 → 规则过滤(格式、长度、敏感词)→ 模型打分/交叉验证 → 去重 → 人工抽检(通常抽 5% 到 10%)→ 按配比混合 → 转成训练格式(带 chat template 的多轮结构)。每一步都要留数据血缘,方便出问题回溯。迭代方式一般是飞轮式的:训一版模型 → 收集线上 badcase → 针对 badcase 定向造数据 → 再训。这个闭环比一次性造一大批数据有效。

数据量怎么确定

没有普适数字,但有几个参照系:通用能力对齐,LIMA 证明几千条精品可见效,主流开源模型的 SFT 阶段在几十万到上百万条量级;垂直领域适配,几千到几万条高质量领域数据通常就能看到明显收益;领域基座级改造(比如从通用模型改成医疗模型),那已经不是 SFT 的活,要走到继续预训练加几十万条起步的领域指令。

判断「量够不够」的实操方法是画数据量-效果曲线:用 10%、30%、100% 的数据各训一版,看验证集指标的斜率。还在明显涨就加数据,平了说明瓶颈不在量,在质量或覆盖度。另外一个反直觉的经验:一万条精洗的数据常常胜过十万条粗筛的数据,清洗投入的性价比远高于堆量。

格式细节别忽略

训练样本要走模型自己的 chat template,system prompt 的有无、多轮对话中 loss 算在哪些 token 上(通常只算 assistant 的回复,输入部分 mask 掉)、EOS token 是否正确拼接,这些细节错了,模型要么学会不停输出,要么学会提前截断。排查 SFT 异常时,先把一条样本 decode 出来肉眼看一遍,比盯着 loss 曲线猜半天有效。

可能的追问

追问:怎么低成本地筛掉强模型生成的低质数据? 组合手段:规则层先卡格式和长度;再用另一个模型给回答打分或让生成模型自评(self-critique),去掉低分;对可验证的任务(代码、数学)直接执行校验,过不了测试用例的整条丢掉。

追问:SFT 数据里需要放拒答样本吗? 需要,但要控制比例并保证拒答方式一致。全部拒答样本都是「作为一个 AI 我不能回答」这种生硬模板,模型会拒答过敏,正常问题也拒。好的做法是拒答里给出原因和可行的替代帮助。

追问:多轮对话数据怎么构造,loss 怎么算? 多轮数据要保证上下文逻辑连贯,每轮回复都基于前面的历史。训练时通常把 user 轮的 token 做 loss mask,只在 assistant 回复上计算损失;有些做法会 mask 掉除最后一轮外的所有内容,取决于你想让模型学「每一轮都答好」还是「学会在对话末尾给出终稿」。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.