SFT 数据如何筛选、采样和处理?
未标记
考查重点:样本正确性与训练输入控制。先验格式、内容与执行正确性,再按任务难度和类别采样、去重并隔离测试来源;训练时检查截断和损失掩码
本题目录
参考答案
核心回答
SFT 数据要围绕目标任务做好三件事:筛掉错误和不一致的示范,按任务分布与薄弱能力采样,再把留下的样本处理成模型真正能学习的输入与标签。 先检查格式和答案正确性,去重并处理冲突;再覆盖任务类别、难度、长度及边界情况;最后按来源分组隔离训练、验证和测试集,核对模板、截断和损失掩码。
数据条数不是唯一目标。重复样本可能挤占训练预算,错误答案会提供错误监督;少数关键场景也可能因比例太低而学不到,需要按评测结果调整训练数据,而不是盲目扩大数据量。
筛选:格式正确只是第一关
先检查必需字段、角色顺序、空答案、乱码和内容完整性,再检查答案是否符合任务规则。知识问答要核对依据,代码任务可运行相应检查,关键词任务则要确认关键词确实来自输入并符合选词规则。模型打分可以辅助筛选,低置信或冲突样本仍应回到来源核对。
相同输入、相同答案可去重;相同输入却有相互冲突的答案,需要核查标注规则和上下文。语义相近但代表不同难度或必要边界的样本,则不能仅凭字符串相似度全部删除。清洗应保留任务需要的代码、标点和结构,不套用机械删停用词等规则。
采样:既看真实分布,也补关键能力
先给样本记录任务类别、来源、长度、难度等标签,查看是否被某个数据源或简单短回答主导。训练采样以目标使用分布为起点,必要时提高关键失败场景的权重,同时保留足够常见场景。没有适用于所有任务的固定均衡比例。
例如关键词提取,除了短文,还应覆盖长文、多主题、信息不足、同义表述及容易误选的词。模型生成或改写的样本同样需要审核,不能靠“换一种说法”增加数量后,就认定覆盖了新能力。LIMA 的研究也分别考察输入多样性与回答质量,并未证明任意任务只需某个固定条数。
划分与预处理:不要把有效监督弄丢
先完成去重和来源归组,再划分数据。同一原文产生的多个问答、同一会话或近重复样本应放在同一组;若任务要检验未来表现,还应考虑按时间隔离。训练集可以重采样,验证和测试集保留固定评测口径,避免随着调参反复迁移样本。
使用训练工具支持的记录字段,把消息交给匹配模型的对话模板和分词器。随后检查处理后的长度分布、被截断比例、答案保留情况以及真正计入损失的词元数。过长样本可以依据任务改成独立的完整样本或调整长度预算,不能只截掉尾部答案而不察觉。
多轮数据还要明确监督全部助手轮还是最后一轮。ms-swift 可以对助手消息控制是否计入损失,TRL 的助手损失配置也有模板条件。损失掩码忽略用户标签,不是把用户上下文删掉;格式能被读取,还要继续检查实际监督区域。
对应教程
- 29-微调数据准备与对话模板:第5节具体区分格式问题、重复与冲突,并按来源划分数据;第6节继续说明模板转换。
- 30-模型训练原理与高效微调:第1.1.1节解释参考答案、因果预测与忽略标签的关系,帮助检查预处理后的监督区域。
参考资料
- 国内:WeThinkIn:后训练:微调与对齐:采用清洗、去重、冲突处理与损失掩码检查,把内容质量和可训练格式分开。
- 国内:阿东玩 AI:SFT 与微调:采用数据覆盖、多样性、长度和标签一致性的质量维度,以及按时间划分的适用场景。
- 国内:LLaMA-Factory:数据处理:采用字段映射及历史回答参与学习的约定,说明多轮样本要核对实际监督范围。
- 国内:ModelScope:ms-swift 自定义数据集:采用标准消息转换和逐助手轮损失开关,说明筛选后仍要检查预处理与标签。
- 国外:Hugging Face TRL:SFTTrainer:采用有效目标词元、填充忽略与助手损失配置的说明,检查截断后是否还存在有效监督。
- 国外:Hugging Face:Chat templates:采用角色消息到模型序列的转换及特殊标记约定,说明数据清洗不能破坏模型需要的边界。
- 国外:Zhou 等:LIMA: Less Is More for Alignment:采用第2节的质量与分层采样方法、第5节对多样性和质量的分别考察,说明数量与有效覆盖不是一回事。
相关面经
5 篇收录题集
预训练与微调
公司案例问答汇编
展开其余 2 条原题
怎么构建SFT数据集,数据量多少,
SFT与指令微调
数据与评测
微调数据集构建与清洗


