SFT 微调数据进阶策略:用学习曲线评估数据质量、筛选高价值子集、用合成/蒸馏样本增强、混合多数据源防止灾难性遗忘。
有监督微调(SFT)的数据准备工作并不会在数据集清洗完毕、格式规范之后就宣告结束。真正棘手的问题才刚刚开始:你实际需要多少数据?应该收集更多,还是在现有数据中筛选出更优质的子集?在人工标注无法规模化的情况下,如何生成高质量的样本?如何让模型专精化而不至于遗忘其通用能力?本文假设你已准备好了经过质量检查、符合 schema 规范的 SFT 数据集,并准备对其进行训练优化。本系列的第一篇文章《Preparing data for supervised fine-tuning Part 1: Formatting and quality》涵盖了这些基础工作:Amazon Nova 所期望的对话格式、能够捕捉格式错误和低信号样本的质量检查,以及如何在不产生数据泄露的前提下划分训练集和评估集。如果你的数据集还没有经过这些步骤,请先从那篇文章开始。
第二篇文章涵盖四种进阶策略:基于学习曲线分析评估数据就绪程度、数据子集选择与过滤、数据增强,以及数据混合。文中贯穿引用了 Amazon Nova 定制化研究的发现,相关指导适用于任何你所选用的模型。
在数据清洗和格式化完成后,需要评估你是否有足够的信号来有效训练。
作为一般性起点,对于典型的 SFT 任务,规划大约 2000 个高质量训练样本。将此作为一个参考值:合适的数量因任务难度和模型当前行为与目标之间的差距而异。简单的格式或风格变更可能只需要 500 个样本,而复杂的多步推理任务可能需要 10000 个甚至更多。每个任务和领域都有不同的饱和特性。
在运行这些实验之前,有一项前置条件比任何事情都重要:明确界定的评估基准。这意味着需要一个能够代表生产环境流量的评估集,以及能够反映你的用例中"好"意味着什么的指标。大多数团队发现这项工作比准备训练数据本身还要困难。如果你还没有评估基准,请先构建一个。Amazon Bedrock Evaluations 支持基于你自己的数据集和指标对模型进行评估,《Evaluate large language models for quality and responsibility on the AWS Machine Learning Blog》详细介绍了如何构建评估流水线。
有了评估基准之后,通过学习曲线分析凭经验确定数据集大小:
训练一次,评估多个检查点。 在完整数据集上运行一次训练任务,并保存中间检查点,例如每完成 10%–20% 的训练就保存一个。用保留的评估集对每个检查点进行评估。在第一个 epoch 期间,第 N 步的检查点大约已经见过 N/total_steps 的独特数据,因此这近似于一条数据扩展曲线,而无需多次训练运行。
绘制性能随数据规模变化的图表。 将下游指标与消耗的训练 token 数绘制成图。你需要找到饱和点,即在此点之后数据量翻倍只能带来不到 1%–2% 的主要指标提升。
当收益递减时停止。 如果曲线趋于平坦,相同类型的数据不会再有帮助。要么提前停止训练以节省算力,要么添加质量上不同的数据,具体针对模型仍然出错的失败案例。图 1 展示了如何通过连续检查点的收益来区分平坦曲线和仍在改善的曲线。
图 1:要从每次数据量翻倍中读取收益,而不仅仅看最终分数。当数据量翻倍使主要指标提升不到 1 到 2 个百分点时,更多同类型数据不太可能再有帮助。图中数值为示例
SFT 并不遵循与预训练相同的单调幂律扩展规律。SFT 扩展研究表明,数据量本身并不能保证带来成比例的收益。真正重要的是指令集的范围和深度。《Data Repetition Beats Scaling》这篇研究有力地证明了这一点。在固定的算力预算下,对 400 个推理示例进行 128 个 epoch 的训练,在 AIME 和 GPQA 上比在 51200 个示例上训练 1 个 epoch 的成绩高出 12–26 个百分点。一个较小但高质量的数据集训练到完全记忆,其表现可以优于一个模型只看过一次的大型数据集。训练 token 准确率可以作为实用的停止标准,因为当模型达到接近完美的训练准确率之后,收益就会趋于平稳。
当收益递减出现时,智能化的数据选择可能优于使用完整数据集进行训练。DEITA、DELIFT 和 coreset 选择等方法能够识别出覆盖任务空间的最小子集,同时保持质量和多样性。这些方法从质量、多样性以及每个样本对模型的实际上手难度等维度对候选数据进行评分。有两个好处尤为突出:
以更少的样本匹配或超越完整数据的性能。 去除冗余或低质量的样本可以提供更清晰的梯度信号。AlpaGasus 表明,按质量筛选出前 20% 的样本进行训练,速度更快且分数高于完整数据集。《Rethinking Data Selection》证明了子集选择可以优于完整数据集训练。
减少灾难性遗忘。 更少但更精准的样本意味着更少的梯度更新将模型从预训练能力中拉偏。这使得子集选择成为数据混合的自然补充:你可以在更少遗忘的情况下实现任务专精化,甚至有可能减少对数据混合的需求。
一个实用的工作流将就绪程度评估和选择紧密关联。学习曲线是一种诊断方法(一次带保存检查点的训练运行),因此你可以在不重复完整规模训练运行的情况下做出这些决策:
当你的数据集太小或太窄时,增强可以在不成比例增加标注成本的情况下扩展它。对现代 SFT 影响最大的增强形式是生成推理迹(reasoning traces)和合成演示。在实践中,大多数团队通过以下三种方式之一获取增强数据:
从更强的模型中蒸馏。 从能力较强的"教师"模型(如 DeepSeek-R1 或前沿商业模型)生成推理迹或响应,验证最终答案,并保留正确样本的输出。大多数开放的推理数据集就是这样构建的。
自生成并过滤。 让你要微调的基础模型以高温度为每个问题生成多个候选响应,然后只保留那些最终答案正确或在多个样本中推理自洽的输出。这是 STaR 的核心思想。
为高风险领域放大人类编写的数据。 在正确性比数量更重要的场景中——医疗、法律或安全关键环境——专家编写的示例仍然是黄金标准。你可以通过使用大语言模型(LLM)在保留逻辑步骤的前提下将专家推理改写为多种风格来放大它们。
除了推理迹,经典的增强技术也可以直接扩展指令数据集。Self-Instruct 从少量种子集自举出新的指令-响应对,Evol-Instruct 沿受控维度(如添加约束或更深入的推理要求)演化现有指令。更简单的变换也有帮助:改写提示以覆盖措辞变化,重新格式化响应以匹配目标输出风格。这些技术直接解决了预测 SFT 泛化能力的范围和深度特性。
两个质量原则约束着增强数据。首先,不仅仅是内容的多样性,风格的多样性也很重要。两种正确但结构不同的解决方案比两份相同的解决方案更有用,这是 MAmmoTH 所利用的模式。其次,验证是不可妥协的。每个增强示例都应该达到与人工策划数据相同的质量标准,因为合成生成是重复样本和细微错误最常见的来源之一。在增强数据进入训练集之前,对其应用第一篇文章中的去重和过滤步骤。
当您为特定任务微调模型时,可能会损害模型在其他能力上的表现,这种现象被称为灾难性遗忘。数据混合通过将目标任务数据与保留模型现有优势的样本混合来解决这个问题。对于 Amazon Nova 自定义,Amazon Nova Forge 支持这种模式,因此您可以在每个自定义阶段将专有数据与 Amazon 精选的训练数据混合。
一个重要的细节:数据混合并不总是对目标任务有帮助。它的主要目的是在专业化之余保留通用能力,而混入通用数据通常会以领域指标的直接代价为代价,因为每个通用数据 token 都会挤占一个领域数据 token。正向迁移确实会发生于数据源共享底层推理模式的情况:Qwen2.5-Coder 发现 70:20:10 的代码、文本和数学比例,在编码基准测试中甚至优于 100% 代码的训练效果。
反之,当 token 长度不平衡导致通用数据主导损失时,混合可能有害:即使按样本数计算仅有 5% 的通用数据混合,如果其序列长度更长,按 token 计算可能代表超过 80% 的梯度信号。要监控 token 级别的比例,而不仅仅是样本级别的比例。
实际意义:把数据混合视为通用能力的保险策略,而不是目标任务性能的助推器。
不再仅在特定任务数据上训练,而是以受控比例从多个数据源组成每个训练批次。典型的混合可能是 70% 目标任务、20% 通用指令遵循和 10% 安全数据。混合发生在批次级别,因此模型在整个训练过程中看到一致的分布。
在开始实验之前,SFT 混合文献中的一些经验发现值得了解。Dong 等人发现,每个技能的数据绝对量比类别之间的精确比例更能驱动性能,因此如果某个技能薄弱,先为其添加数据再重新平衡。《双阶段混合微调》表明,先在专业数据上训练,然后再在混入少量专业数据的通用数据上训练,表现优于顺序训练(会遗忘)和平坦混合(会干扰)。Cao 等人表明,最优混合会随模型大小和数据预算而变化,因此没有通用比例,您应该计划进行实验。
当您有多个候选数据源且无法手动遍历所有组合时,自动方法可以用一小部分计算量找到近优权重。DoReMi 训练一个小型代理模型,并增加梯度损失最高的域的权重,所得权重可以可靠地迁移到全规模运行。RegMix 在许多小型训练运行中拟合一个预测混合权重的回归模型,当您关心特定下游基准测试时很有用。动态数据混合根据每个数据源仍在做出的贡献在训练期间调整权重,通常比最佳静态混合高出 2–5%。
对于大多数刚开始的实践者,手动方法就足够了:选择 3–5 个反映不同优先级的候选混合,进行短期训练运行,评估,然后扩大获胜者。当您有超过五个数据源或定期进行再训练循环时,再采用自动化方法。
没有通用的最优比例。作为经验法则,任务越专业化,混合中目标数据的比重就越大:医学编码等高度专业化的任务可以使用 80% 的目标数据,而语气更改等轻度适应则受益于接近均衡的分配,两种情况下都加入 5% 到 10% 的安全数据。
Amazon Nova 模型的实验表明,50/50 的分配在专业化和能力保留之间提供了良好的平衡。三个值得在您自己的实验中借鉴的发现:
加入推理-指令遵循类别。它能显著提高通用基准测试性能。
关注学习率。带数据混合的 SFT 对学习率敏感,因此使用 Low-Rank Adaptation(LoRA)的默认值 1e-5 和全秩的 5e-6 作为起点。
对于多模态数据集,将视频保持在 20% 以上。这有助于保持通用基准测试性能。
大多数客户微调的是指令调整模型(如 Amazon Nova Lite 2.0 或任何现成的聊天模型),这类模型已经经过后训练以遵循指令、进行对话并安全响应。本框架以此为起点。罕见的例外是从仅经过下一个 token 预测预训练的基检查点开始。在这种情况下,始终进行混合,因为没有要保留的指令遵循或安全行为。从指令调整的起点出发,在不混合的情况下进行短暂训练并评估检查点。该决策取决于两个问题,两者都可以通过单次运行来回答:
不混合的运行是否对目标任务数据过拟合?观察以下信号:训练损失持续下降而验证损失停滞或上升,或者目标任务验证性能在中间检查点达到峰值然后下降。几千个示例的小数据集会增加这种风险,但没有硬性阈值。这取决于轮数、学习率,以及您是训练 LoRA 还是全秩。首先用训练配置修复:减少轮数、早停、降低学习率。如果过拟合仍然存在,混入通用数据会增加梯度多样性,并可作为进一步的正则化。
相同的运行是否退化了您需要的通用技能?评估您的应用程序在生产中需要的能力,如指令遵循、对话或数学和编码。如果它们保持稳定,不混合直接上线以节省训练成本。如果它们退化超过您的容忍度,添加混合并将通用数据比例扩大到与退化严重程度相匹配的程度。
数据集大小和多样性本身不能决定任何一个问题。一个包含 20,000 个示例的医学数据集,无论在其领域内多么多样化,如果您的应用程序依赖数学或编码能力,仍然可能侵蚀这些技能。这就是为什么该框架是测量而非假设。
数据混合并非对抗遗忘的唯一方法。如果您随时间反复更新模型,OSFT 等算法方法将每次训练限制在不会干扰先前知识的权重空间方向上。OSFT 在 Hugging Face PEFT 中作为即插即用选项提供。
此处涵盖的高级策略有一个共同点:先测量再行动。学习曲线分析告诉您更多数据是否有帮助。子集选择告诉您哪些数据重要。增强填补了收集无法经济覆盖的空白。受控混合实验告诉您能力保留是否值得训练成本。那些将这些视为经验问题而非应用默认值的团队,总是能以更少的计算量获得更好的模型。
如果您还没有阅读本系列的第一篇文章,它涵盖了基础知识:数据质量检查、格式要求以及训练/评估划分。
要开始使用,请访问 Amazon Bedrock 控制台探索模型自定义选项。在服务详情页了解有关 Amazon Nova 的更多信息,查看 Amazon Nova 文档中的自定义指南,并探索 Amazon SageMaker HyperPod 配方仓库以获取可运行的训练配置。相关阅读请参阅 AWS Machine Learning Blog 上的《使用 Amazon Bedrock 微调自定义 Amazon Nova 模型》。