如何构建高质量的 SFT 微调数据集?数据质量和数量哪个更重要?
- 标签:
🏛 业务架构师
构建高质量 SFT 数据集,质量与数量的关系我先给结论:在质量达标的前提下,数量才有效;质量不行,数量是毒药。2000 条精标 > 5 万条爬取噪声,这是被反复验证的行业共识。
构建流程六步:
- 定义任务规格:先写清楚模型要"学会什么"——指令类型清单、输出规范、边界行为(拒答规则)。没有规格就采数据,采回来的是杂物;
- 种子数据采集:优先"真数据"——人工客服标星对话、专家操作日志、历史工单的处理记录,业务沉淀的价值密度远超合成数据;
- 数据增强:用强模型按种子样本批量生成变体(Self-Instruct),同一指令换问法、同一回答换风格,提升多样性;
- 质量三关:格式合规校验(schema 通过)→ 事实准确性校验(可用 RAG+LLM 交叉验证答案)→ 人工抽检 5%~10%;
- 配比设计:目标任务 40%~60% + 通用数据 30% 防遗忘 + 相邻任务 10%~20% 增泛化;
- 留出验证集:10% 隔离数据+黄金评测集,用于训练监控与效果判定。
质量的四个标准:指令无歧义、答案正确且完整、表述多样不模板化、难度分布覆盖真实场景(含边界 case)。
业务提醒:数据集是持续资产——标注规范、质检 SOP、数据版本管理一次建好,每次微调迭代复用。给管理层的账:数据工程占微调项目 60% 工时,但它是唯一能在多个模型、多轮迭代间保值的部分,模型会过时,数据资产不会。
🏗 系统架构师
结论先行:质量 >> 数量——LIMA 论文(1K 精标数据对齐出可用助手)和业界复现都支持这个结论,但要加一个前提:质量优先下的多样性覆盖。
质量标准(什么算高质量):
- 答案正确且专业(事实零错误,或错误答案比不训还糟——模型会放大学习);
- 格式与风格统一(模型会无差别模仿一切,包括不一致);
- 指令多样性:任务类型、难度、问法分布广(多样性本质也是质量的一部分——同质万条等于一条);
- 覆盖线上真实分布(从业务日志采样,不是拍脑袋写)。
数量参考(质量达标前提下):行为对齐 1K~5K 可见效果;典型业务任务 1万~10万 条;领域深度适配 10万+ 并配继续预训练。过了质量线后数量收益边际递减——数据翻倍提升往往小于个位数。
构建方法(按 ROI):业务日志改造(分布最真实)→ 强模型蒸馏(Self-Instruct/Evol-Instruct 生成 + 人工抽检 5~10%)→ 众包精标(高风险领域)→ 开源数据掺配(10~20% 通用防遗忘)。
工程闭环:数据版本化(数据卡)+ 质量抽检流程 + badcase 回流增补机制。我的项目里,数据清洗掉 40% 噪声样本后,同样超参效果反升——这是"质量优先"最有说服力的实证。
💻 全栈开发专家
先给结论:质量 >> 数量。LIMA 论文(Less Is More)证明 1k 精品数据能调出强对齐模型,我们实践一致:5 千条干净数据好过 5 万条脏数据——脏数据不仅无效,还教坏模型(学到错误格式、偏见、幻觉模式)。
高质量数据集的构建:
- 明确行为规格:先写「模型应该怎么表现」的 spec(格式、语气、拒答边界、安全),数据是 spec 的实例化——没有 spec 的数据收集是碰运气;
- 来源分层:真实业务日志(最值钱,分布对)> 领域专家撰写(质量高)> 强模型生成(量大要审)> 公开数据集(混合用防偏);
- 多样性设计:按任务类型/难度/输入长度/边界情况分层覆盖,每种类型至少有代表;拒答样本、多轮样本、带干扰信息样本刻意构造;
- 清洗流水线:规则过滤(长度异常、格式错、乱码)→ 语义去重(Embedding 聚类)→ LLM 质量打分(1~5 分留 ≥4)→ 人工抽检 5%~10%;
- 迭代闭环:训练→评测→badcase 归因→定向补数据。数据集是活资产,不是一次性交付。
数量参考线:风格/格式微调 1k~10k;领域问答 1w~10w;再往上边际收益快速递减,钱花在标注质检上更值。
一个反直觉经验:把数据集砍半只留高质量子集,效果常常不降反升——遇到瓶颈先做减法。