指令数据构造:从种子到指令-回答对

03-数据工程 核心≈ 25 分钟 #指令数据#SFT#数据构造 reviewed
我的状态:

前置知识点

一句话定义

指令数据构造把业务需求转成「指令-输入-回答」三元组训练样本,决定了微调效果的上限——模型学到什么,完全由数据定义。

为什么重要

社区共识:微调效果的上限由数据决定,训练技巧只能逼近这个上限。LIMA 用约 1000 条精选数据就做出可用的对齐模型,反过来,十万条脏数据可以把强模型训废。数据工程通常占整个微调项目一半以上的工时,是投入产出比最高的环节。

前置知识

kp-002 的决策结论——已确认失败模式是「行为类」问题,适合微调。

核心概念

  • 指令三元组:{instruction, input, output}——要做什么、可选上下文、期望输出。
  • 数据来源四路:人工撰写(最贵最准)、历史生产日志改造(真实但需脱敏清洗)、强模型蒸馏生成(便宜量大但需审核)、开源数据集混入(补通用性,注意许可)。
  • 质量三律:多样性(覆盖任务与表述方式)、准确性(回答本身正确)、难度分层(简单到困难都要有)。
  • Self-Instruct:用模型自我生成指令与回答再人工筛,是蒸馏式构造的代表范式。

原理与机制

数据量的经验区间(格式/风格类任务):500-2000 条通常可把格式遵从率推到 90% 以上;领域问答与流程类任务 2000-10000 条起步;低于 200 条时先用 few-shot 提示(kp-002)。数据多样性的机制原因:训练分布 = 模型学到的行为边界,样本表述越单一,模型越容易把「措辞」当成任务条件,出现「换个问法就不会」的脆弱性。准确性方面,回答中的每个事实错误都会被模型当作目标分布学习——蒸馏数据最大的风险恰恰是幻觉的系统性注入。

图示

业务需求 → 种子集(手写30-50条,定格式定风格)
        → 批量扩充(日志改造/模型蒸馏) → 清洗(kp-011) → 配比(kp-012) → 训练集

直观类比

训练数据像教材例题:例题的风格、覆盖面和答案正确性直接决定学生会考成什么样。抄一百道印刷错误的题,不如精讲二十道对的。

实例或案例

客服微调项目数据预算分配:人工精写 100 条「金标准」确定风格与结构 → 从 5 万条历史会话按满意度与话术规范筛出 2500 条改造 → 用强模型对缺口场景(退款纠纷、物流异常)再生成 1500 条 → 全部过 kp-011 清洗后人工抽检 10%,合格率要求 95%。最终 4100 条训出的模型优于直接用 5 万条原始日志的训练。

操作步骤

  1. 手写 30-50 条种子样本,覆盖主要场景分支,锁定输出格式(模板见 kp-014)。
  2. 定义数据 schema(jsonl:instruction/input/output/system 字段),写校验脚本。
  3. 扩充:日志改造走「筛选 → 脱敏 → 重写为标准格式」;蒸馏走「给强模型种子示例 + 明确风格约束生成,再过滤」。
  4. 人工抽检 10%(不少于 200 条),按准确性/格式/风格三栏打分,合格率 <95% 则回到上一步。
  5. 冻结版本号(如 sft-v1-20261002.jsonl),训练只用冻结版本,改动即升版。

排错清单

  • 模型输出腔调单一、句式雷同:数据多样性坍缩,检查 output 是否千篇一律,补充不同措辞与长度分布。
  • 蒸馏数据幻觉率高:给生成模型提供参考资料或限定「仅改写不改事实」,抽检把关。
  • 训练后模型「复述」训练样本:数据重复或 epoch 过多,见 kp-012。
  • 中文任务混入大量英文数据导致语言漂移:控制语言配比或过滤。
  • 敏感信息泄漏进数据:脱敏流程必须先于入库,见 kp-032。

常见误区

  • 以量取胜:脏数据的边际效果为负,清洗比生成更重要。
  • 全部用模型生成、零人工:幻觉与风格漂移会系统性进入模型;人工种子与抽检不可省。
  • 训练集与业务分布脱节:用网上通用指令集(如翻译过来的 Alpaca)训业务助手,场景错配,效果必然差。
  • 忽略开源数据许可:部分数据集与模型输出有使用限制,商用前核查许可,见 kp-032。

与其他知识点的关系

清洗与打分见 kp-011;多数据源怎么配比见 kp-012;格式字段如何落进对话模板见 kp-014;全流程串联见 kp-021。

延伸阅读

Wang et al. 2022《Self-Instruct: Aligning Language Models with Self-Generated Instructions》;Zhou et al. 2023《LIMA: Less Is More for Alignment》。

自测题

  1. 只有 150 条可用数据,应该微调吗?

答:不建议直接微调,先做 few-shot 提示基线;同时用种子扩充与蒸馏把数据做到 500 条以上再训练。

  1. 蒸馏生成数据的最大风险是什么?如何控制?

答:强模型的幻觉会被当作目标分布系统性学进模型;控制手段是给参考资料约束生成、限制「只改写不改事实」、人工抽检合格率门槛。

  1. 为什么数据要「冻结版本」?

答:保证实验可复现与可归因——训练结果差异能追溯到确定的数据版本,而不是一个不断变动的目录。

相关知识点

来源

  • Wang et al. 2022《Self-Instruct: Aligning Language Models with Self-Generated Instructions》
  • Zhou et al. 2023《LIMA: Less Is More for Alignment》

基于模型知识整理,建议按需核对原文。