预训练需要几百亿个 token 的文本。这些文本从哪来?
互联网是最大的语料库
绝大部分预训练数据来自互联网。一个叫 Common Crawl 的非营利组织从 2011 年开始持续爬取整个互联网,把网页的 HTML 保存下来。截至 2024 年,他们的存档超过了 2500 亿个网页。
但原始的 Common Crawl 不能直接用来训练。打开一个随机的网页 HTML,你会看到:
<div class="nav-menu">首页 | 关于我们 | 联系方式</div>
<div class="cookie-banner">本网站使用 Cookie,继续浏览即表示同意...</div>
<div class="sidebar-ad">限时特惠!点击购买...</div>
<div class="content">
<p>量子计算利用量子力学原理来处理信息。与经典比特不同,
量子比特可以同时处于 0 和 1 的叠加态...</p>
</div>
<div class="footer">© 2023 版权所有 | 隐私政策 | 用户协议</div>
真正有用的内容(那段关于量子计算的文字)只占页面的一小部分。其余的导航菜单、广告、Cookie 弹窗、页脚——全是噪声。如果把这些噪声也喂给模型,它会花大量的训练 token 预算学习怎么生成导航菜单和广告文案——这完全是浪费。
清洗、过滤、去重之后才能得到高质量的训练数据。接下来三个章节会逐一讲这些步骤。
FineWeb 和其他开源数据集
FineWeb 是 Hugging Face 团队从 Common Crawl 中清洗整理出来的英文数据集,约 15 万亿个 token。它经过了详细的质量过滤——去掉了低质量页面、重复内容、有害内容。
类似的开源数据集还有 RedPajama、The Pile、DCLM 等。每个数据集的清洗标准和过滤策略不同,质量也不同。选择哪个数据集、信任谁的过滤标准——这本身就是一个需要判断力的决策。
中文的高质量开源语料相对稀缺。英文互联网的内容量远大于中文,英文的数据处理工具也更成熟。Sophia 的中文数据来自多个来源的组合——百科全书、书籍、学术论文、筛选后的网页——拼凑出足够规模的高质量中文语料是训练中文模型的一个实际难题。
不只是网页
好的训练数据不能只有网页。语言模型需要理解多种类型的文本:
- 书籍:长篇、结构完整、语言质量高。一本 10 万字的小说能教会模型长距离的上下文连贯性——这是碎片化的网页做不到的。
- 学术论文:精确、逻辑严密、包含专业知识。
- 代码:编程语言的语法、逻辑推理、结构化表达。研究表明,在训练数据中加入代码能提升模型的推理能力——即使模型本身不是为写代码设计的。
- 对话:口语化表达、多轮交互的模式。
- 百科全书:事实性知识、中性语调。
Sophia 的数据配比
Sophia 的 200 亿 token 训练数据中,中文占 56.5%,英文占约 30%,代码约 10%,其余是其他语种和特殊领域。
这个配比是一个深思熟虑的选择——第 46 章节会详细讨论为什么是这个比例。核心原则是:你想让模型在哪方面最强,就在那个方面投入最多的训练数据。 Sophia 被设计为中文对话模型,所以中文占了绝对多数。
下一章节来看数据清洗中最重要的一步:去重。