7.1 节列举了预训练数据的来源与分类,但那些只是“原料”。从互联网原始爬取到最终进入 GPU 集群进行 Token 化,中间有一道极其残酷的数据漏斗:通常 10 TB 的原始网页,经过全流程处理后,可能只剩下 1–2 TB 可用语料。这个过程不是简单的“格式化”,而是直接决定模型最终是“博学的专家”还是“满嘴跑火车的网络喷子”的工程核心。
本节按实际工序拆解六个环节。需要强调的是,这六个环节并非严格的线性流水线,而是一个反复迭代的闭环——清洗后可能发现新的去重模式,去毒后可能需要重新分级。
一、采集(Collection):先画地图,再挖矿
采集不是“爬虫开得越多越好”,而是在合规和成本约束下,尽量覆盖目标领域与语言的分布。
工程层面的关键决策:
| 决策项 | 常见做法 | 风险点 |
|--------|---------|--------|
| 网页爬取 | Common Crawl、自建垂直爬虫 | 抓入大量模板页面、SEO 垃圾、机器翻译内容 |
| 书籍/论文 | Gutenberg、开放获取期刊、图书馆数字化 | 版权雷区;古旧语料占比过高导致语言 archaic |
| 代码 | GitHub 公开仓库、Stack Overflow | License 污染(GPL 代码进训练集可能引发合规争议);issue/评论中噪声极大 |
| 对话数据 | 公开对话语料、合成数据(Self-Instruct/ShareGPT 风格) | 真实对话分布偏斜;合成数据质量参差不齐 |
| 多模态对齐文本 | 图片 Alt 文本、视频字幕、图文对 | 描述与图像内容不匹配(Alt 文本经常是文件名或无意义 SEO 词) |
实用认知:采集阶段就要建立数据来源血缘追踪。如果后续发现某个站点 90% 内容都是 AI 生成的垃圾文本,你需要能快速定位并整站剔除。缺乏溯源能力的数据湖,后期维护成本极高。
二、去重(Deduplication):模型最怕“死记硬背”
去重是数据处理中性价比最高的环节。重复数据不会增加模型知识,只会导致:
- 训练集/测试集泄漏(Benchmark 成绩虚高);
- 语言模型对特定片段的过拟合(生成时反复复读某段文字);
- 存储与算力浪费。
两个层级的去重策略:
1. 文档级去重(Exact / Near-Deduplication)
- 精确去重:对文档计算 MD5/SHA256,直接删除完全相同的文件。这一步能去掉 30% 以上的原始数据。
- 模糊去重:使用 MinHash + LSH(局部敏感哈希) 或 SimHash 计算文档相似度。通常设定 Jaccard 相似度阈值(如 0.8–0.9),超过则保留一篇、删除其余。对于代码,还需处理仅变量名不同的 copy-paste 代码块。
2. 段落/句子级去重(Sub-document Deduplication)
- 移除反复出现的导航栏、版权声明、法律条款、论坛签名档。
- 对短文本(如社交媒体、对话)进行 n-gram 重叠度检测。如果某 10-gram 在语料中出现超过设定次数(如 100 次),通常视为模板噪声,整句删除。
实用建议:去重阈值不是越严格越好。过度去重(如阈值设到 0.5)可能误伤学术论文中固定格式的摘要、法律条文的固定表述,反而损失领域知识。建议先在小样本上人工抽检召回率,再放大到全量。
三、清洗(Cleaning):从“泥沙”到“食材”**
清洗解决的是格式问题和低质载体问题,目标是把非文本杂质剥离,保留自然语言本身。
核心工序:
- HTML 结构化提取:不要用正则表达式硬剥标签。推荐使用 trafilatura、readability-lxml 或 jusText 等库提取正文,它们能较好地区分主体内容与侧边栏广告。
- PDF/EPUB/Word 解析:PDF 是灾难重灾区——扫描版 PDF 需要 OCR(Tesseract/PaddleOCR),文字版 PDF 常有断行、页眉页脚混入。需用 pdfplumber、PyMuPDF 等工具做版面分析,重建阅读顺序。
- Unicode 规范化:全角半角统一、繁简转换策略(通常保留原生分布,或按目标用户做选择性转换)、去除零宽字符、控制字符。
- 代码清洗:去除自动生成的 License 头、大量连续的 import 语句、空文件、二进制文件误识别为文本。
真相:清洗环节的脏活累活占比极高。一个看似简单的“提取网页正文”,在处理低质量 CMS 系统生成的网页时,可能需要堆叠几十条启发式规则。不要幻想有一个万能清洗器能一步搞定所有语种和格式。
四、过滤(Filtering):把低质内容挡在门外**
清洗解决“格式脏”,过滤解决“内容烂”。这一步的核心是用低成本手段剔除明显不适合预训练的文本。
常用过滤维度:
| 维度 | 规则/方法 | 目的 |
|------|----------|------|
| 长度过滤 | 剔除 Token 数 < 50 或 > 10 万的文档 | 去除无意义短句和异常长文档 |
| 符号密度 | 标点/数字/特殊符号占比 > 50% 则剔除 | 去除表格转存、ASCII 艺术、乱码 |
| 语言识别 | fastText langdetect 识别语言,保留目标语种 | 防止多语言模型训练中混入未标注语种噪声 |
| 停用词比例 | 如果文档中高频词全是“the, a, is”且缺乏实词 | 识别无信息量的占位文本 |
| 困惑度过滤(Perplexity Filtering) | 用一个小语言模型计算文档 PPL,过高则剔除 | 剔除语法混乱、机器翻译劣质文本 |
实用陷阱:Perplexity 过滤是一把双刃剑。它倾向于保留“常见、流畅”的文本,但会系统性地过滤掉有价值的低概率内容——比如专业数学论文(符号密集、句式复杂)、小众方言文本、诗歌、代码中的冷门语言。Llama、Mistral 等模型的数据处理报告中都提到,他们会按领域调整 PPL 阈值,而非一刀切。
五、去毒(Detoxification):安全与合规的底线
去毒不是“洁癖”,而是避免模型输出违法、有害或侵犯隐私内容的强制性工序。越来越多的司法辖区对训练数据合规提出明确要求(如欧盟 AI Act、中国生成式 AI 管理暂行办法)。
去毒的三道防线:
1. 规则拦截(前置快速过滤)
- 关键词黑名单:种族歧视词汇、色情术语、极端暴力描述词。
- 正则匹配:身份证号、手机号、银行卡号、邮箱地址等 PII(个人可识别信息)。
- URL/IP 过滤:拦截已知恶意网站、钓鱼站点内容。
2. 模型分类器拦截(精准识别)
- 训练小型 BERT/fastText 分类器,识别 Toxic/NSFW/Hate Speech 等类别。
- 对代码数据,识别恶意脚本、密码硬编码、密钥泄漏。
3. 人工审计与抽样(兜底)
- 对高敏感领域(儿童相关、医疗、法律)数据进行人工抽检。
- 建立“红色样本库”,定期回归测试过滤系统的召回率。
PII 处理策略:
- 删除:直接移除整句(适合强隐私场景)。
- 实体替换:用
<NAME>、<PHONE>等占位符替换(保留句子结构,但模型会学到这些占位符模式)。 - 合成替换:用同类型生成实体替换(如把“张三”换成“李四”,把“13800138000”换成另一个有效格式的假号码)。
实用认知:过度去毒会导致模型“道德洁癖”——即对无害请求也过度拒绝(Over-refusal)。例如,模型可能因为训练数据中去除了所有与“武器”相关的文本,而拒绝回答“菜刀如何保养”这类正常问题。去毒策略需要与安全对齐(Alignment)团队协同设计,而非数据团队单方面“宁杀错不放过”。
六、质量分级(Quality Grading):好钢用在刀刃上**
经过前五步,你得到了一批“干净无毒”的数据,但它们的质量并不均匀。质量分级的目的是让不同质量的语料在训练的不同阶段、以不同权重发挥作用。
分级维度与信号:
| 维度 | 正向信号 | 负向信号 |
|------|---------|---------|
| 教育价值 | 概念解释清晰、逻辑递进、事实密度高 | 纯粹的情绪发泄、无信息量的闲聊 |
| 语言质量 | 语法正确、句式多样、拼写规范 | 充斥着拼写错误、网络缩写、断句混乱 |
| 格式规范 | Markdown/代码结构清晰、段落分明 | 排版崩坏、乱码插入、表格转文本后完全不可读 |
| 来源可信度 | 维基百科、学术期刊、技术文档 | 匿名论坛、内容农场、已知的低质聚合站 |
分级方法:
- 启发式评分:基于上述维度设计规则引擎,快速打分。
- 参考模型评分:用已知高质量的小模型(如基于 Wikipedia 训练的分类器)给文档打质量分。
- 来源分级:预先对数据源做信誉评级(如书籍 > 高质量新闻 > 垂直社区 > 随机网页),作为强先验。
典型应用策略:
- Tier 1(高质):百科、教科书、经典文学、高质量技术文档。用于核心预训练阶段,采样权重高。
- Tier 2(中质):普通新闻、博客、论坛精华帖。用于补充预训练,降低权重或作为多样性来源。
- Tier 3(低质/长尾):社交媒体、评论、自动转录文本。通常降级使用——要么只用于早期 Warmup,要么仅针对特定能力(如口语化、网络梗)做小规模继续预训练。
与 7.3 节的衔接:分级后的数据不是简单混合,而是需要按领域、按质量做配比策略。这正是下一节“数据配比与领域均衡”的核心议题——如何避免模型变成“维基百科复读机”,同时又不被低质网络口语带偏。
七、小结:数据工程的本质是“负向选择”
回顾整个流程:
原始数据 → 采集(溯源) → 去重(防泄漏) → 清洗(去格式噪声)
→ 过滤(去内容垃圾) → 去毒(保安全合规) → 分级(差异化使用) → 进入 Tokenizer
关键 takeaway:
- 数据处理的 ROI 极高:在算力昂贵的今天,用 30% 的人力成本做数据清洗,往往比盲目加大模型参数量更能提升效果。
- Pipeline 的健壮性 > 单点精度:全量数据流式处理、每一步的 Checkpoint、异常样本的旁路队列(Quarantine),比追求某一步 99% 的准确率更重要。
- 规则与模型并用:早期阶段用规则兜底(快、可解释),后期用模型精细化(准、可扩展)。完全依赖大模型做数据过滤,成本上不可承受。
当数据走过这六道工序后,它们仍然是“生肉”,还不能直接喂给 GPU。下一节(7.3),我们将讨论这些食材如何被配比、加权、混合,最终炒成一道营养均衡的“预训练大餐”。