跳转至

五十八:大模型预训练定义与预训练数据集

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484836&idx=1&sn=af3f95be9b89257d72dfa57577db4710&chksm=f01eb6ddc7693fcbcb95ec1b9b2f1574c6ebd071521ed5498e886f54278c90732084d3150371#rd

1. 学习范围

本日主题是大模型预训练定义与预训练数据集。 本日覆盖: - 预训练在 LLM 生命周期中的位置。

  • 预训练与 SFT、RLHF、DPO、继续预训练的区别。

  • Causal Language Modeling 的 next-token prediction 目标。

  • 为什么简单的下一个 token 预测能学习通用能力。

  • 预训练数据的来源、类型和混合策略。

  • 数据清洗、去重、质量过滤、隐私过滤和污染控制。

  • tokenizer、packing、sharding 与训练数据组织。

  • 常见预训练数据集和工程注意事项。

2. 预训练的定义

预训练是用大规模通用语料,在较少人工标注或无人工标注的条件下,训练模型学习语言、知识、模式和基础推理能力的阶段。 对当前主流自回归大语言模型来说,预训练通常指:

给定 token 序列 x_1, x_2, ..., x_T
训练模型预测每个位置的下一个 token
预训练得到的是 base model。Base model 通常具备续写、补全、知识记忆、代码补全和基础推理能力,但不一定天然符合对话格式、指令遵循、安全偏好或工具调用规范。

3. LLM 训练生命周期

一个典型 LLM 训练流程可以简化为:

pretraining -> continued pretraining -> supervised fine-tuning -> preference alignment -> evaluation/deployment
不同阶段目标不同。 预训练学习基础分布和通用能力。 继续预训练在已有 checkpoint 上继续用领域、语言或新鲜数据训练。 SFT 用指令数据训练模型按用户意图回答。 RLHF、DPO、ORPO 等偏好对齐方法让模型更符合人类偏好、安全约束和对话风格。

4. 预训练与微调的区别

预训练和微调的最大区别在于数据规模、目标和能力来源。 预训练: - 数据量巨大,通常以 token 计。

  • 主要目标是建模自然语言和代码分布。

  • 学到的是广泛能力和世界知识。

  • 训练成本最高。

微调: - 数据量相对小。

  • 目标更具体,例如指令遵循、领域问答、格式控制。

  • 改变模型行为方式,而不是从零学习全部知识。

  • 训练成本较低,但容易过拟合或遗忘。

5. Causal Language Modeling 目标

自回归 LLM 的标准目标是最大化序列概率:

p(x_1, ..., x_T) = product_{t=1}^{T} p(x_t | x_<t)
训练时通常最小化负对数似然:

L = - sum_{t=1}^{T} log p_theta(x_t | x_<t)
在实现上,输入 token 序列右移一位作为 labels。模型在每个位置输出 vocabulary logits,通过 cross entropy 训练。

6. Mask 与信息泄漏

Causal LM 必须使用 causal mask,保证位置 t 只能看到 t 之前的 token,不能看到未来 token。 如果 mask 错误,模型会在训练时偷看答案,loss 可能异常低,但推理时无法复现能力。 这是预训练实现中最基本也最致命的错误之一。

7. 为什么 next-token prediction 有效

下一个 token 预测看似简单,但要做好它,模型必须学习大量结构: - 词法和语法。

  • 事实知识。

  • 语义关系。

  • 长程依赖。

  • 代码结构。

  • 数学和逻辑模式。

  • 对话和文档格式。

当模型容量、数据规模和训练计算足够大时,next-token prediction 会迫使模型压缩语料中的统计规律,形成可迁移的表示和生成能力。

8. Base Model 的能力边界

Base model 不是聊天助手。它更像“文本续写器”。 它可能: - 继续用户输入的文本。

  • 模仿网页或代码格式。

  • 对指令有一定响应,但不稳定。

  • 不会可靠地区分系统、用户和助手角色。

  • 安全边界较弱。

