基于《大规模语言模型:从理论到实践(第2版)》第3章 大语言模型预训练数据
爆款小标题:原书数据章精炼:来源、清洗与对模型能力的影响
为什么这一节重要
原书与业界共识都强调:数据决定模型上限。同样的架构与算力,不同的数据来源、质量与比例会带来完全不同的能力分布——有的模型偏通用对话,有的偏代码,有的多语言好、有的中文强。若不清楚数据从哪来、怎么洗、会带来什么影响,就无法在自建预训练或筛选数据时做正确决策,也难以解释「为什么某个开源模型在你这场景不好用」。本节紧扣原书第 3 章,系统讲清预训练数据的主要来源、常见清洗与去重思路、以及数据对模型能力的影响,并给出工程上的落地要点。
学习目标
学完本节,你将能够:
- 说出主要来源:列举大模型预训练数据的主要类型(网页、书籍、代码、多语言、对话等),并说明不同来源对模型知识广度、代码能力与语言覆盖的影响。
- 理解清洗与去重:说明常见的数据清洗步骤(去重、质量过滤、安全与隐私过滤、格式标准化)及其目的;区分精确去重与近似去重(如 MinHash)的适用规模与代价。
- 建立「数据—能力」意识:在自建或筛选数据时,能建立「来源—质量—用途」的对应表,避免盲目堆量;了解代表性开源数据集(如 The Pile、RedPajama)及其适用场景与许可。
一、预训练数据的主要来源(原书第 3 章)
原书第 3 章对预训练数据的来源与影响做了系统梳理,可归纳为以下几类。
1. 互联网与网页文本
- 特点:体量巨大、覆盖话题广、实时性强,但质量参差(广告、导航、重复、低质内容多)。
- 对模型的影响:提供通用知识与语言多样性;若比例过高且未充分过滤,会引入噪声与偏见,影响事实性与风格稳定性。
- 工程注意:需做质量过滤(如基于规则或模型打分的过滤)、去重与安全过滤;可结合域名、语言、时间等做分层采样。
2. 书籍与长文
- 特点:结构完整、逻辑连贯、用词规范,适合学习长程依赖与书面语。
- 对模型的影响:提升长文本理解与生成质量、减少口语化与碎片化表达。
- 工程注意:版权与许可需严格合规;可与其他来源按比例混合,避免单一风格主导。
3. 代码
- 特点:结构化强、逻辑明确,且常带注释与文档。
- 对模型的影响:直接支撑代码生成、补全与理解能力;代码数据比例与质量是「代码能力强不强」的关键。
- 工程注意:需区分语言与仓库、过滤自动生成或低质代码;许可(如 GPL、MIT)与合规使用要明确。
4. 多语言与跨语言数据
- 特点:各语种网页、翻译对、多语平行语料等。
- 对模型的影响:决定模型是否具备多语能力及语种间的平衡;中文、小语种往往需要专门收集与配比。
- 工程注意:语种识别与采样比例要可控;避免高资源语言过度主导。
5. 对话与交互数据
- 特点:问答对、论坛、客服日志等,形式接近「轮次」。
- 对模型的影响:有助于对话流畅度与多轮一致性;若用于预训练,需注意与后续「指令微调」数据的区分,避免格式混淆。
小结:不同来源对应不同的能力侧重;预训练阶段通常采用混合配比,根据目标模型定位(通用 vs 代码 vs 多语)调整各来源比例与质量门槛。原书第 3 章对各类数据的规模与影响有更细的讨论,可对照阅读。
二、数据处理:清洗、去重与安全(原书第 3 章)
去重
- 目的:减少重复文本导致的记忆与过拟合,提升泛化;同时节省存储与训练时间。
- 精确去重:基于完整文本或规范化后的 hash(如 MD5)去重,适合中小规模语料;大规模时 I/O 与比对成本高。
- 近似去重:如 MinHash、SimHash 等,用指纹近似表示文档,可快速找出高相似度文档并去重或降权,适合数十亿 token 级别;会有少量误伤(相似但非重复的文本被去重),需根据业务权衡阈值。
- 工程建议:先做文档级去重,必要时再做段落或句子级;大规模时优先近似去重并调参(如 Jaccard 阈值)。
质量过滤
- 目的:剔除低可读性、乱码、模板化、广告等文本,提升训练信号质量。
- 常见手段:基于规则(如标点比例、重复字符、长度)、基于统计(如词分布、困惑度)、或基于模型打分(如用已有模型对句子打分,过滤低分)。过滤过猛会损失多样性,过松会带入噪声,需用验证集或小规模预训练做敏感性分析。
- 原书提示:质量与多样性要兼顾;可对不同来源设置不同过滤强度。
隐私与安全过滤
- 目的:降低个人可识别信息(PII)泄露与有害内容进入训练集的风险。
- 常见手段:PII 检测与脱敏(如邮箱、电话、身份证号)、敏感词与违规内容过滤、合规审查。商用与对外服务必须考虑数据合规与后续可审计性。
- 工程建议:在数据管线中固定「隐私与安全」环节,并做抽样复核。
格式标准化
- 目的:统一编码(如 UTF-8)、换行与空白、去除异常控制字符,便于 tokenizer 与后续流程稳定。
- 工程建议:在清洗早期做格式标准化,避免同一文档在不同阶段被不同处理导致不一致。
MinHash 近似去重实现步骤:
- 将文档分词(或按 n-gram),得到 token 集合;
- 用 k 个哈希函数生成 k 个最小哈希值,组成文档指纹(fingerprint);
- 用 LSH(Locality Sensitive Hashing)将指纹分桶,同一桶内文档可能相似;
- 对桶内文档两两计算 Jaccard 相似度,超过阈值(如 0.8)则去重或降权;
- 可用
datasketch等库实现,大规模时需分布式(如 Spark)。
三、数据对模型能力的影响(原书第 3 章)
原书多处强调:数据规模、质量、领域分布与时间范围共同决定模型上限。
- 规模:在一定范围内,更多高质量数据通常带来更好泛化与少样本能力;但边际收益会递减,且受算力与时间约束。
- 质量:低质量与重复数据会损害泛化、加剧记忆与偏见;高质量、多样化的数据是「能力天花板」的关键。
- 领域分布:若目标场景偏医疗、法律或代码,需在预训练或继续预训练中增加相应领域数据与比例,否则模型在该领域会明显偏弱。
- 时间范围:数据的时间窗口决定模型「知道到哪一天」;对时效性要求高的应用需配合检索或定期更新数据。
代表性开源数据集:原书及社区常提到的包括 The Pile、RedPajama、C4 等。使用前需确认许可(商用/研究)、语言与领域覆盖、以及是否做过去重与过滤,再决定是否直接采用或作为混合数据源之一。
四、工程实战要点
1. 建立「来源—质量—用途」对应表
在自建或筛选预训练数据时,建议用表格明确:每个数据源的来源类型、大致规模、质量门槛(如过滤规则)、计划用途(通用基座 / 领域增强 / 代码增强),以及许可与合规状态。避免「先堆量再说不清哪类数据起了什么作用」。
2. 关注开源数据集的许可与用途
使用 The Pile、RedPajama 等时,务必阅读许可条款;部分数据子集有商用限制或需署名。对外提供服务或商用产品时,数据合规要与法务或合规团队对齐。
3. 领域增强时的比例与平衡
若为「面向医疗问答」的基座增加领域能力,需要在预训练或继续预训练中增加医疗相关数据,并与通用网页等数据做比例平衡:领域数据过少则能力不足,过多则可能损害通用能力与格式稳定性。可通过小规模实验(如 1B 级别)做比例扫描,再放大。
五、常见误区与避坑指南
误区一:认为「数据越多越好」
低质量与重复数据会拉低泛化、加剧记忆。避坑:在扩量的同时做质量过滤与去重;用验证集或小规模预训练观察「加数据后效果是否真的变好」。
误区二:忽视版权与隐私
商用与对外服务若使用未合规数据,会带来法律与声誉风险。避坑:数据管线中固定版权与隐私审查;使用开源数据集时严格遵守许可。
误区三:不做去重或去重过猛
不去重会导致重复占满数据、模型记忆严重;近似去重阈值过严会误伤合理相似文本、损失多样性。避坑:根据规模选择精确或近似去重,并做阈值与抽样检查。
六、小结与衔接
本节基于原书第 3 章梳理了预训练数据的主要来源(网页、书籍、代码、多语言、对话等)、常见处理(去重、质量过滤、隐私与安全、格式标准化)以及数据对模型能力的影响;并给出了建立「来源—质量—用途」表、关注许可与领域比例等工程要点。下一节将进入分布式训练:在数据与模型都很大的前提下,如何用数据并行、张量并行、流水并行与 ZeRO 把训练跑起来(原书第 4 章)。
课后思考题
- 若你要为一个「面向医疗问答」的基座增加领域能力,在预训练数据层面你会如何设计来源与比例?与通用网页数据如何平衡?
- 近似去重(如 MinHash)与精确去重各适合什么规模的数据?各有什么代价?