真实面经题目 · 原创解析
LLM 预训练数据清洗中,如何结合质量模型、PPL、去重和领域规则过滤更适合模型学习的数据?
这题考的是预训练数据治理的系统性判断:不能只说按 PPL 阈值删除,也不能只依赖一个质量分类器,而要把数据规范化、质量打分、PPL 异常检测、重复样本压制、领域规则、分布保留和下游验证串成闭环,目标是在降低噪声和污染的同时保留对模型能力真正有贡献的多样知识。
真实面经题目 · 原创解析
这题考的是预训练数据治理的系统性判断:不能只说按 PPL 阈值删除,也不能只依赖一个质量分类器,而要把数据规范化、质量打分、PPL 异常检测、重复样本压制、领域规则、分布保留和下游验证串成闭环,目标是在降低噪声和污染的同时保留对模型能力真正有贡献的多样知识。
我会把预训练数据清洗看成多阶段筛选和再配比问题。第一步是基础解析和规范化,先做语言识别、编码修复、正文抽取、段落切分、模板噪声识别、PII 和违法风险过滤,保证后面的模型分数是在可比较的文本单元上计算。第二步用质量模型判断文本是否像高质量知识、教材、问答、代码、论文或自然对话,而不是广告、采集页、乱码、机器翻译残留和 SEO 堆词;质量模型最好按语言、领域和文本类型校准,输出分数而不是简单二分类。第三步用 PPL 做异常检测,低 PPL 可能是模板化、重复 boilerplate 或训练语料泄漏,高 PPL 可能是乱码、OCR 错误、混语,也可能是数学、代码、古文或垂直术语,所以不能用全局阈值一刀切,要按语言和领域分桶看分位数。第四步做去重,先 exact dedup,再用 SimHash、MinHash、n-gram Jaccard 或 embedding 做近重复,既要减少重复训练带来的过拟合,也要防止评测集污染和跨 split 泄漏。第五步叠加领域规则,例如代码看语法完整性和许可证,数学看公式结构,医疗金融看安全合规和元数据可信度,多轮对话看角色一致性。最后不是清完就结束,而要看 token 保留率、领域分布、训练 loss 曲线、下游评测、badcase 和 ablation,确认过滤策略真的提高模型学习效率,而不是把难但有价值的数据误删。
数据清洗的目标不是让所有文本都变得简单、流畅、低困惑度,而是提高单位 token 的有效学习价值。有效数据通常要满足可解析、非重复、信息密度高、语言和领域标签可信、对目标能力有贡献、风险可控。回答时先说明目标函数:降低乱码、垃圾、模板、重复和污染,保留长尾知识、推理材料、代码、数学、专业语料和自然表达的多样性。
在任何模型打分之前,应先做低成本硬规则:编码检测、HTML/Markdown 清理、正文抽取、语言识别、长度上下限、字符集比例、标点和数字异常、重复行比例、不可见字符、广告导航模板、联系方式和隐私信息过滤。原因是这些噪声会污染质量模型和 PPL 的输入;如果正文抽取错了,后面的分数再精细也只是在判断页脚和菜单。
质量模型可以是分类器、排序模型或 reward-like scorer,用人工标注、高质量种子集、弱监督规则和负样本训练,判断文本是否有清晰主题、完整结构、可信知识、自然表达和可学习信息。工程上要按语言、领域、文本类型分桶校准分数,例如论坛对话、百科、论文、代码和教程的质量形态不同;还要定期抽样人工复核,避免模型只偏好书面文、长文本或特定写作风格。
PPL 衡量某个参考语言模型对文本的预测难度,适合发现乱码、混语、OCR 错误、机械翻译、极端无规律文本,也能暴露异常低困惑度的模板化和高重复内容。但 PPL 不等于质量:代码、数学证明、少数语言、专业术语和创新表达可能 PPL 较高,广告模板和常见 boilerplate 可能 PPL 较低。因此更稳的做法是按语言和领域使用分位数阈值,并与质量分、重复度、长度和数据类型联合判断。
去重通常分 exact、near-duplicate 和 contamination 三层。exact dedup 删除完全相同样本;near dedup 用 SimHash、MinHash、n-gram overlap 或 embedding 聚类压制改写、转载和模板页;contamination 检查训练语料与验证集、评测集、SFT 数据的重叠。粒度也要小心,文档级去重可能误删合集中的独立章节,段落级去重能去模板但可能破坏上下文,需要结合训练样本组织方式决定。
领域规则用于弥补通用模型分数的盲点。代码数据可以看文件扩展名、语法结构、注释比例、许可证和可编译片段;数学数据可以看公式、推导链和题解完整性;问答数据看问题和答案是否对应;多轮对话看角色边界、上下文连贯和安全风险;专业领域还要加入合规、时效和术语规则。领域规则不是越严越好,要避免把高价值长尾数据误判为异常。
最终不建议把每个过滤器串成硬删除漏斗,因为前面一步误删后无法恢复。更好的方式是保留多个特征:质量分、PPL 分位、重复簇大小、语言、领域、长度、风险标签、数据类型,再做 hard reject、down-weight、dedup keep-best 和 mixture sampling。比如低质量且高重复直接删,高 PPL 但属于代码或数学的样本进入领域规则复核,高质量长尾可以降低阈值保留。
验证要看多层指标:清洗前后 token 保留率、语言和领域分布、重复率、PPL 分布、人工抽检通过率;训练时看 loss、梯度异常、吞吐和收敛速度;模型能力看通用评测、领域评测、长尾任务、安全评测和污染检测。关键是做 ablation,例如只用 PPL、只用质量模型、加入去重、加入领域规则分别训练小模型或短程训练,证明每个策略带来的收益和副作用。
因为低 PPL 往往偏向常见、模板化、重复和容易预测的文本,不一定有高信息量;高 PPL 也可能来自代码、数学、专业术语和少数语言。更稳的是按语言和领域看 PPL 分位,把极端异常作为风险信号,再结合质量模型和重复度判断。
可以用人工标注的高低质量样本、高质量种子语料、规则挖出的负样本、重复模板和乱码样本,以及模型辅助标注后的人工复核数据。训练后要按领域抽样评估,避免模型只学到长度、格式或采集偏见。
通常两者都需要。文档级去重适合删除转载和镜像,段落或 chunk 级去重适合删除模板、页脚、重复题解和拼接内容。真正训练前还要对训练、验证和评测集合做交叉污染检查。
不一定全部删除,可以在重复簇内保留质量最高、上下文最完整、元数据最可信的一份,或者对重复簇降采样。目标是保留知识覆盖,同时避免模型过度记忆同一表达。
可以看领域 token 覆盖是否大幅下降、长尾任务评测是否退化、高 PPL 专业语料是否被集中删除、训练 loss 是否变得更低但泛化变差,以及人工抽检中是否出现大量有价值样本被误删。
应版本化记录每个过滤器、阈值、模型版本和保留率,使用小规模训练或回放评测做对比,线上只把通过验证的策略进入主数据构建,并保留可追踪的样本级过滤原因用于审计和调参。