数据最重要
数据是真正的差异化因素,公司高度保密
CS336 · 第 13 课
数据是训练语言模型最重要的因素。但数据不会从天上掉下来——它来自特定的服务、经过特定的收集和处理流程。这一课带你遍历现代 LLM 使用的数据来源和知名数据集。
Spring 2026 官方来源:Lecture 13 trace · 课程日程
本页是中文学习导读;讲次主题、教师与材料版本以 Stanford 官方页面和讲义为准。
本讲问题:模型最终学到什么,取决于训练语料中出现了什么以及以什么比例出现。本讲从目标能力倒推网页、书籍、代码和对话数据各自提供什么信号。
目标能力 → 候选数据源 → 采集与许可边界 → 数据集组成和 mixture → 探索统计 → 为下一讲过滤与去重建立输入。
“数据量”不是一个自足变量。同一 URL 可有多个 crawl snapshots,一个 document 可被抽取成多个 text records,tokenizer 又把 text 变成 tokens。先分清 source、snapshot、record、document、token 与 mixture weight,才谈多少数据。
source / license / collection policy
↓ snapshot (WARC, repo archive, book dump)
raw records + metadata
↓ extraction / normalization
documents
↓ filtering / dedup / PII handling
accepted documents
↓ tokenizer + mixture sampler
processed training tokens D
source bytes ≠ extracted text ≠ unique text ≠ processed tokens一个 100GB crawl 可能包含压缩、HTML、图片、重复模板与 metadata。抽取后也许只有 30GB 文本,过滤去重后 12GB;具体 tokenizer 才把它变成 token count,训练 2 epochs 又让 processed \(D\) 翻倍。每一步都需要 manifest 与 provenance,否则无法复现实验或响应删除请求。
更多来源可能同时增加重复、低质量、隐私风险、版权不确定性与 benchmark contamination。Domain mixture 也不是静态占比:按 token sampling 10% 与按 document 采样 10% 对长文档域给出的训练权重不同。法律判断依司法辖区与具体事实,页面中的案例不是通用法律结论。
Hot take:训练基础模型最重要的是数据。架构和训练方法越来越趋同,数据是真正的差异化因素。
看看公司公开的信息就知道了:
| 原因 | 解释 |
|---|---|
| 竞争壁垒 | 好的数据配方是核心竞争力 |
| 版权风险 | 公开数据来源可能引发诉讼 |
| 隐私问题 | 可能暴露数据中的个人信息 |
与架构和系统不同,数据工作有一个特殊性质:
Live service (Reddit, GitHub, Wikipedia)
↓ 爬取/API/dump
Raw snapshot (Common Crawl, GH Archive, dumps)
↓ 转换/过滤/去重
Processed text (C4, FineWeb, The Pile)
↓ 配比混合
Aggregated dataset (Dolma, RedPajama)
| 阶段 | 数据 | 目标 |
|---|---|---|
| Pre-training | 海量原始文本(万亿 tokens) | 基础语言能力 |
| Mid-training | 高质量数据(百亿 tokens) | 增强特定能力 |
| Post-training | 指令/偏好数据(百万样本) | 指令跟随、alignment |
术语:
最大的公开网页爬取数据集:
Apache Nutch 爬取流程:
1. 从种子 URL 开始(数亿个)
2. 下载页面,提取链接
3. 将新链接加入队列
4. 重复直到队列为空或达到预算
爬取策略:
- Selection policy: 哪些页面下载?
- Politeness policy: 尊重 robots.txt,不超载服务器
- Re-visit policy: 多久重新检查更新?
| 格式 | 内容 | 大小 | 用途 |
|---|---|---|---|
| WARC | 原始 HTTP 响应(HTML) | 大 | 需要精确提取 |
| WET | 转换后的文本 | 小 | 快速开始 |
重要:WET 转换是有损的。DCLM 论文显示,使用不同的 HTML→text 工具(trafilatura vs jusText)会影响下游任务精度。如果质量要求高,应该从 WARC 自己提取。
GPT-2 使用的数据集:
目前最广泛使用的开源预训练数据集之一:
Books3 来自 Bibliotik 影子图书馆:
影子图书馆:Library Genesis (LibGen)、Z-Library、Anna's Archive、Sci-Hub 等绕过版权和付费墙。LibGen 有 ~400 万本书,Sci-Hub 有 ~8800 万篇论文。这些资源的法律地位存疑。
大规模代码数据集:
代码数据的价值:
1. 直接帮助编程任务
2. 提升推理能力(folklore,但有实证支持)
3. 帮助数学(代码可以验证数学推理)
代码的挑战:
1. 许可证复杂(GPL 有传染性)
2. 大量重复(fork、模板)
3. 质量差异大(学生作业 vs 生产代码)
T5 模型使用的数据集:
C4 的过滤规则:
1. 只保留以标点结尾且 ≥5 个词的句子
2. 移除少于 3 个句子的页面
3. 移除包含"坏词"的页面
4. 移除包含 '{' 的页面(无代码)
5. 移除 'lorem ipsum'、'terms of use' 等
6. 用 langdetect 过滤非英语(p > 0.99)
EleutherAI 的草根项目:
| 领域 | 来源 | 大小 |
|---|---|---|
| Pile-CC | Common Crawl WARC | 227 GB |
| PubMed Central | 医学论文 | 90 GB |
| Books3 | Bibliotik | 101 GB |
| OpenWebText2 | Reddit 链接 | 63 GB |
| ArXiv | 论文 | 85 GB |
| GitHub | 代码 | 95 GB |
| Wikipedia | 维基百科 | 25 GB |
AI2 (Allen AI) 的开放数据集:
Together AI 的开放数据集:
NVIDIA 的大规模数据集:
Spring 2026 官方 Lecture 13 还把 Common Pile 作为“properly licensed data”的例子:数据集的差异不只来自 token 数和过滤器,也来自哪些 source 在法律与许可约束下可以进入候选池。即使两套 corpus 下游 loss 接近,它们的 provenance、可再分发性与删除响应能力仍可能完全不同。
| 途径 | 说明 | 例子 |
|---|---|---|
| 获得许可 | 向版权持有者付费 | Google-Reddit 协议 |
| 合理使用 (Fair use) | 法律豁免条款 | Google Books 索引 |
| 公共领域 | 版权已过期 | Project Gutenberg |
| Creative Commons | 作者主动开放 | Wikipedia, Khan Academy |
现状:AI 训练是否属于 fair use 仍在法律争议中。多个诉讼正在进行(Authors Guild v. Google 的先例对 AI 训练有利但不确定)。这是数据保密的重要原因之一。
常见开放许可证:
- CC0: 完全放弃版权
- CC BY: 允许使用,需署名
- CC BY-SA: 允许使用,需署名,衍生作品需同许可证
- CC BY-NC: 允许非商业使用
- MIT/Apache: 代码许可证
- GPL: 传染性许可证(衍生作品也需 GPL)
商业数据许可:
- Google-Reddit: 据报 $60M/年
- OpenAI-Shutterstock: 图片数据
- OpenAI-StackExchange: 问答数据
数据工作的一个重要但常被忽视的部分是亲自查看数据:
# 1. 随机抽样查看
import random
samples = random.sample(dataset, 100)
for sample in samples:
print(sample.text[:500])
print("---")
# 2. 统计特征
# - 平均长度
# - 语言分布
# - 主题分布(用 classifier)
# - 重复率
# 3. 可视化
# - 长度分布直方图
# - 主题聚类(t-SNE/UMAP)
# - 时间分布
# 4. 与模型行为关联
# - 模型擅长什么 → 看训练数据中有什么
# - 模型犯错 → 看训练数据中缺什么或有什么噪声
问题 1:为什么公司公开架构细节但保密数据细节?
问题 2:Common Crawl 的 WET 格式和 WARC 格式有什么区别?
问题 3:为什么 Google Books 的全文索引被判定为 fair use?
问题 4:为什么数据工作比架构或系统工作更难自动化?
100GB WARC 为什么不能直接说 \(D=100B\) tokens?
答案:WARC 含压缩、HTML、metadata 与重复;需抽取、过滤、去重、tokenize,并乘实际 epochs 才得到 processed \(D\)。
若把 bytes 当 tokens,你混淆了 storage representation 与模型消费的离散单位。
候选数据源已经进入 raw corpus;下一课逐步决定保留什么、判重到什么粒度,并用 false positive/negative 与下游训练结果审计每个门。
数据是真正的差异化因素,公司高度保密
网页、书籍、论文、代码、对话各有特点
Fair use 有争议,许可是替代方案
亲自查看数据是数据工作的重要部分