章节导航 第 17 章 / 共 30 章
后训练数据来源
指令数据、偏好数据、推理数据的来源渠道与采集方式。
预训练数据靠”挖”,后训练数据靠”养”。
四大来源各有死穴:人工贵、开源杂、合成偏、日志脏。
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 AI | 5-15 美元 | 高质量 SFT/偏好 | 美国本土标注员 |
| Scale AI | 3-10 美元 | 大规模 SFT | 上市平台,流程规范 |
| Labelbox | 2-8 美元 | 通用标注 | 灵活定义任务 |
| Toloka | 0.5-3 美元 | 大规模粗标 | 众包,质量参差 |
| 自建团队 | 5-30 美元 | 核心数据 | 长期最划算 |
踩坑经验:
- 众包平台(Toloka/Clickworker)的偏好数据质量普遍低于专业平台 20-30%
- 自建团队前 3 个月产能极低,但 6 个月后质量超过外包
- 标注规范不写正反例,准确率永远上不去 80%
17.2.4 标注规范的”三必写”
一份合格的标注规范必须包含:
- 任务定义:明确要标什么,不要标什么
- 正例:5-10 个典型好样本,标注理由
- 反例:5-10 个典型坏样本,标注问题
例如标”有帮助性”偏好时,必须明确:
- 正例:直接回答 + 必要细节
- 反例:绕弯子 + 空话套话 + 不相关
- 边界:在不确定时偏向”提供更多信息”还是”简洁”
17.3 开源数据池:免费但有坑
17.3.1 主流 SFT 数据池速查
| 数据集 | 规模 | 来源 | 质量 | 适用场景 | 机器可读 license(HF API 实测) |
|---|---|---|---|---|---|
| OpenHermes-2.5 | 1M | GPT-4 合成 | 高 | 通用 SFT | 🔴 无(cardData.license 为空;README 自称 MIT) |
| Tulu-3-SFT | 939K | 混合 | 高 | 标杆配方 | odc-by |
| Infinity-Instruct | 7M | 合成+开源 | 中-高 | 大规模 SFT | 未核(API 返 401,需自核) |
| ShareGPT | 100K+ | 用户分享 | 中 | 真实对话 | 未核(无 canonical repo) |
| WizardLM/Evol-Instruct | 250K | GPT-4 进化 | 高 | 指令多样性 | mit |
| NuminaMath | 860K | 数学合成 | 高 | 数学能力 | apache-2.0 |
| Magicoder | 110K | 代码合成 | 高 | 代码能力 | mit |
| OpenOrca | 4M | GPT-4 蒸馏 | 中 | 通用 | 未核(API 返 401,需自核) |
| Nemotron-Post-Training-Dataset-v2(2025-08) | 1M–10M 行 | NVIDIA 开源 | 高 | 通用后训练 / agentic | cc-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 偏好数据池速查
| 数据集 | 规模 | 来源 | 质量 | 备注 |
|---|---|---|---|---|
| UltraFeedback | 64K | 多模型对比 | 高 | 4 维度评分 |
| HelpSteer2 | 21K | 人工标注 | 极高 | NVIDIA 出品 |
| ShareGPT-Preference | 100K | 用户投票 | 中 | 偏差大 |
| Anthropic-HH | 161K | 人工标注 | 高 | Helpfulness+Harmlessness |
| Capreolus | 18K | 人工标注 | 高 | 金标数据 |
17.3.3 用开源数据的”三查”
开源数据不能拿来就用,必须做三查:
一查:来源可溯
- OpenHermes-2.5 是 GPT-4 合成的,使用时要注意 OpenAI ToS 风险
- ShareGPT 是用户上传的 ChatGPT 对话,含 PII 风险
- OpenOrca 是蒸馏 13B 模型的,质量参差
一查还应该加两条可自动化的检查:
-
检查有没有机器可读的许可证字段,而不只是 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/元数据里的机器可读字段,读不到就按”未授权”处理并留痕。 -
同一数据集的不同 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%
解决方案:
- 混合前做全量去重(MinHash + Jaccard 0.7)
- 控制单一来源占比 < 30%
- 用 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 模型合成的偏置陷阱
合成数据天然带有”模型偏置”:
- 风格偏置:合成数据风格高度一致,模型学后会”千篇一律”
- 能力偏置:合成数据只能覆盖强模型已有的能力,无法引入新能力
- 价值观偏置:合成数据继承强模型的价值观,可能与目标用户群体不符
- 安全偏置:合成数据可能过度安全,导致模型拒答率过高
应对方案:
- 用 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 三大合成范式。