Nemotron 预训练的任务种子合成问答生成
Task-Seeded Synthetic Q&A Generation for Nemotron Pretraining
在 Nemotron-3 Nano 模型的 100B token 续训练实验中,任务种子合成数据生成(Task-Seeded SDG)使 MMLU-Pro 提升 1.8 分,平均代码提升 1.9 分,常识理解提升 1.6 分,GPQA 提升 11.1 分,数学成绩保持稳定。该流程利用 lm-eval-harness 中约 70 个公开任务(约 700 子任务)的训练集作为种子,生成新示例并补充推理和上下文,经过格式校验、去重和答案验证后得到精选合成数据集,用于 Nemotron Ultra 和 Super 训练。
NVIDIA 公开了 Nemotron 训练中造合成数据的详细方法论,用 70 个公开任务训练集做种子生成新题目,100B token 实验把 GPQA 拉高 11 个点,做预训练的人值得看看他们怎么造的数据。
作者:Dan Su 在大规模 LLM 开发中,问题不再仅仅是模型看到多少数据。还在于数据是否包含足够多的结构化学习信号。通用网页、代码、数学、多语言和领域数据提供了广泛的基础。任务播种的合成问答通过添加紧凑、任务结构化的示例来补充它们,这些示例具有明确的信息需求、受限的响应空间,以及将证据与答案联系起来的解释。在 Nemotron-3 Nano 模型上进行的一项 100B token 续训实验中,任务播种的 SDG 将 MMLU-Pro 提升了 +1.8,代码平均分提升了 +1.9,常识理解提升了 +1.6,GPQA 提升了 +11.1,而数学平均分保持稳定。
本文介绍了为 Nemotron 系列训练开发的任务播种合成问答生成工作流,包括 Ultra 和 Super 训练运行。该工作流使用广泛公共任务家族的训练划分作为能力种子,生成新的任务对齐示例,用推理和相关知识对其进行丰富,并将它们过滤成精选的合成数据集。留出评估和测试数据被排除在生成之外。下游训练配方随后可以决定如何将这些数据集与更广泛的语料库混合。
图 1. 任务播种的 SDG 流水线终止于精选的生成数据。训练混合设计和所报告的评估在下游进行。
简要总结
- 我们将公共任务训练划分用作能力种子,而不是用作要记忆的示例。
- 我们通过跨任务族的迁移学习来构建这些数据:模型可以从广泛的种子任务中学习可复用的行为,然后将其应用到相关的应用和评估中。
- 该流水线生成相似的问题以及带有推理和任务相关上下文的答案增强示例。
- 多项选择任务更容易验证;开放式生成任务则需要针对特定任务的提取和过滤。
- 在 Nemotron-3 Nano 模型上进行的一项 100B token 续训实验中,任务种子化 SDG 将 MMLU-Pro 提升了 +1.8,平均代码能力提升了 +1.9,常识理解提升了 +1.6,GPQA 提升了 +11.1,同时平均数学能力保持稳定。
概览
| 要素 | 值 |
|---|---|
| 种子来源 | 通过 lm-eval-harness 获取的公开任务训练集划分 |
| 规模 | 约 70 个任务和约 700 个子任务 |
| 数据类型 | 相似问题、答案增强样本、推理/上下文轨迹 |
| 验证 | 模式检查、格式检查、去重、多数投票答案检查 |
| 训练用途 | Nemotron 系列后期训练,包括 Ultra/Super 工作流 |
| 主要结果 | 在 100B-token 的 Nemotron-3 Nano 续训中,于 MMLU-Pro、代码、常识和 GPQA 上取得的提升 |
生成流水线
生成工作流是一个紧凑的循环:收集训练集种子、规范化异构任务记录、生成新样本、丰富答案,并过滤所得数据。在内部流水线中,我们使用了来自 lm-eval-harness 的大约 70 个公开任务数据集,覆盖约 700 个子任务。对于每个任务,我们仅使用合适的训练集作为 SDG 种子;未使用留出的测试数据进行生成,且没有合适训练数据的任务被排除在种子收集之外。
种子池同时覆盖了知识密集型任务和推理密集型任务:
| 种子组 | 大致覆盖范围 | 用途 |
|---|---|---|
| 知识密集型任务 | 39 个任务,约 300 个子任务,约 3M 种子样本 | 提升事实性、科学性、多语言以及特定领域的问答行为 |
| 推理密集型任务 | 34 个任务,约 400 个子任务,约 1.5M 种子样本 | 提升分析推理、逻辑推理、数学、代码以及常识推理能力 |
对于 Nemotron Ultra 和 Super 的预训练,我们使用了所生成数据中许可兼容、适合商业模型训练的子集。
端到端流程包含五个阶段:
- 收集种子任务。枚举可用的
lm-eval-harness任务,按输出类型分组,仅保留具有合适训练划分的任务。 - 规范化记录。由于每个
lm-eval-harness任务都在 YAML 中定义了自己的字段和格式,我们将任务记录转换为统一的 JSONL 风格模式。对于多项选择任务,规范化后的记录包含问题和候选选项。对于生成式任务,它包含问题或提示词,以及任务提供时的上下文。 - 生成相似示例。给定一个种子示例,生成器会创建一个新问题,在保留底层能力的同时改变内容。
- 丰富答案。生成器解答生成的问题,并添加最终答案以及相关的推理、知识或上下文。
- 过滤与打包。该流水线会应用模式检查、格式检查、去重,以及在可能的情况下进行任务特定的答案验证。选择题数据更容易直接验证;生成式数据则需要更谨慎的任务特定处理。
一个实用的格式选择是,在可能的情况下存储语义答案文本,而不仅仅是选项标签。例如,将答案写为 dirt trapped under the fingernails,比只写 B 能给模型提供更清晰的训练信号。
为什么要用任务种子数据?
公开任务数据集并不完美,但它们的训练划分中包含了一些简洁的示例,展示了信息是如何被请求、约束和解决的。它们捕捉了任务框架、领域知识、推理深度、候选答案和最终回复形式之间的有用相关性。模型在预训练期间可能已经见过大量原始文本,但仍然能从合成数据中受益,因为这些数据让这些相关性变得显式。
任务种子合成数据通过将公开任务的训练集转化为数据生成模板,弥补了这一缺口。仅使用来自广泛任务家族中合适的训练集,我们生成新的样本,同时保留源交互中有用的属性:
- 任务框架,例如该样本要求的是选择、生成、分类还是解释;
- 答案结构,例如多项选择选项、简短答案、自由形式回答或格式受限的输出;
- 领域与上下文,例如科学、常识、事实知识、数学、代码、多语言问答或阅读理解;
- 难度与推理深度,例如该样本需要的是直接事实、多个选项之间的比较,还是若干步推理;
- 解释性信号,例如有助于将问题与答案联系起来、与任务相关的知识、推理或上下文。
这使我们能够让模型接触跨任务家族中可复用的推理与知识运用模式,而不必将数据集绑定到某一个数据源的表面格式上。
为什么要使用更广泛的种子任务?
理解这条流水线的一个有用视角是跨任务族的迁移学习。许多改进并非来自学习单个任务的表层格式,而是来自强化那些在众多任务中反复出现的可复用行为:识别信息需求、运用相关领域知识、区分看似合理的备选项、遵循回答约束、进行多步推理,以及将最终答案建立在正确的上下文之上。
正因如此,我们不会从一组狭窄的任务格式中生成数据。相反,我们从lm-eval-harness中收集更广泛的训练集种子样本,用它们覆盖许多相邻的能力区域。一个科学问答种子可以有助于常识物理推理。一个逻辑推理种子可以有助于细致的备选项比较。一个数学或代码种子可以有助于多步规划,即便最终应用并非完全相同的任务。目标是在任务族之间实现正向迁移学习,同时降低模型仅仅学到单一数据源怪癖的风险。
这一动机也与 Nemotron Nano 预训练中此前的证据相一致。我们发现使用 AGIEval 训练数据提升了 MMLU-Pro,这表明来自某一任务族的结构化问答数据可以改善原始来源族之外的行为。此处使用的更广泛的种子收集扩展了这一思路:它不再依赖单一任务来源,而是使用许多训练集任务族,从而让可迁移的推理、知识运用和答案选择行为有更多机会出现。
为什么要加入上下文和推理?
仅凭答案本身往往是一个较弱的训练信号,尤其是在科学、常识和多步推理类样本中。加入与任务相关的知识或推理轨迹,能为模型提供一条从问题到答案的路径,并帮助它理解那些看似合理的干扰项为何是错误的。
图 2 中 PIQA 风格的示例在一个紧凑的场景中展示了这一区别。生成的问题仅凭正确选项即可作答,但答案生成变体补充了定义、历史背景和干扰项分析,使该记录成为更强的学习信号。
图 2. 一个具体的 SDG 转换:一个 PIQA 风格的种子引发出新的相似问题,其中一个生成的问题被扩展为两条答案增强的记录。
在一次内部的"有上下文对比无上下文"消融实验中,上下文增强的变体在多项知识密集型和推理密集型评测上给出了更强的数字:
| 评测 | 无上下文 | 有上下文 | 变化 |
|---|---|---|---|
| ARC-Challenge | 91.89 | 92.24 | +0.35 |
| CommonsenseQA | 80.02 | 80.26 | +0.24 |
| PIQA | 82.86 | 84.44 | +1.58 |
| WinoGrande | 79.87 | 80.51 | +0.64 |
| AGIEval-en CoT | 63.16 | 69.32 | +6.16 |
| GPQA-Diamond CoT n-shot | 34.85 | 45.96 | +11.11 |
| MMLU-Pro 5-shot | 64.45 | 66.89 | +2.44 |
| MBPP+ 采样 | 73.77 | 74.82 | +1.05 |
训练用途
任务种子合成数据被混入 Nemotron 系列的后期训练中。在一项针对 Nemotron-3 Nano 模型的 100B token 续训实验中,加入新合成的任务种子数据提升了多个能力组:
| 指标组 | 之前 | 之后 | 变化 |
|---|---|---|---|
| MMLU-Pro | 64.8 | 66.6 | +1.8 |
| 代码平均 | 73.2 | 75.1 | +1.9 |
| 数学平均 | 87.6 | 87.9 | +0.3 |
| 常识理解 | 72.9 | 74.5 | +1.6 |
| GPQA | 30.8 | 41.9 | +11.1 |
这些结果令人鼓舞,原因有两点。第一,提升并不局限于最直接的目标。MMLU-Pro、代码、常识理解和 GPQA 均有提升,而数学保持稳定。第二,GPQA 的大幅提升表明,富含相关知识和推理的示例可以帮助模型处理更困难的科学推理问题。
这一模式与上文讨论的迁移学习解释一致:提升出现在多个能力组中,而非仅出现在某一项密切相关的评测中。
这一结果还揭示了一个有用的权衡:以任务为种子的定向数据必须谨慎混合。某一评测上的收益应当与广泛通用知识的保留情况一并检查,而不能孤立看待。
我们学到了什么
有几项实用发现尤为突出:
- 广泛的种子覆盖能提升泛化能力。使用多种任务族可以降低对单一评测风格过拟合的风险。
- 上下文有帮助。推理和与任务相关的知识让合成答案比仅有标签更有用。
- 输出格式是训练信号的一部分。看似微小的选择,例如用答案字母还是答案文本,都可能影响下游行为。
- 多项选择任务比开放式生成任务更容易验证。生成任务需要针对特定任务进行答案抽取,可能需要单独处理。
- 混合数据的设计很重要。自然的样本数量分布可能会使大型任务权重过高,因此重要的任务族可能需要显式的采样控制。
- 基准测试的提升应当对照广泛能力的保持情况进行检查。当数学、代码、常识和通用知识保持稳定时,MMLU-Pro 或 GPQA 的提升才更有意义。
结论
任务种子合成数据为模型构建者提供了一种实用的方法,能够在后期训练阶段有针对性地提升真正重要的技能。通过收集广泛的训练集任务种子、生成新样本、用推理和知识丰富答案,并仔细过滤所得数据,我们可以在保持广泛能力的同时,提升模型在困难推理和知识任务上的表现。
对于 Nemotron Ultra 和 Super 的预训练,这一工作流提供了一套可扩展的方案,让合成数据的构建更具目的性。关键在于不只是生成更多数据,而是生成具有正确结构、正确解释信号以及足够元数据的数据,以便下游进行混合配比决策。
来源:Hugging Face:Blog(RSS) · huggingface.co