第 17 章 篇三:后训练数据工程

后训练数据来源

指令数据、偏好数据、推理数据的来源渠道与采集方式。

后训练 数据来源

预训练数据靠”挖”,后训练数据靠”养”。

四大来源各有死穴:人工贵、开源杂、合成偏、日志脏。


17.1 四大来源全景对比

后训练数据有四大来源,各自的成本、质量、规模、适用阶段截然不同:

来源单条成本单条质量规模上限适用阶段主要风险
人工标注5-50 美元极高1 万-10 万SFT/偏好成本爆炸
开源数据池≈ 0 美元中-高10 万-1000 万SFT/偏好同质化/污染
模型合成0.001-0.1 美元中10 万-1000 万SFT/偏好/RL模型偏置
生产日志≈ 0 美元高10 万-1 亿SFT/偏好隐私/采样偏差

⚠️ 读这张成本表之前先看口径。“人工标注”单条成本跨越约两个数量级,差别几乎全部来自”要不要领域资质”:

口径通用英文 / 批量需领域资质(法律/医疗/金融)
批量众包 · 平台制约 $0.1–1/条(SFT/指令);偏好 $0.5–5/样本众包 $3–15/小时,真领域专家 $30–60/小时
项目制 · 通用英文SFT 指令-响应对约 AUD 8–25/对;RLHF 偏好比较约 AUD 15–50/次SFT AUD 25–75/对;RLHF 偏好 AUD 40–120/次
专家全职团队(InstructGPT 口径)SFT $20–50/条、偏好 $30–80/对—

三点必须讲清:① InstructGPT 的 20-50 美元属于专家全职团队口径(40 名全职标注员、时薪 30-50 美元、通过率 <5%),不应作为常规 SFT 的单位成本基准——本章 §17.2.1 引用它时未作此区分;② 上表为市场报价区间(单一供应商博客口径,非权威调研),因地区与供应商差异极大,只可用于定数量级,不可直接进预算表;③ 初次报价通常不含隐藏成本——QA、返工循环、合规文档评审、数据导出摩擦,这四项在批量项目里往往能再加 30% 以上。

时间维度:RLHF/偏好数据的价格自 2025 Q1 起上涨约 20–35%(RLHF 管线扩张快于合格评测员供给)。这直接影响 §17.6.3”人工 5-10% 做质量锚”的可行性——同样的预算,2026 年能买到的偏好对数量比 2024 年少了约四分之一到三分之一。

替代档:RLAIF 比人工标注便宜约 10 倍(同一口径),适合作为专家裁决前的规模化基线——这与 §17.6.2 DPO 阶段”RLAIF 50%“的配方是对得上的:先用 RLAIF 铺量,再用那 20% 的人工预算做裁决与校准。

工业级配方通常是”混合四源”:

  • 5-10% 人工标注做”质量锚”
  • 30-50% 开源数据做”能力底盘”
  • 30-50% 模型合成做”长尾补充”
  • 10-20% 生产日志做”真实分布对齐”

下面逐一拆解。


17.2 人工标注:贵但准

17.2.1 InstructGPT 的 40 人标准

InstructGPT(Ouyang et al., 2022)是人工标注的标杆案例。OpenAI 招募了 40 名全职标注员:

  • 筛选严格:通过率 < 5%,要求本科以上学历、英语母语、通过 SFT 与偏好标注两轮测试
  • 培训密集:入职两周培训,覆盖指令理解、安全边界、偏好标定
  • 双盲审核:每条数据由 2 名标注员独立标注,分歧 > 1 分的进入仲裁
  • 持续校准:每周一次校准会议,对齐标注标准
  • 薪酬:时薪 30-50 美元,远高于众包平台

这套体系的产出是 13K 条 SFT 数据 + 33K 对偏好数据,质量极高。但成本惊人——单条 SFT 数据综合成本 20-50 美元,单对偏好数据 30-80 美元。