因此,base model 需要后续 instruction tuning 和 alignment 才能成为可用助手。

9. 数据、模型和计算三要素

预训练效果主要由三类因素共同决定: - 模型参数量。

  • 训练 token 数。

  • 训练计算量。

img

Scaling law 讨论的就是模型规模、数据规模、计算预算和 loss 之间的经验关系。 在固定计算预算下,模型太大但数据太少会欠训练;数据很多但模型太小会容量不足。现代训练通常关注 compute-optimal 配比。

10. 预训练数据来源

常见预训练数据来源包括: - Common Crawl 等网页数据。

  • Wikipedia 和百科类数据。

  • Books 和长文本。

  • 论文、技术文档、教材。

  • GitHub 和代码数据。

  • StackExchange、论坛和问答数据。

  • 新闻、博客和高质量网站。

  • 多语言语料。

  • 数学、定理、表格和结构化文本。

不同来源贡献不同能力。代码数据有助于代码生成和结构化推理;高质量书籍有助于长文本和知识;网页提供覆盖广度但噪声高。

11. 常见公开预训练语料

公开语料经常作为学习和复现实验基础。 常见例子: - C4:从 Common Crawl 清洗得到的英文语料。

  • The Pile:包含多源高质量英文语料的混合数据集。

  • RedPajama:复现 LLaMA 风格数据配方的开放语料集合。

  • SlimPajama:对 RedPajama 进一步清洗和去重。

  • RefinedWeb:从网页数据过滤得到的大规模语料。

  • Dolma:用于开放模型训练的数据集。

  • FineWeb:从 Common Crawl 构建的高质量网页语料。

面试中不要求背所有数据集细节,但要理解它们都体现了同一个核心问题:数据质量、覆盖和污染控制对模型能力非常关键。

12. 数据清洗流程

预训练数据不是直接抓取就能训练。典型流程:

raw crawl
-> text extraction
-> language identification
-> rule-based cleaning
-> quality filtering
-> deduplication
-> toxicity/PII filtering
-> document segmentation
-> train/val/test split
-> tokenization
-> packing and sharding
每一步都会影响最终模型质量。

13. 文本抽取与格式处理

网页数据包含 HTML、导航栏、广告、脚本、版权声明、评论区和模板文本。 抽取目标是保留正文,减少 boilerplate。 对于代码、Markdown、LaTeX、表格和对话数据,格式不能一概清除。格式本身可能承载任务信息,例如代码缩进、公式结构和标题层级。

14. 语言识别与多语言配比

语言识别用于过滤非目标语言或控制多语言比例。 多语言训练要注意: - 高资源语言容易占据大部分 token。

  • 低资源语言需要上采样或专门数据。

  • tokenizer 对不同语言的 tokenization 效率不同。

  • 同一 token 预算下,不同语言信息量不完全相同。

多语言配比是能力、公平性和成本之间的工程选择。

15. 质量过滤

质量过滤用于去掉垃圾内容、机器生成垃圾、关键词堆砌、模板页面、重复广告和低信息文本。 常见方法: - 规则过滤,例如长度、字符比例、标点比例、脏词比例。

  • perplexity 过滤,用小语言模型判断文本是否自然。

  • 分类器过滤,识别高质量网页或教育内容。

  • 域名白名单或黑名单。

  • 启发式评分,例如代码是否可解析、文档是否完整。

过滤过弱会引入噪声;过滤过强会损失多样性。

16. 去重

去重是预训练数据工程中的核心环节。 重复数据会导致: - 训练 token 浪费。

  • 过拟合重复样本。

  • 评测污染风险上升。

  • 模型更容易记忆敏感文本。

去重可以在文档级、段落级、句子级或近似匹配级别进行。常见方法包括 hash、MinHash、SimHash 和 embedding 相似度。

