跳到正文

训练数据怎么采集和预处理?

大规模语言模型数据来源、去重、过滤、分词等关键步骤

原题:请描述大规模语言模型训练数据的常见来源、采集流程以及预处理步骤,包括去重、过滤、分词、清洗等关键环节的技术考量。

模型训练 · 百度真题

回答与解析

数据来源与治理前置

常见来源包括获得许可的网页、书籍/论文、代码、问答、业务数据和合成数据。采集前先记录许可证、用途限制、robots 协议、来源 URL、抓取时间与版本;robots.txt 是访问偏好协议,不等于版权授权。业务和用户数据还要做 PII、敏感信息与保留期限治理。

处理流水线

  1. 原始数据不可变落盘,建立 lineage、内容 hash 和版本清单。
  2. 解析正文、语言/格式识别、Unicode 规范化,去模板、导航、乱码和低信息片段。
  3. 文档内、精确和近重复去重;MinHash/LSH 阈值是需按语料与误杀率校准的实验参数,不是固定 0.8–0.9。
  4. 做质量、安全、许可证、PII 和恶意内容过滤,同时保留过滤原因和抽检样本。
  5. 在切分后执行跨训练/验证/测试去重与 benchmark contamination 检查,避免评测污染。
  6. 使用目标 tokenizer 分词,统计 token 长度、截断、字符覆盖、域和语言分布,再按目标能力设采样混合。

代码、网页、书籍比例和课程顺序都没有通用配置;应在固定 token 预算下做消融,观察目标任务、记忆、毒性和域覆盖。Wikipedia 等来源也不能直接标成“事实准确”,质量标签只代表筛选信号。最终产物需可追溯、可删除、可复现,并发布 data card。

口语版讲法(约3分钟)

  • 先做授权、PII 和数据血缘
  • 分层完成解析、清洗与去重
  • 隔离评测集并检查污染
  • 用消融决定混合比例和阈值

我会把大模型数据流水线分成治理、处理、切分和配比四层。第一层不是马上爬网页,而是先确认来源能否用于目标用途,记录许可证、用途限制、URL、抓取时间和版本。robots.txt 只表示爬虫访问偏好,不等于获得版权授权。业务或用户数据还要做 PII、敏感字段、保留期限和删除机制。原始数据应不可变落盘,并用内容 hash 和 lineage 追踪每个训练样本来自哪里。

第二层是解析和清洗。先抽取正文,做语言和格式识别、Unicode 规范化,去导航、模板、乱码和低信息片段。去重应分三层:文档内部重复、精确 hash 重复和 MinHash/LSH 等近重复。相似度阈值不能背成固定范围,要在当前语料上人工抽样,比较漏删与误删。质量、安全、许可证和 PII 过滤也要保存命中原因,不能只有一个黑盒总分。对于代码和多语言文本,还要避免过滤器只偏爱英语或某种格式,把需要的长尾能力提前删掉。

第三层是评测隔离。先按时间、来源或实体完成训练/验证/测试切分,再做跨集合近重复检查和 benchmark contamination 检测。否则同一道题的改写落进训练集,测试指标会虚高。所有过滤器和去重器都要版本化,能复现某个模型到底用了哪一批数据。

第四层是分词和混合。用目标 tokenizer 统计 token 长度、截断比例、字符覆盖、语言和领域分布,然后在固定 token 预算下调采样权重。代码、网页、书籍不存在通用的一比四比一,所谓高质量先学、低质量后加也只是待验证策略。我会做配比消融,同时看目标能力、通用能力、记忆、毒性和不同域覆盖。

最后发布 data card,记录来源类别、许可边界、过滤和去重版本、已知偏差与删除流程。这样数据工程的目标才不只是“清洗得多”,而是每一条数据可解释、可追溯、可复现,并且不会污染最终评测。

我还会为每条保留数据记录可反查的处理链:原始对象、解析版本、过滤原因、去重簇和最终切分位置。这样收到删除请求、许可证变化或污染报告时,可以定位受影响样本并重建数据版本,而不是只能整库重跑。对于近重复簇,切分前按簇分配通常比切分后逐条删除更容易避免跨集合泄漏。

上线前会做一次可复现演练:从固定清单和配置重新生成小规模数据集,核对样本数量、hash、语言分布、token 统计和污染报告。任何人工白名单或黑名单也要进入版本控制并说明原因。数据管线能被复算、能删除、能解释,才有资格支撑后续模型对比,否则指标变化很难归因。

关键一句:数据血缘和跨切分近重复检查决定了模型能力是否可追溯、评测是否可信。

核验来源

  1. RFC 9309: Robots Exclusion Protocol
  2. Deduplicating Training Data Makes Language Models Better
  3. The Llama 3 Herd of Models

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们要训练一个面向电商客服的大模型,需要从用户对话、商品页面、售后记录里收集数据。你一般会从哪些渠道拉数据?怎么保证最后拿到的文本干净、不重复,还能直接喂给模型?

  2. 问法 2 · 层层追问

    你训练大模型的数据一般怎么来?……那网上抓的海量网页里有很多噪声和重复,你是怎么处理的?……具体去重用什么算法?过滤低质量内容呢?……还有分词,中英文混在一起怎么搞?

  3. 问法 3 · 直球架构

    请描述一下大规模语言模型训练数据的采集和预处理流程。包括数据来源有哪些、怎么去重和过滤、清洗和分词的关键步骤,以及你在数据配比或版权方面会考虑什么?

同模块相关题目