17.2.2 标注流程 SOP

工业级人工标注的标准流程:

1. 标注规范编写(20-50 页,含正反例)
2. 标注员筛选(测试 100 条,准确率 ≥ 85%)
3. 试标注 100 条 + 双盲交叉校验
4. 校准会议对齐分歧
5. 正式标注(每条 5-15 分钟)
6. 双盲复审(分歧 > 1 分仲裁)
7. 抽检 10% 进入终审

17.2.3 标注平台选择

平台单条成本适用场景备注
Surge AI5-15 美元高质量 SFT/偏好美国本土标注员
Scale AI3-10 美元大规模 SFT上市平台,流程规范
Labelbox2-8 美元通用标注灵活定义任务
Toloka0.5-3 美元大规模粗标众包,质量参差
自建团队5-30 美元核心数据长期最划算

踩坑经验:

  • 众包平台(Toloka/Clickworker)的偏好数据质量普遍低于专业平台 20-30%
  • 自建团队前 3 个月产能极低,但 6 个月后质量超过外包
  • 标注规范不写正反例,准确率永远上不去 80%

17.2.4 标注规范的”三必写”

一份合格的标注规范必须包含:

  1. 任务定义:明确要标什么,不要标什么
  2. 正例:5-10 个典型好样本,标注理由
  3. 反例:5-10 个典型坏样本,标注问题

例如标”有帮助性”偏好时,必须明确:

  • 正例:直接回答 + 必要细节
  • 反例:绕弯子 + 空话套话 + 不相关
  • 边界:在不确定时偏向”提供更多信息”还是”简洁”

17.3 开源数据池:免费但有坑

17.3.1 主流 SFT 数据池速查

数据集规模来源质量适用场景机器可读 license(HF API 实测)
OpenHermes-2.51MGPT-4 合成高通用 SFT🔴 无(cardData.license 为空;README 自称 MIT)
Tulu-3-SFT939K混合高标杆配方odc-by
Infinity-Instruct7M合成+开源中-高大规模 SFT未核(API 返 401,需自核)
ShareGPT100K+用户分享中真实对话未核(无 canonical repo)
WizardLM/Evol-Instruct250KGPT-4 进化高指令多样性mit
NuminaMath860K数学合成高数学能力apache-2.0
Magicoder110K代码合成高代码能力mit
OpenOrca4MGPT-4 蒸馏中通用未核(API 返 401,需自核)
Nemotron-Post-Training-Dataset-v2(2025-08)1M–10M 行NVIDIA 开源高通用后训练 / agenticcc-by-4.0
Nemotron-RL-Super-Training-Blends(2026-03)—NVIDIA 开源高RL 训练混合cc-by-4.0

2026 新增的开源后训练数据来源(NVIDIA 官方技术报告一手确认,见 16.9.6):除 Base / Post-Trained / NVFP4 checkpoint 外,NVIDIA 一并开源了训练配方、数据与 RL 环境。数据侧可点名的是:

  • Nemotron-Posttraining-v3——报告原文定义为”a collection of post-training datasets for improving agentic, reasoning, and general model capabilities during SFT and RL”(本报告此前因 PDF 文本截断只显示 Nemotron-Pos…,本轮已确认为 Nemotron-Posttraining-v3);
  • Nemotron-Post-Training-Dataset-v2——HF nvidia/Nemotron-Post-Training-Dataset-v2,cc-by-4.0,1M–10M 行;
  • Nemotron-RL-Super-Training-Blends——HF nvidia/Nemotron-RL-Super-Training-Blends,cc-by-4.0;
  • 预训练侧另有 Nemotron-Pretraining-Code-v3(173B token,GitHub 代码,截止 2025-09-30)、Nemotron-Pretraining-Legal-v1、Nemotron-Pretraining-Specialized-v1.2。