17. PII 与安全过滤

PII 包括姓名、手机号、邮箱、身份证、地址、密钥、token 和个人隐私内容。 预训练语料中如果包含大量 PII,模型可能在生成中泄露隐私。 安全过滤通常包括: - 正则规则识别。

  • 专门分类器。

  • 黑名单模式。

  • 代码 secret 扫描。

  • 训练后红队测试。

过滤 PII 不能完全依赖训练后对齐,应尽量在数据阶段降低风险。

18. 数据混合与采样权重

预训练通常不是简单把所有数据拼起来,而是按来源设置混合比例。 例如:

web: 60%
code: 15%
books: 10%
academic: 5%
qa/forum: 5%
multilingual: 5%
比例会影响模型能力。增加代码比例可能提升代码和推理能力,但过高可能影响自然语言风格。增加高质量数学数据可能提升数学,但数据量和质量都有限。

19. Tokenization

数据最终要通过 tokenizer 转成 token ids。 Tokenizer 会影响: - 不同语言的 token 效率。

  • 数字、代码和特殊符号表达。

  • 长上下文下的实际信息密度。

  • OOV 或罕见字符处理。

预训练 tokenizer 通常在大规模代表性语料上训练。训练后不应轻易改变,否则已有 embedding 和输出头都要重新适配。

20. Packing 与 sequence construction

预训练时需要把文档切成固定或可变长度序列。 如果直接 padding,计算浪费严重。常见做法是 packing,把多个短文档拼入一个训练序列。 需要注意 document boundary。不同文档之间可能插入 EOS,避免模型把无关文档当作连续上下文。

21. Sharding 与数据流

大规模训练需要把 tokenized 数据切成多个 shard,供分布式训练节点高吞吐读取。 好的数据流应保证: - IO 不成为瓶颈。

  • shard 可复现。

  • shuffle 足够随机。

  • checkpoint 恢复后数据顺序可控。

  • 不同 worker 不重复消费同一批数据。

数据系统问题经常会表现为 GPU 利用率低、训练不稳定或样本重复。

22. Train/Validation/Test Split

预训练也需要验证集,用来观察 loss、perplexity 和过拟合迹象。 划分时应注意: - 训练集和验证集不要近重复。

  • 下游 benchmark 不应泄漏进训练集。

  • 验证集应覆盖主要数据来源。

  • 对领域模型应保留领域验证集和通用验证集。

测试污染是大模型评估中的重要风险。

23. 数据污染

数据污染指训练集中包含了评测集、答案、benchmark 解析或近重复内容。 污染会导致评测结果虚高,使模型看起来比实际泛化能力更强。 常见控制方法: - 对 benchmark 做 exact match 和 near-duplicate 检索。

  • 对训练语料做 n-gram 或 MinHash 检查。

  • 使用时间切分数据。

  • 使用私有 holdout。

  • 对可疑 benchmark 做人工审核。

24. 数据质量与数量的权衡

更多 token 不一定总是更好。低质量 token 会消耗计算预算,并可能教会模型错误模式。 高质量、小规模数据可能在某些能力上比大规模低质量数据更有效。 但如果过滤过强,模型会缺少覆盖广度,长尾知识、多语言和真实用户表达都会受损。 因此数据配方是质量、数量、多样性和安全性的折中。

25. 面试紧凑总结

预训练是用海量无标注或弱标注文本训练 base model 的阶段,主流 LLM 使用 causal next-token prediction。 预训练让模型学习语言、知识、代码和基础推理,但不会自动成为安全可靠的聊天助手。 预训练数据工程和模型结构同样重要。数据来源、清洗、去重、质量过滤、PII 过滤、混合比例、tokenization、packing 和污染控制都会影响最终能力。 回答预训练问题时,要同时讲清楚目标函数、数据流程、与后续训练阶段的边界,以及数据质量对模型行为的影响。

            预览时标签不可点




































<div class="