0%

预训练数据采集与来源

预训练数据采集与来源

一句话定位:预训练数据链路的第一环,决定了语料的规模上限与”脏度”下限——采什么源、怎么从原始网页里把正文捞干净,直接决定后续所有清洗环节的工作量。

1. 多源异构

预训练语料通常由多类来源混合而成:

  • 网页:以 Common Crawl 为主,规模最大(PB 级)、覆盖最广,但噪声最重(模板、广告、导航、低质内容)。
  • 文档:书籍、论文(arXiv)、百科等,质量高、长文本连贯性好,是提升知识密度的关键。
  • 代码:GitHub 等代码语料,对提升模型推理与结构化能力有显著作用。
  • 其余:问答社区、多语言语料等。

异构性体现在格式、编码、质量、语言分布都不一致,因此采集之后必须统一到标准化的中间表示,才能进入后续流水线。

2. WARC 格式与正文提取的难点

Common Crawl 以 WARC(Web ARChive)格式分发,一条记录包含 HTTP 请求/响应头与原始 HTML 负载(另有 WAT 元数据、WET 纯文本衍生格式)。

从 WARC 中提取正文的核心难点:

  • 去模板(Boilerplate Removal):页面里导航栏、页脚、侧边栏、广告、版权声明等跨页面重复的模板内容,占比常常超过正文;若不去除,会在语料中形成海量近重复片段,既浪费算力也损害模型质量。
  • 去导航:菜单、面包屑、”相关阅读”链接列表等短文本块,语义价值低但数量极大。
  • 附带难点:HTML 结构不规范、字符编码混乱、正文与评论区难以区分。

工程上常用基于 DOM 结构与文本密度的启发式抽取(如 trafilatura、jusText 类思路),并与后续的规则过滤(2.2)配合,形成”抽取 + 过滤”两道防线。

3. 工程视角

该环节是解析型 CPU 密集任务:单条记录处理不重,但记录数极大(十亿量级),瓶颈在解析吞吐与 I/O,靠高并行度 + 大批量顺序读取 + 列式/压缩中间格式(对应 1.6、1.7)来提速。

参考:Common Crawl 官方文档;论文《The Pile: An 800GB Dataset of Diverse Text for Language Modeling》