对本章读者的价值:这是上表里唯一一个”数据 + 配方 + RL 环境”成套开源的来源,且许可证机器可读(cc-by-4.0),可直接进流水线而不必先做一遍许可尽调。

17.3.2 偏好数据池速查

数据集规模来源质量备注
UltraFeedback64K多模型对比高4 维度评分
HelpSteer221K人工标注极高NVIDIA 出品
ShareGPT-Preference100K用户投票中偏差大
Anthropic-HH161K人工标注高Helpfulness+Harmlessness
Capreolus18K人工标注高金标数据

17.3.3 用开源数据的”三查”

开源数据不能拿来就用,必须做三查:

一查:来源可溯

  • OpenHermes-2.5 是 GPT-4 合成的,使用时要注意 OpenAI ToS 风险
  • ShareGPT 是用户上传的 ChatGPT 对话,含 PII 风险
  • OpenOrca 是蒸馏 13B 模型的,质量参差

一查还应该加两条可自动化的检查:

  1. 检查有没有机器可读的许可证字段,而不只是 README 里的文字声明。 这不是理论担忧——本章速查表第一行就有实例。本轮实测 HF Datasets API(2026-10-10)的返回:teknium/OpenHermes-2.5 的 cardData.license 为空,即没有机器可读许可证(其 repo README 自称 MIT)。对照之下,同表其他条目是有字段的:allenai/tulu-3-sft-mixture = odc-by、AI-MO/NuminaMath-CoT = apache-2.0、ise-uiuc/Magicoder-OSS-Instruct-75K 与 WizardLM_evol_instruct_70k = mit。 记住第 13 章的结论:平台 License 标签的遗漏率 70%+、错误率 50%+。因此”hub 页面上写了什么”不构成许可证据——要读的是 API/元数据里的机器可读字段,读不到就按”未授权”处理并留痕。

  2. 同一数据集的不同 split 许可证可能不同。 例如 Magpie-Pro 系列中 Magpie-Align/Magpie-Pro-MT-300K-v0.1 的机器可读许可证是 Llama 3 Community(llama3),而非 Apache-2.0。“因 split 而异”本身就是要在入库时逐 split 记录、而不是整个数据集记一个值的理由。

二查:评测污染

# 检查数据是否包含 MMLU 测试集
from datasketch import MinHash
def check_contamination(dataset, benchmark, ngram=13):
    # 13-gram MinHash 检查
    ...

工业级要求污染率 < 0.1%,必扫 MMLU、GSM8K、HumanEval、IFEval、MT-Bench 等 20+ 评测集。

三查:分布对齐

  • 检查任务分布:不要全是闲聊
  • 检查语言分布:英文占比过高会拉低中文能力
  • 检查长度分布:超长数据(>8K)会拖慢训练

17.3.4 开源数据的同质化陷阱

很多开源数据集底层共享来源:

  • OpenHermes / OpenOrca / Infinity-Instruct 都部分来自同一批 GPT-4 合成
  • 直接混合会导致严重同质化,4-gram 重复率超过 60%

解决方案:

  1. 混合前做全量去重(MinHash + Jaccard 0.7)
  2. 控制单一来源占比 < 30%
  3. 用 Embedding 聚类找冗余簇,每个簇只保留 N 条

还有一条失效模式必须单独讲:近重复会跨 train/validation 分割泄漏。

同质化不只是”浪费算力”,它有一个更隐蔽的后果。以 meta-math/MetaMathQA 为例:它含大量同一题目的近重复改写。如果近去重只比较 instruction 的 shingles,这些孪生样本会被分到 train 侧与 validation 侧两边——于是模型可以靠记住训练侧的孪生样本通过验证,验证损失系统性过于乐观。

这条为什么危险:它不是让训练变差,而是让你以为训练变好了。做数据消融、选 checkpoint、调配比,全都在看验证集;验证集被污染时,所有结论都朝错误方向偏,而且看不出来。

