← 返回题目列表

SFT 数据集应该如何构建?高质量指令数据有哪些标准?

高频 中等 第 11 / 25 题 更新于 2026/07/28
SFT指令微调数据质量数据治理

简化版

SFT 数据通常由指令或多轮消息及目标回答组成,核心不是盲目堆数量,而是保证正确、相关、多样、边界清晰且与线上任务分布一致。数据还要去重、脱敏、控制长度,并按用户、实体或时间合理划分训练集和测试集,防止泄漏。

详细版

一套可用的 SFT 数据流水线包括:

  1. 从业务目标和失败案例定义任务分布;
  2. 制定标注规范、正确答案标准与拒答边界;
  3. 收集或生成候选数据,并由规则和人工审核;
  4. 去重、纠错、脱敏,清理模板残留和互相矛盾的样本;
  5. 覆盖常规请求、难例、边界、无答案和安全样本;
  6. 使用目标模型的 Chat Template 格式化;
  7. 按实体、来源或时间切分,避免相似样本跨集合泄漏;
  8. 保留独立测试集,训练后按任务切片评估。

高质量数据的四个关键词是正确性、相关性、多样性和一致性。合成数据可以扩量,但生成模型的错误、偏好和固定句式也会被学生模型学走,必须抽检和过滤。

完整版教学

记忆钩子:微调题先分清目标是改行为、补知识还是降成本,再谈 SFT、LoRA、QLoRA 和评估上线。

一、SFT 在优化什么

因果语言模型通常用下一 token 预测损失训练。SFT 把期望回答作为目标序列,让模型提高这些目标 token 的概率。模型会学习答案内容,也会学习长度、语气、格式、拒答方式和数据中的错误。

因此数据不是普通文档集合,而是对模型行为的示范。

二、先定义线上分布

数据集应来自明确任务:用户会问什么、输入多长、允许使用哪些信息、答案怎样才算正确。只收集理想问题会让模型在线上边界输入上失效。

应同时覆盖高频常规样本、少见但高风险样本、容易混淆的反例、信息不足场景和对抗输入。

三、正确性比表面流畅更重要

回答语气自然但事实错误,会直接把错误监督写入权重。审核要检查事实、计算、引用、代码可运行性和是否满足指令,不能只看文字是否顺畅。

多位标注者意见不一致时,应先完善规则并记录争议,而不是随机挑一个答案。

四、多样性与一致性并不冲突

多样性指任务、长度、语言、用户表达和难度覆盖充分;一致性指相同规则下的答案边界一致。数据可以有不同写法,但不能一部分样本允许某行为,另一部分又无解释地禁止。

模板化合成数据若开头、结构完全相同,会让模型过度模仿模板。应检查重复率和语言模式,而不只是文件哈希。

五、数据泄漏怎么发生

同一用户会话的不同轮次、同一文档的相邻切片或同一道题的改写,若被随机拆到训练集和测试集,测试分数会虚高。更稳妥的做法是按会话、实体、文档来源或时间分组切分。

正式测试集不应参与 Prompt 调试、样本生成和超参数选择,否则它也会逐渐变成训练信息。

六、合成数据能不能用

合成数据适合覆盖稀缺场景和扩充表达方式,但要控制来源模型、生成 Prompt 和过滤规则。可以用确定性规则检查格式,用外部工具验证计算或代码,再对高风险样本人工复核。

教师模型更强不代表每条输出都正确,自动评分模型也可能与生成模型共享偏差。

七、数据治理

记录数据来源、授权、版本、清洗规则和变更历史;删除密钥、个人信息和无权使用的内容。上线后把真实失败案例回流为候选样本,但必须重新审核,不能直接把用户日志投入训练。

八、面试拆解算例

微调题可以用一个小项目来拆:基座模型 7B,业务只需要客服问答风格统一,训练集初筛 30,000 条,清洗后留下 8,000 条高质量样本。若全量微调,7B 参数按 BF16 仅权重就约 14GB,训练还要梯度和优化器状态;若用 LoRA,只训练低秩增量,显存压力会明显下降,但表达能力受 rank 和目标模块影响。

base_model: 7B
raw_samples: 30000
clean_samples: 8000
lora_rank: 8 or 16
learning_rate: 1e-5 ~ 2e-4
validation_split: 5% ~ 10%
方案适合目标主要风险验收重点
Prompt临时改格式、少量约束长提示不稳定单轮成功率
RAG接入动态知识检索召回不足引用与命中率
SFT/LoRA固化行为和领域表达遗忘与过拟合回归集与人工偏好
全量微调深度改模型能力成本高、风险大全面评测
数据清洗 -> 训练/验证切分 -> 小步试训 -> 回归评测 -> 灰度上线
   |              |             |             |
 去噪去重       防泄漏       看 loss       看坏例

因此回答「SFT 数据集应该如何构建?高质量指令数据有哪些标准?」时,不要直接说“用微调”。先问目标是什么、数据是否足够干净、是否有动态知识,再选择 Prompt、RAG、PEFT 或全量微调,最后用评估集证明它确实变好了。

九、常见误区与追问

  • 误区:微调就是把业务文档喂给模型让它记住。 微调更适合塑造行为格式、任务风格和领域表达,动态知识与事实更新通常更适合 RAG。
  • 追问:为什么这个问题不用 Prompt 或 RAG 解决? 面试里要先说明目标是改行为、补知识还是接外部数据,再选择微调方案。
  • 误区:训练集越大越好。 SFT 更怕低质、冲突、模板化和泄漏数据;少量高质量样本常常胜过大量脏样本。
  • 追问:上线前你会看哪些评估? 至少要覆盖基准集、人工偏好、回归用例、安全红线、延迟成本和灾难性遗忘检查。
  • 误区:LoRA/QLoRA 省显存就没有代价。 参数高效方法降低训练成本,但 rank、目标模块、量化误差和合并部署都会影响最终质量。

十、加强记忆

SFT 数据就是模型的行为教材:答案要对,场景要像线上,边界要一致,难例要覆盖,训练与测试要真正隔离;低质量数据越多,模型只会更稳定地学错。