五十八:大模型预训练定义与预训练数据集¶
来源: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. 预训练的定义¶
预训练是用大规模通用语料,在较少人工标注或无人工标注的条件下,训练模型学习语言、知识、模式和基础推理能力的阶段。 对当前主流自回归大语言模型来说,预训练通常指:
预训练得到的是 base model。Base model 通常具备续写、补全、知识记忆、代码补全和基础推理能力,但不一定天然符合对话格式、指令遵循、安全偏好或工具调用规范。3. LLM 训练生命周期¶
一个典型 LLM 训练流程可以简化为:
pretraining -> continued pretraining -> supervised fine-tuning -> preference alignment -> evaluation/deployment
4. 预训练与微调的区别¶
预训练和微调的最大区别在于数据规模、目标和能力来源。 预训练: - 数据量巨大,通常以 token 计。
-
主要目标是建模自然语言和代码分布。
-
学到的是广泛能力和世界知识。
-
训练成本最高。
微调: - 数据量相对小。
-
目标更具体,例如指令遵循、领域问答、格式控制。
-
改变模型行为方式,而不是从零学习全部知识。
-
训练成本较低,但容易过拟合或遗忘。
5. Causal Language Modeling 目标¶
自回归 LLM 的标准目标是最大化序列概率:
训练时通常最小化负对数似然: 在实现上,输入 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 数。
-
训练计算量。
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. 数据混合与采样权重¶
预训练通常不是简单把所有数据拼起来,而是按来源设置混合比例。 例如:
比例会影响模型能力。增加代码比例可能提升代码和推理能力,但过高可能影响自然语言风格。增加高质量数学数据可能提升数学,但数据量和质量都有限。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="