处理办法:去重必须在切分之前做,或者跨分割边界去重——先固定验证集,再丢弃训练集中与验证集近重复的样本(而不是反过来)。顺序不能颠倒,否则验证集本身已经被训练侧的孪生样本”看过”了。

判据:抽 100 条验证集样本做近邻检索,若前 5 近邻里有训练样本且相似度高于你的去重阈值(本章是 Jaccard 0.7),分割就是漏的。这个检查很便宜,应该做成 CI 里的常规项。


17.4 模型合成:便宜但有偏

17.4.1 三种合成范式

范式 1:强教弱(Distillation)

用 GPT-4 等强模型生成响应,弱模型学习。代表:OpenHermes、OpenOrca。

# 强教弱伪代码
prompts = load_prompts()  # 来自开源/合成
for p in prompts:
    response = gpt4.chat(p, temperature=0.7)
    save_to_sft_data(p, response)

优点:质量稳定,单条成本 0.01-0.1 美元 缺点:受限于强模型的能力上限,无法超越强模型

范式 2:自举(Self-Improvement)

用模型自己生成数据训练自己。代表:Self-Rewarding LM、SPIN。

# 自举伪代码
for round in range(3):
    responses = model.generate(prompts, temperature=0.8)
    filtered = reward_model.filter(responses)  # 只保留高质量的
    model.finetune(filtered)

优点:不依赖外部模型 缺点:容易”模式坍塌”,多样性骤降;需要严格的质量过滤

范式 3:结构化合成

用模板 + LLM 组合生成特定任务数据。代表:Magpie、Evol-Instruct。

# 结构化合成伪代码(数学领域)
template = "Generate a {difficulty} math problem about {topic}, with step-by-step solution"
for topic in ["algebra", "geometry", "calculus"]:
    for difficulty in ["easy", "medium", "hard"]:
        data = llm.generate(template.format(**...))

优点:可控性强,能定向补足能力短板 缺点:模板设计需要领域专家

17.4.2 Magpie 合成方法详解

Magpie(Xu et al., 2024)是 2024 年最有影响力的合成方法,核心思想是”让模型自吐 prompt”。

传统合成的痛点:需要先准备 prompt 池,prompt 池的多样性决定数据多样性。但人工准备 prompt 池容易饱和(Self-Instruct 175 种子 → 52K 数据后多样性饱和)。

Magpie 的洞察:对齐过的模型本身就是优秀的 prompt 生成器。直接让模型从空 prompt 开始生成,输出天然就是 (prompt, response) 对。

# Magpie 算法核心
def magpie_generate(model, n_samples):
    results = []
    for _ in range(n_samples):
        # 空 prompt,让模型自吐
        prompt = "<|im_start|>user\n"
        response = model.generate(prompt, temperature=1.0, max_tokens=2048)
        # response 的前半部分是 user prompt,后半部分是 assistant response
        user_msg, assistant_msg = parse_magpie_output(response)
        results.append((user_msg, assistant_msg))
    return results

Magpie 的关键参数:

  • temperature:1.0(必须高,否则多样性坍塌)
  • top_p:0.95
  • 采样数量:100K-1M
  • 后过滤:去重 + 质量过滤,保留 50-70%

Magpie 的效果:

  • 4-gram 多样性比 Self-Instruct 高 35%
  • 任务覆盖率比 Evol-Instruct 高 20%
  • 在 Llama-3-8B 上 SFT 后,MT-Bench 7.8(接近 GPT-3.5)

17.4.3 模型合成的偏置陷阱

合成数据天然带有”模型偏置”:

  1. 风格偏置:合成数据风格高度一致,模型学后会”千篇一律”
  2. 能力偏置:合成数据只能覆盖强模型已有的能力,无法引入新能力
  3. 价值观偏置:合成数据继承强模型的价值观,可能与目标用户群体不符
  4. 安全偏置:合成数据可能过度安全,导致模型拒答率过高

应对方案:

  • 用 3-5 个不同模型合成,混合降低偏置
  • 在合成数据中混入 20% 真实数据
  • 做严格的多样性度量(4-gram ≥ 0.6,InsTag ≥ 1000)

17.5 生产日志:免费但脏

17.5.1 生产日志的价值

生产日志是模型上线后用户与模型的真实交互记录,包含:

  • 用户 prompt
  • 模型 response
  • 用户反馈(点赞/点踩/重新生成/复制)
  • 后续追问

这是最接近”真实分布”的数据,但也是最脏的数据。

17.5.2 生产日志的四大风险

风险 1:隐私泄露

用户 prompt 中可能包含 PII(姓名、电话、身份证、地址)。

应对:用 Presidio 等工具做 PII 检测与脱敏,单条数据 PII 检出率必须 < 0.01%。

风险 2:采样偏差

活跃用户 ≠ 全体用户。重度用户的数据会主导训练。

应对:

  • 按用户 ID 哈希采样,每用户最多贡献 N 条
  • 按活跃度分层采样

风险 3:反馈信号噪声

用户的”点踩”未必表示质量差,可能是答案不符用户预期(用户错了)。

应对:

  • 只用”点赞 + 复制”作为正信号
  • “点踩 + 重新生成”作为弱负信号
  • 用 Reward Model 做二次过滤

风险 4:分布漂移

用户行为会随时间变化(节日、热点事件),直接用历史数据训练可能错配当前需求。

应对:

  • 用最近 30 天数据
  • 按周重新采样

17.5.3 生产日志的回流闭环

工业级生产日志回流闭环:

1. 日志采集:用户交互 + 反馈 → 数据湖
2. 隐私脱敏:Presidio + 规则过滤
3. 质量过滤:Reward Model 评分 + 长度过滤
4. 反馈加权:点赞+3,复制+2,点踩-2,重生成-1
5. 多样性采样:用户去重 + 任务聚类
6. 标注转化:高分自动转 SFT,低分转偏好负样本
7. 配方注入:控制日志数据占比 ≤ 20%
8. 训练 + 评测 + 上线

踩坑经验:

  • 日志数据占比超过 30% 会让模型”过拟合”当前用户群
  • 必须用 A/B 测试验证日志数据的实际贡献
  • 日志数据的”复制率”比”点赞率”更可靠

17.6 四大来源的工业配比

不同团队的来源配比差异巨大,但有几个经验法则:

17.6.1 按团队规模配比

团队规模人工开源合成日志
大厂(百人+)10-15%30-40%30-40%15-20%
中型(20-50人)5-10%40-50%35-45%5-10%
初创(<20人)2-5%50-60%35-45%0-5%

17.6.2 按训练阶段配比

  • SFT 阶段:开源 50% + 合成 30% + 人工 10% + 日志 10%
  • DPO 阶段:人工 20% + RLAIF 50% + 开源 20% + 日志 10%
  • RLVR 阶段:合成 70% + 开源 30%(必须可验证)

17.6.3 按”质量锚”思路配比

不管比例如何,必须有 5-10% 的人工金标数据作为”质量锚”,用于:

  • 校准 Reward Model
  • 评估其他来源数据的质量
  • 训练最后的精修阶段

17.7 来源选择的决策树

要补什么能力?
├─ 通用对话 → 开源(OpenHermes/Tulu-3-SFT)+ Magpie 合成
├─ 数学推理 → 开源(NuminaMath)+ 模板合成
├─ 代码能力 → 开源(Magicoder)+ 真实 GitHub 数据
├─ 工具调用 → 合成(xLAM/Glaive)+ 真实 API 日志
├─ 安全对齐 → 人工标注(不可外包)+ Constitutional
├─ 多轮对话 → 合成(UltraChat)+ 生产日志
└─ 偏好对齐 → 人工(金标)+ RLAIF(规模)+ UltraFeedback(开源)

第 18 章将深入 SFT 指令数据的构建方法,重点拆解 Self-Instruct、Evol-Instruct、Magpie 三大合成范式。

🛠️ 本章衍生工具

🗺️

数据工程·数据来源地图

《AI 数据全书》第 17 章「后训练数据来源」+ 第 3 章「数据范式转移:真实数据枯竭与合成数据崛起」配套——① 四源经济账本:§17.1 四源对比全表(人工 5–50 美元/极高/1 万–10 万/成本爆炸;开源 ≈0/中-高/10 万–1000 万/同质化污染;合成 0.001–0.1/中/10 万–1000 万/模型偏置;日志 ≈0/高/10 万–1 亿/隐私采样偏差),⭐ 预算分配器真算——各源条数 = 预算 ÷ 单价并受 §17.1 规模上限截断(开源撞 1000 万天花板后钱花不出去,结余如实显示)+ 「达标最低预算」对 Σ min(B·rᵢ/uᵢ, capᵢ) ≥ 目标 做 80 次二分求解、上限不足时报「不可达」;四条死穴告警(人工 >20% 成本爆炸 / 开源 >50% 且同源叠加 / 合成 >50% 且无 verifier / 日志 >30% 过拟合)+ ⭐ 质量锚硬门槛(人工 <5% 时「下游可信度」整块置灰并压红字,与去污染闸门同款交互)+ §17.6.2 SFT/DPO/RLVR 三阶段配比 TVD 对照(RLVR 人工 0% 确实触发质量锚红灯,如实呈现原书两处口径的表面冲突)+ §17.2.3 五平台单条成本联动 + InstructGPT 40 人标尺(13K×$35≈45 万、33K×$55≈182 万美元的量级冲击)· ② 开源池三查与同源陷阱:13 个数据池(8 个 SFT + 5 个偏好)勾选混池,⭐ 同源重叠真算(按来源分组、组内第 2 个起按 sharedFrac × 可拖 dupRate 计冗余),⭐ 4-gram 重复率在 mulberry32 现造中文语料上真算(按字切,附「按空格切只切出 1 个 token」的翻车对照);⭐ 13-gram 评测污染扫描——300 条构造语料注入 6 条真值,真扫出精确率/召回率/误报/漏检,n=8/13/20 × 原文注入/同义改写/段落打散 九种组合各自可见(打散攻击下三个 n 全部失灵);单一来源 >30% 红警(默认三池必然触发)与三条解法效果预估(Jaccard 0.7 去重 / 裁到 30% / Zipf 簇每簇留 N,净变化常为负)· ③ 真实 vs 合成决策树:⭐ §3.5.1 六问内联 SVG 决策树逐问展开,含「先造 verifier,再回到上一分支」这个故意不给数据答案的分支;⭐ 三条铁律实时灯 + 违规演示(把评估集选成「用合成样本计入主指标」→ 铁律一报红「让考生自己出题」);§3.4.3 分界线沙盘——同一 55% 合成占比在预训练侧报红、后训练侧报绿,把「分界线画在正确的位置」变成可拖的操作 + 八行速查表当前命中行高亮 · ④ 数据墙与合成三范式:⭐ 成本交叉线沙盘(真实获取成本逐年上升 vs 合成逐年下降,交点二分插值,🧮 实算与 📖 Epoch 2026–2032 区间严格分栏),垂直领域交叉线显著早于公共网页——这正是「垂直领域合成占比 >80%」的经济学解释;四重墙堆叠带 + 四条争议折叠卡(含 Epoch 约束排序「电力 > 芯片 > 数据 > 延迟」与 Villalobos 原话)+ 合成三范式 + ⭐ 四类偏置雷达(自举范式不开对策时向「风格偏置」轴极端偏移,且「3–5 模型混合」因概念冲突不可勾选)+ Magpie 参数卡;页脚三分诚实性标注 📖 文献值 / 🧮 真算 / ⚠ 教学模型