数据 · Dataset
如果说训练一个 AI 是"培养一个学生",那么数据集就是这个学生的所有教材、习题册和高考真题。教材有多厚、多好、多全,直接决定了这个学生能考到什么水平——GPT-4 之所以是 GPT-4,一半功劳要归于它读过的 13 万亿 token 文本。
小 A 家里只有一本破旧的《新华字典》,翻来覆去读了十年;
小 B 家里有整整一屋子藏书——从《红楼梦》到《费曼物理》,从《史记》到《三体》,还包括十年份的高考真题与错题本。
十年后高考,你猜谁分数更高?
再想想:如果小 B 那屋子书里,混进了 30% 的乱码和错别字,他还能不能考出好成绩?
先把这一篇的术语翻译成人话
这一篇的名词看着专业,其实本质上就是"备菜"和"备考"这两件事。先过一遍这张表:
| 术语 | 换成大白话 | 生活里对应的东西 |
|---|---|---|
| 数据集(Dataset,喂给模型学的那一大堆材料) | 说白了就是"给学生准备的那一整柜复习资料" | 图书馆里为一门课调出来的所有参考书 |
| Token(模型眼里的最小语言单位,一个 Token 大约相当于半个到一个汉字) | 说白了就是"数材料多少的那个称重单位" | 菜市场论"斤"卖菜——Token 就是模型的那个"斤" |
| 清洗(Cleaning,把脏的、重的、没用的材料剔掉) | 说白了就是"下锅之前先洗菜、掐掉黄叶" | 厨房里洗菜、去皮、挑虫眼 |
| 去重(Deduplication,把重复的内容删掉) | 说白了就是"同一道题在资料里出现了八百遍,得删掉" | 整理笔记时把抄重了的几页撕掉 |
| 标注(Annotation,人工给数据打上正确答案) | 说白了就是"人工给每道题配一份标准答案" | 老师批作业——机器只能靠改过的作业学习 |
| 训练集 / 验证集 / 测试集 | 说白了就是"平时练习题 / 模拟考 / 正式高考" | 三者绝不能混——拿做过的题去考试,分数全是虚的 |
| 过拟合(Overfitting,把练习题背下来了,换个题就不会) | 说白了就是"死记硬背,不会变通" | 只会做考试原题的学生,题目稍微改个数字就傻眼 |
| 数据配比(Data Mixture,各类材料按什么比例掺) | 说白了就是"炖一锅汤,肉、菜、水各放多少" | 厨房里的配方比例——盐多了咸、水多了淡 |
| 合成数据(Synthetic Data,用模型自己生成的数据来训练模型) | 说白了就是"老师自己出模拟题给学生练" | 题库不够了,老教师自己编题——编得好是好事,编得差就是误人子弟 |
这一整篇可以用一句话概括:模型的能力上限,不是由算法决定的,而是由你喂给它什么决定的。就像同样的灶台和厨师,用新鲜食材做出来的菜和用烂菜叶做出来的菜,是两回事。
一、规模(Scale):为什么大模型需要 T 级 token
先把这些天文数字翻译成人话。15 万亿 Token 大约是 22 万亿个汉字。按一个人每分钟读 300 字、每天不吃不喝读 8 小时算,要读 47 万年——而人类有文字记载的历史才 5000 年。换个更好感受的说法:把全世界所有语言版本的维基百科全部加起来,也只是这个量的几百分之一。
再说说"为什么非要这么多"。打个比方,这好比一位厨房里的老师傅:炒青菜他做过八百万次,闭着眼都不会错;可"客人忌辣、忌葱、还要少油、又赶时间"这种组合,他这辈子可能只碰上过三回。而恰恰是这三回,决定了他是"会炒菜"还是"真的手艺好"。模型也一样——常见的句子它见几百万次就学会了,而那些冷门的、拐着弯的问题,整个互联网上可能只有几百个真实例子。你不让它见过这些边角料,它遇到冷门问题就只能胡编。
先建立一个直观感受:1 token ≈ 0.75 个英文单词 ≈ 1.5 个中文汉字。GPT-3 训练用了大约 3000 亿 token;GPT-4 据传用了 13 万亿 token;Llama 3 405B 用了 15 万亿 token。这是什么概念?把维基百科所有语言的所有版本加起来,也只有几百亿 token 而已——现代大模型读过的文字量,是维基百科的几百倍。
为什么需要这么多?因为语言里的模式极其稀疏。"苹果掉在地上"这样的句子出现几百万次,模型就学会了;但"用 Rust 写一个支持并发的 Web 服务器并处理 SIGTERM"这样的组合,可能整个互联网上只有几百个真实样本——模型必须见过足够多的"边角料",才能在真正遇到冷门问题时不至于胡编乱造。数据规模上去了,模型才可能"见多识广"。
把这条曲线摊开成一张时间表,你会看到一条比参数量更陡的增长线。注意最后两行:token 数已经开始超过"参数量 × 20"这个 Chinchilla 建议值好几倍——因为现在的瓶颈不再是"训练不足",而是"推理要便宜",所以厂商宁愿用更小的模型硬灌更多数据。
| 模型 | 年份 | 训练 token 量 | 参数量 | token / 参数比 |
|---|---|---|---|---|
| GPT-1 | 2018 | 约 10 亿 | 1.17 亿 | 约 9 : 1 |
| GPT-2 | 2019 | 约 100 亿(40GB WebText) | 15 亿 | 约 7 : 1 |
| GPT-3 | 2020 | 3000 亿 | 1750 亿 | 约 1.7 : 1(严重欠训) |
| Chinchilla | 2022 | 1.4 万亿 | 700 亿 | 20 : 1(最优点) |
| Llama 2 | 2023 | 2 万亿 | 7B / 13B / 70B | 约 285 : 1(7B) |
| GPT-4 | 2023 | 推测约 13 万亿 | 推测 1.8 万亿 MoE | 约 7 : 1 |
| Llama 3 | 2024 | 15 万亿 | 8B / 70B / 405B | 约 1875 : 1(8B,极度过训) |
| DeepSeek-V3 | 2024 | 14.8 万亿 | 671B MoE(37B 激活) | 约 22 : 1(按总参数) |
15 万亿 token 到底有多少?换算成人类的阅读速度体会一下:按每分钟读 300 字、每天读 8 小时不停歇,读完 15 万亿 token(约 22 万亿汉字)需要大约 47 万年。人类文明有文字记载才 5000 年。这就是"预训练"这三个字底下真正的体量——它不是"多读了一点书",而是一个人类个体无论如何都不可能达到的阅读量级。
反过来也要看清规模的边界。Common Crawl 从 2008 年爬到今天,累计超过 250 PB 原始数据,但去重、清洗、过滤之后能用的高质量英文文本,学界估算只有几万亿到十几万亿 token。也就是说,行业已经把互联网上"能用的公开文本"基本吃掉了一遍。2022 年 Epoch AI 那篇被广泛引用的论文给出的预测是:高质量语言数据可能在 2026 到 2032 年间耗尽。这条时间线,正是本篇最后一节要讲的"合成数据"为什么突然变成刚需的原因。
二、数据从哪来:一张配料表
配料表这个说法特别贴切——它本质上就是厨房里炖一锅汤的配方。"读了整个互联网"这句话跟"我随便煮了点东西"一样不负责:真正的做法是"网络文本 60%、社区精华帖 22%、书籍 16%、百科 3%",一样一样称好了下锅。
那张表里最该琢磨的是最后一列"被读过几遍"。换成大白话:网上爬来的那一大堆占了六成的量,却只被读了不到半遍;而维基百科只占三个百分点,反反复复读了三遍半。好比你复习考试:教科书要翻烂,报纸看一眼就扔。不是因为报纸没用,而是因为同样的时间,反复背教科书的收益高得多。"按质量分配重复次数"这条工程判断,就是从这一列数字里长出来的。
"读了整个互联网"是一句方便的口号,真正的训练集是有配料表的。GPT-3 的论文公开了它的五个来源与权重,这是业界少见的透明记录,也成了后来所有模型的参照模板:
| 来源 | 清洗后规模 | 在训练中的采样占比 | 被完整读过几遍 |
|---|---|---|---|
| Common Crawl(过滤后) | 4100 亿 token | 60% | 0.44 遍 |
| WebText2(Reddit 高赞外链) | 190 亿 token | 22% | 2.9 遍 |
| Books1 | 120 亿 token | 8% | 1.9 遍 |
| Books2 | 550 亿 token | 8% | 0.43 遍 |
| Wikipedia(英文) | 30 亿 token | 3% | 3.4 遍 |
这张表里最值得琢磨的是最后一列。Common Crawl 占了 60% 的采样量,但只被读了不到半遍;维基百科只占 3%,却被反复读了 3.4 遍。这是一个非常关键的工程判断:高质量语料值得重复读,低质量语料读一遍就够。换成学生的比喻——教科书要反复背,报纸翻一遍就扔。这个"按质量分配重复次数"的思路,就是下面要讲的"数据配比"的起点。
到了 2024 年,配料表的构成明显往三个方向倾斜。第一是代码占比暴涨:Llama 3 的代码数据约占 17%,而 GPT-3 时代几乎可以忽略。第二是数学与科学语料被单列:Llama 3 里数学与推理类约占 6%,DeepSeek 更把数学语料当作独立赛道去堆。第三是多语言被认真对待:Llama 3 的非英文语料约占 8%,而 GPT-3 里 92.6% 是英文。
各类语料带来的能力是可以拆开看的,这里给一张经验对照表——它解释了为什么"配料表"不是随便凑的:
| 语料类型 | 主要贡献的能力 | 典型来源 | 隐患 |
|---|---|---|---|
| 网页 | 广度、时事、口语、长尾知识 | Common Crawl | 噪声大、含毒、含广告 |
| 书籍 | 长程连贯性、叙事结构、文学质感 | 图书馆扫描、Project Gutenberg | 版权争议最大 |
| 代码 | 逻辑严密性、结构化输出、推理链 | GitHub、The Stack | 许可证复杂、含密钥泄漏 |
| 论文 | 专业术语、公式、严谨表述 | arXiv、PubMed | 领域偏窄、LaTeX 噪声 |
| 百科 | 事实密度最高、结构清晰 | Wikipedia、百度百科 | 体量太小(仅数十亿 token) |
| 论坛对话 | 对话感、多轮结构、真实提问方式 | Reddit、Stack Exchange、知乎 | 观点偏见、抬杠语气 |
"代码提升通用推理"这件事值得单独强调,因为它非常反直觉。多项研究和工程实践都发现:在训练集里加入大比例代码,模型在完全不涉及代码的逻辑题、多步推理题上的表现也会明显上升。一个流行的解释是:代码是人类写下的、语法上强制严密的推理过程——变量必须先定义后使用,分支必须穷尽,缩进必须对齐。读代码等于读了几千万份"不允许含糊其辞的论证",这种严密性会迁移到自然语言推理上去。
三、质量(Quality):垃圾进,垃圾出
这句老话换成大白话就是菜市场上最朴素的一条道理:再好的厨子、再贵的灶,用烂菜叶也炒不出好菜。而清洗这道工序干的活儿相当于洗菜:去皮、掐黄叶、挑虫眼、冲泥沙。看起来最没技术含量,却是决定成菜能不能吃的那一步。
还有一个反直觉的事实值得先记住:这一行里公认"清洗数据"占了整个训练项目七到九成的工作量,真正调模型的时间反倒是零头。好比做一顿家宴:你在灶前的时间可能只有半小时,但买菜、洗菜、切配花了一整个上午。外人只看见你在灶前那半小时,就以为做饭主要靠翻锅的手法。
但规模不是万能的。原始互联网数据里充斥着广告、乱码、机翻、色情、暴力、无意义的重复段落——如果不做清洗直接喂给模型,训出来的东西也会是"网络垃圾生成器"。所以现代大模型的数据流水线里,清洗(cleaning)和去重(deduplication)是最关键的两步。
清洗一般包括:语言识别(把非目标语言剔除)、去 HTML 标签、正则过滤脏话、启发式规则去广告、用一个"质量分类器"打分并筛掉低分文本。去重则更精细——如果同一段文字在数据集里出现了 1000 次(比如"cookie 政策"),模型会过度记忆它,反而伤害泛化能力。业界的共识是:10T 的干净数据,胜过 100T 的垃圾数据。
把这些步骤排成一条真实的流水线,大致是七道关卡。每一关都会砍掉一大批数据——从 100 PB 原始网页到 15 万亿可用 token,实际存活率常常只有百分之几:
- ① 抽取正文从 HTML 里剥出主体文字。这一步比想象中难:导航栏、页脚、"相关阅读"、Cookie 提示、评论区广告要全部剔掉。业界常用 trafilatura、jusText 这类工具,FineWeb 团队专门对比了多种抽取器,发现换一个正文抽取器,下游模型的评测分数能差 1-2 个百分点。
- ② 语言识别用 fastText 或 CLD3 判断语种并打置信度分。FineWeb 的做法是只保留英文置信度 > 0.65 的文档。这一关会误杀大量中英混排、代码混排的页面,所以中文模型往往要重训语言分类器。
- ③ 启发式质量过滤一批看起来很土但极其有效的规则,源头是 2021 年 DeepMind 的 Gopher 论文:文档词数在 50-10 万之间、平均词长 3-10 字符、符号与词的比例小于 0.1、以省略号结尾的行不超过 30%、含停用词的行不少于 80%。光这几条就能砍掉一半以上的网页。
- ④ 去重分三个粒度:精确去重(哈希整篇)、近似去重(MinHash + LSH,判断 13-gram 重合度)、行级去重(删掉在语料里反复出现的同一行,如"登录后查看全文")。这是整条流水线里对最终效果影响最大的一步,下面单独讲。
- ⑤ 去毒与安全过滤用分类器和词表剔除色情、仇恨言论、极端暴力、自残教程等内容。这里有个微妙的权衡:过滤太狠,模型反而不认识"什么是有害的",导致后续做安全对齐时更难——所以主流做法是"预训练适度过滤 + 对齐阶段专门教"。
- ⑥ 隐私脱敏(PII)用正则和命名实体识别扫出邮箱、电话、身份证号、信用卡号、API 密钥并替换成占位符。GitHub 语料尤其危险——The Stack 团队在扫描时发现了大量被开发者误提交的真实密钥。欧盟 GDPR 和中国《个人信息保护法》都让这一步从"最好做"变成了"必须做"。
- ⑦ 评测污染检测(Decontamination)最容易被忽略、也最影响榜单可信度的一关。把 MMLU、GSM8K、HumanEval 等评测集的题目做成 n-gram 指纹,在训练语料里扫一遍,命中就删掉整篇文档。不做这一步,你的模型跑分会虚高好几个点,而你自己都不知道。
七道关卡跑完,还有第八件事:打包成 shard。把 token 序列切成固定长度(如 8192)的样本,压成几 GB 一个的分片文件,配好索引,让上千台机器能并行随机读取而不打架。这不是学术工作,纯是工程活,但如果数据加载器成了瓶颈,几万张 GPU 就会在那儿干等——一个前沿实验室的数据团队规模常常和模型团队相当。
四、去重:为什么它是清洗里最要命的一步
如果只能做一件清洗工作,选去重。2021 年 Google 的《Deduplicating Training Data Makes Language Models Better》给出了很硬的结论:C4 数据集里有超过 3% 的 token 是重复片段;去重之后,模型逐字复述训练数据的概率下降了 10 倍,而困惑度反而更低。也就是说去重不仅让模型更安全(少背原文),还让它更强。
为什么重复这么有害?回到最根本的机制:训练目标是"最小化预测误差"。如果一段文本出现了 1000 次,模型最省力的策略就是把它逐字背下来——这样在这 1000 个样本上损失都极低。而背诵占用的参数容量,本来可以用来学规律。重复数据把模型从"总结规律的学生"变成"押题背原文的考生"——考过了,但没学会。
想象一本 500 页的习题册,装订出了故障:第 37 页被重复印了 200 次。一个笨学生会怎样?他把第 37 页那几道题背得滚瓜烂熟,闭着眼都能写出答案,代价是其他 463 页只草草过了一遍。考试时凡是第 37 页的题满分,其他一律不会。
更糟的是,他会形成一种错误的世界观——"这类题最重要,因为它出现得最多"。这正是重复数据对模型的双重伤害:既浪费了参数容量,又扭曲了它对"什么是常见的"的判断。所以去重的本质不是省存储,而是纠正数据的概率分布。
工程上怎么做?精确去重很简单,算每篇文档的 SHA-256 扔进哈希表即可。难的是近似去重——两篇文章只改了标题和几个词,哈希完全不同但内容雷同(新闻转载、内容农场洗稿就是这样)。标准解法是 MinHash + LSH:把文档切成 13-gram 集合,用一组哈希函数取最小值得到指纹,指纹相近的分到同一个桶里再精细比对。这样能把 O(n²) 的两两比较降到近似线性。
# MinHash 近似去重的核心思路(伪代码)
def signature(doc, num_hashes=128):
grams = {" ".join(w) for w in ngrams(tokenize(doc), 13)}
# 对每个哈希函数,取所有 n-gram 哈希值里的最小值
return [min(h_i(g) for g in grams) for h_i in HASHES]
# 两篇文档签名的相同位数比例 ≈ 它们 n-gram 集合的 Jaccard 相似度
def jaccard_est(sig_a, sig_b):
return sum(a == b for a, b in zip(sig_a, sig_b)) / len(sig_a)
# LSH 分桶:签名切成 b 段,任意一段相同即视为候选对
for doc in corpus:
sig = signature(doc)
for band in split(sig, b=16):
buckets[hash(band)].append(doc.id) # 同桶才两两比对
# 相似度 > 0.8 视为重复,保留其中一篇
还有一个尺度问题值得知道:去重要在什么范围内做?FineWeb 团队发现了一个反直觉的结果——如果对 Common Crawl 全部 90 多个快照做全局去重,效果反而比只在每个快照内部去重更差。原因是全局去重会把"在多个年份都反复出现的内容"删得只剩一份,而这类内容往往正是高质量的经典文本;而只在快照内去重,保留了这种跨年份的自然重复,等于隐式地给优质内容加了权重。这说明"去重"不是越彻底越好,它是一个需要调的参数,而不是一个开关。
五、数据配比与课程学习:先读什么后读什么
假设你已经有了干净的网页、代码、书籍、数学、多语言五大桶,接下来的问题是:各占多少?按什么顺序喂?这就是数据配比(data mixture),是各家最不愿意公开的核心机密之一——因为它几乎不需要新算法,纯靠实验砸出来,属于典型的"知道了就能抄"。
配比怎么定?主流做法是小模型代理实验:用一个 1B 左右的小模型,固定算力预算,跑几十个不同配比的组合,看谁的下游评测最好,再把胜出的配比放大到大模型上。Google 2023 年的 DoReMi 方法更进一步,用一个小模型自动学出各领域的最优权重,据报道能在相同算力下让训练加速 2.6 倍。
更有意思的是课程学习(curriculum learning)——不仅要定比例,还要定顺序。人类教育天然是有课程的:先学加减乘除再学微积分,先认字再读小说。大模型训练也开始借用这个思路,典型做法是退火(annealing):训练的绝大部分时间用普通配比,但在最后 5%-10% 的步数里,把学习率降下来同时大幅提高高质量数据的比例——教科书、精选代码、数学题、人工撰写的高质量文本。Llama 3 的技术报告明确提到用这种退火策略,并指出它在数学与代码基准上带来了可观提升。
| 训练阶段 | 占总步数 | 数据侧重 | 类比 |
|---|---|---|---|
| 早期 | 0-10% | 普通网页为主,先建立基本语言能力 | 幼儿识字、听大人说话 |
| 中期 | 10-90% | 标准配比大规模灌输,覆盖长尾知识 | 小学到高中的正常课程 |
| 退火期 | 最后 5-10% | 高质量教科书、精选代码、数学题,学习率衰减到接近 0 | 高考前的最后一轮精讲错题 |
| 长上下文扩展 | 额外少量步数 | 专门喂超长文档,把窗口从 8K 扩到 128K | 从读短文过渡到读整本书 |
"教科书就是你需要的一切"(Textbooks Are All You Need)是微软 2023 年 Phi 系列论文的标题,也是这条路线最激进的表达。Phi-1 只用了 70 亿 token 的"教科书级"数据(大部分由 GPT-3.5 合成)训练一个 13 亿参数的模型,在 HumanEval 编程基准上却打败了用几千亿 token 训练的更大模型。这个结果动摇了"数据越多越好"的信条——在某些能力维度上,数据的"教学质量"比数量重要得多。
训练 AI 就像做米其林菜。同样一位大厨(模型架构),给他一堆烂菜叶子(脏数据),做出来是黑暗料理;给他新鲜有机食材(干净数据),做出来是艺术品。数据清洗工程师,是大模型时代真正的"选菜师"——工资高、活儿累、成果隐形,但决定了最终的味道。
六、多样性(Diversity):偏科的模型没未来
规模够、质量高,还不够——数据的分布也很重要。如果 90% 的数据都是英文新闻,那模型的中文能力会很差;如果全是维基百科式的严肃说明文,那模型写诗、聊天、编代码就会显得很生硬。所以数据配比是一门玄学:Llama 3 论文里透露,代码数据占比约 17%、数学数据占比约 6%、多语言占比约 8%——每一份的多少,都是团队反复实验调出来的。
多样性还体现在领域覆盖上。现代大模型的数据一般包含:网页(Common Crawl)、书籍(图书馆扫描)、代码(GitHub)、学术论文(arXiv、PubMed)、对话(Reddit、论坛)、维基类知识库、多语言语料——每一类给模型带来不同的能力。代码数据尤其重要——研究发现,加入代码语料后,模型的逻辑推理能力会显著上升,即使问题本身跟代码无关。
多样性缺失的后果不是"某项能力差一点",而是一种系统性偏斜。互联网文本本身就是有偏的样本:英语使用者占全球人口不到 20%,但英文内容占互联网文本的 50% 以上;维基百科的编辑者中男性占绝大多数;Reddit 的用户画像明显偏年轻男性技术人群。这些偏斜会一比一地进入模型的世界观——它对西方中产的生活细节了如指掌,对撒哈拉以南非洲的日常一知半解,不是因为它有歧视,而是因为它读到的样本就是这个分布。
低资源语言的问题更尖锐。全球有 7000 多种语言,但训练语料里有实质覆盖的不超过 100 种。对于斯瓦希里语、藏语、维吾尔语这类语言,模型往往只见过几百万 token——这个量级连语法都学不全。"AI 的语言公平"不是价值观口号,它首先是一个数据供给问题:没有语料,就没有能力,无论模型多大。
七、训练集 / 验证集 / 测试集:为什么要一分为三
这三份东西说白了就是:平时的练习题、月考的模拟卷、正式的高考。练习题可以反复做,模拟卷偶尔拿来测测水平顺便调整复习策略,而高考只考一次、考完就作废。
为什么绝不能混?想象一下一个学生拿去年的考试原题当模拟卷刷了三十遍,然后真考的时候正好碰上原题——他考了 148 分。这个分数唯一说明的事情是"他背下了这套题",跟他会不会做数学没有半点关系。这就是为什么"用训练数据评估模型"这件事在业内被视为一条硬红线。
而验证集为什么也得单独留一份?这一点更微妙。你每次拿模拟卷测完就回去调整复习方法,调了几十轮之后,你的复习方法其实已经是"专门为这套模拟卷量身定制"的了——哪怕你一道题都没背,你的复习策略也已经悄悄地过拟合了这套卷子。所以最后那一场必须用一套你从头到尾没碰过的题。
手上有 1000 万条数据,绝不能全拿来训练——必须切成三份:
- 训练集 Training Set约 90-98%,模型每天"上课"用的教材,直接用来调整权重。
- 验证集 Validation Set约 1-5%,模型看不到但工程师看得到——用来调超参数、判断"要不要停止训练"。类似月考。
- 测试集 Test Set约 1-5%,训练完成后只用一次——评估最终能力。类似真正的高考。
为什么要严格分开?因为如果模型"提前看过高考题",考出的分就没意义了——这叫数据泄漏(data leakage),是机器学习里最忌讳的错误。想象一下:如果一个学生的期末考试题目他早就练过 100 遍,那 100 分不能证明他真的学会了。
在大模型时代,这个古老的原则遇到了一个新麻烦:测试集也在互联网上。MMLU、GSM8K、HumanEval、MATH 这些评测集全都公开发布在 GitHub 和论文附录里,而你的训练数据是"整个互联网"——除非专门做污染检测,否则它们几乎必然被爬进来。这就是所谓基准污染(benchmark contamination),它是今天读任何模型排行榜时都必须打的折扣。
污染的形式还分几档,从明显到隐蔽:
| 污染类型 | 表现 | 后果 | 能否检测 |
|---|---|---|---|
| 原题泄漏 | 训练集里有一字不差的题目和答案 | 跑分虚高,可能高十几个点 | n-gram 匹配可查 |
| 改写泄漏 | 题目被换过数字或措辞后进了语料 | 跑分虚高,难以定量 | 难,需语义相似度检索 |
| 题解泄漏 | 原题没进来,但网上的详细题解进来了 | 模型背了解法而非会解题 | 非常难 |
| 过拟合基准 | 团队反复在同一榜单上调参 | 榜单外泛化能力不匹配 | 只能靠私有测试集验证 |
有一个很有说服力的检验方法叫 GSM1K:2024 年有研究团队完全按 GSM8K 的题型和难度重新人工出了 1250 道全新小学数学题,从没在互联网上出现过。结果部分模型在新题上的准确率比在 GSM8K 上掉了最多 13 个百分点,而另一些模型几乎没有下降。这个差值,就是"背题"和"会做题"之间的距离。
所以对使用者的实用建议只有一条:建立你自己的私有测试集。二三十道来自你真实业务的题目,永远不上传到公网,每次换模型就跑一遍人工比对。它比任何公开榜单都更能说明"这个模型在你的场景里到底行不行"。
八、数据标注(Annotation):人工在幕后
标注(Annotation,人工给数据配上正确答案)这件事干的活儿相当于老师批作业。学生自己做完一百道题,如果没人告诉他哪道错了、正确答案是什么,他做一万道也不会进步。而机器比学生更笨——它连"这题我可能做错了"的直觉都没有,全靠人给的答案。
这一行有个数字很值得翻译成人话:让 ChatGPT 从"能说话"变成"会好好说话"的那个关键环节,靠的是几万条人工写的示范答案和几十万条人工排序的偏好比较——每一条都是活人一个字一个字敲出来、一对一对比较出来的。好比一位老教师批了几十万本作业,在每一本上写下"这样答更好、那样答不妥"。那些看起来最"聪明"的模型能力,底下压着的是极其笨重的人工。
预训练用的是海量无标签文本,但到了 SFT 和 RLHF 阶段(下一章讲),就需要人工标注了——需要真人写出"好的回答",或者对两个回答做偏好选择。OpenAI、Anthropic、Meta 都雇佣了成千上万的标注员,其中很多是博士、律师、医生——因为要标注专业问题的高质量答案,必须请专业人士。
标注是数据金字塔的顶端:数量最少(可能只有几万到几十万条),单价最高(一条好答案可能要 10 美元),但对模型效果的影响巨大。业界普遍认为,从 GPT-3.5 到 GPT-4 的飞跃,一半在于预训练规模,另一半就在于对齐数据的质量。
这条金字塔已经长成了一个真实的产业。Scale AI 在 2024 年的估值达到 138 亿美元,客户名单里有 OpenAI、Meta、微软和美国国防部;Surge AI、Appen、Labelbox 各自占据不同细分。而它们的实际劳动力,大量分布在肯尼亚、菲律宾、印度、委内瑞拉。2023 年《时代》周刊的一篇调查报道揭露:OpenAI 曾通过外包商雇佣肯尼亚工人为内容安全分类做标注,时薪约 1.32 到 2 美元,工作内容是长时间阅读并归类极端暴力与性侵材料,多名工人报告了心理创伤。
这是"AI 自动化"叙事底下最容易被隐去的一层:模型的"无害"是有人在替它先看过那些有害内容换来的。了解这一点,不是为了道德姿态,而是因为它解释了两个现实现象——为什么高质量对齐数据这么贵,以及为什么各家都在拼命用 AI 替代人工标注(下面讲的 RLAIF 和合成数据都源于此)。
标注质量本身也是一门工程。一条产业级标注流水线通常包含:写标注规范(往往几十页,OpenAI 的 InstructGPT 标注手册就有大量细则)、标注员考试筛选(通过率常常不到 20%)、多人重复标注、算标注员间一致性(Cohen's Kappa 或 Krippendorff's Alpha)、专家仲裁分歧样本、抽检返工。如果一致性低于某个阈值,说明规范本身有歧义,要回去改规范而不是骂标注员。
九、常见公开数据集速览
| 数据集 | 规模 | 用途 |
|---|---|---|
| Common Crawl | PB 级网页 | 预训练主力 |
| C4 / RefinedWeb | 数百 GB 清洗后网页 | Google/Falcon 用 |
| The Pile | 825 GB 多领域文本 | 开源预训练 |
| RedPajama | 30T token | Llama 类模型 |
| Wikipedia | 各语言 GB 级 | 知识来源 |
| GitHub / The Stack | 数 TB 代码 | 代码能力 |
| ImageNet | 1400 万张图片 | 视觉基准 |
| LAION-5B | 50 亿图文对 | Stable Diffusion 训练 |
| MMLU | 1.6 万道题 | 学科能力评测 |
| HumanEval | 164 道编程题 | 代码能力评测 |
这张表里有三个开源数据集值得单独说说,因为它们代表了"公开语料"演进的三个世代,也是任何人今天想自己训模型的现实起点:
- The Pile(2020,EleutherAI)第一代标杆。825 GB,由 22 个精心挑选的子集拼成——arXiv、PubMed Central、GitHub、Stack Exchange、美国专利、YouTube 字幕、欧洲议会会议记录、甚至安然公司的邮件档案。它的历史意义在于第一次证明"精心配比的多领域语料"比纯网页更好用,也第一次让小团队能复现类 GPT-3 的训练。缺点是其中的 Books3 子集含有大量盗版电子书,2023 年因版权诉讼被下架。
- RedPajama(2023,Together AI)第二代,目标是"复刻 Llama 的训练配方"。v1 严格按 Llama 论文的七个来源和比例重建了 1.2 万亿 token;v2 更进一步放到 30 万亿 token,覆盖五种语言,并且不预先过滤,而是把 40 多种质量信号(困惑度、重复率、语言置信度等)作为元数据一并发布,让下游用户自己决定怎么筛。这个"给你原料和体检报告,你自己配药"的思路很聪明。
- FineWeb / FineWeb-Edu(2024,HuggingFace)第三代,也是目前公开语料的最佳实践。FineWeb 从 96 个 Common Crawl 快照提炼出 15 万亿 token 英文数据,团队公开了完整的消融实验——每一条过滤规则带来多少收益,都有对照曲线。更值得注意的是 FineWeb-Edu:他们用 Llama-3-70B 给 50 万篇文档打"教育价值"分(0-5 分),拿这些标注训了一个小分类器,再用它筛出 1.3 万亿 token 的"高教育价值"子集。结果:用 FineWeb-Edu 训练的模型,在 MMLU 和 ARC 上的表现远超用 10 倍数据量的原始 FineWeb——这是"质量胜过数量"最干净的一次实验证明。
顺便提醒一个法律层面的现实:这些数据集的"公开"不等于"可自由商用"。2023 年之后,纽约时报诉 OpenAI、Getty Images 诉 Stability AI、多位作家集体诉讼 Meta(涉及 Books3)等案件相继展开,核心争议是"用受版权保护的作品训练模型是否构成合理使用"。目前各国判例尚未定型,但已经产生了实质影响:多家公司开始花钱买授权语料(OpenAI 与 Axel Springer、News Corp、Reddit 签约,据报道年费数千万美元级),Adobe 则主打"只用自有素材训练"作为卖点。数据的下一个瓶颈,可能不是技术,而是律师。
十、数据枯竭危机与合成数据崛起
先把"数据枯竭"这件事换成大白话:好比一家饭馆生意越做越大,把方圆几十里的菜市场全买空了——不是它不肯出钱,是地里长出来的菜就这么多。互联网上"人写的、还能用的"文字,已经被这个行业基本吃了一遍。
那"合成数据"是什么?说白了就是让模型自己出题给自己做。好比一位老教师发现市面上的习题册都刷完了,于是自己动笔编题给学生练。编得好,这是好事——他能针对学生的弱项精准出题,比市面题册有用得多。
但这里藏着一个很实在的风险,它有个专门的名字叫"模型崩塌"。好比一份文件被反复复印:复印件再复印,再复印,印到第八代,字迹已经糊成一团墨点了。因为每一代都会把上一代的细微瑕疵放大,同时把那些罕见的、边缘的笔画彻底丢掉。模型用自己生成的数据训练自己,会经历同样的过程——越往后越"平庸",那些冷门但正确的知识先消失。
所以业内的共识是:合成数据不能当主食,只能当调味。真正有效的用法是"用强模型给弱模型出题",而且必须掺进足够比例的真人写的内容,还得有人工或程序把明显错误的题挑掉。好比老教师自己编的题得先请同行审一遍,而且课本还是得用正规出版的那一本。
2024 年之后,一个明显趋势是合成数据(synthetic data)比重上升。真人写的高质量文本毕竟有限,而已有的强模型(如 GPT-4)可以"产出"大量高质量文本,再用来训练下一代模型——Phi-3、Llama 3.1、DeepSeek-V3 都大量使用了合成数据。这有点像"武学门派的秘籍能自动生成新的招式",也带来一个哲学问题:当模型开始靠自己产生的数据训练自己,进步会不会有天花板?这是接下来几年 AI 领域最有趣的问题之一。
先把危机说清楚。Epoch AI 在 2022 年和 2024 年两次测算,给出的核心结论是:互联网上可用的高质量公开文本存量约为 3 亿亿(3×10¹⁴)token 量级,而按当前每代模型消耗量的增长速度,这个存量大约会在 2026 到 2032 年间被完全用掉。注意这不是"没有文本了"——垃圾文本无穷无尽——而是"没有新的高质量文本了"。就像地球上的石油:不是没有碳,是没有便宜的碳。
面对枯竭,行业有四条出路,各有代价:
| 出路 | 做法 | 已有案例 | 主要风险 |
|---|---|---|---|
| 买私域数据 | 付费获取新闻库、出版社、论坛、企业档案 | OpenAI 与 News Corp、Reddit 签约 | 成本高、总量仍然有限 |
| 转向多模态 | 把视频、音频、图像转成训练信号 | YouTube 字幕、播客转写 | 处理成本高、版权更复杂 |
| 重复训练 | 同一份数据训练多个 epoch | 研究显示重复 4 遍内损失几乎不变,超过 16 遍收益趋零 | 过拟合、记忆化 |
| 合成数据 | 用强模型生成新的训练文本 | Phi 系列、Llama 3.1、DeepSeek-R1 蒸馏数据 | 模型崩溃、误差累积 |
合成数据到底怎么"合成"?它不是让模型随便写一堆文章那么简单。有效的做法都是把某种外部信号注入生成过程,让合成数据带有原始语料里没有的信息:
# 合成数据的四种典型套路
# ① 改写重述(rephrase)——同一知识换多种说法,提高信息密度
原文: 一段晦涩的百科条目
生成: "用小学生能懂的话解释一遍" / "写成问答形式" / "写成故事"
# ② 教科书生成(textbook)——Phi 系列的核心做法
给定 (主题, 目标读者, 难度) 三元组 → 生成一段带例题的讲解
关键: 用主题库保证多样性,避免生成几万篇雷同文章
# ③ 拒绝采样 + 可验证信号(rejection sampling)
for 数学题 in 题库:
候选 = 模型生成 64 条解法
保留 = [s for s in 候选 if 最终答案 == 标准答案] # ← 外部验证器
写入训练集(保留中最短的那条)
# 代码同理: 用单元测试当验证器,跑通才留
# ④ 蒸馏(distillation)——把强模型的能力搬到小模型
强模型对 10 万道题输出完整思维链 → 小模型做 SFT
DeepSeek-R1 就用这招把推理能力蒸馏进了 1.5B-70B 的小模型
注意第三种套路里那个外部验证器——这是区分"有效合成"和"自娱自乐"的关键。数学题有标准答案,代码有单元测试,逻辑题有形式化检查。只要存在一个模型之外的判据,合成数据就在往系统里注入真实信息,而不只是把已有信息搅一遍。这也解释了为什么合成数据在数学和代码上效果惊人,在"写出优美散文"这类没有客观判据的任务上就没那么灵。
反面案例同样重要。2024 年 7 月《自然》封面刊登了一篇论文,正式命名了模型崩溃(model collapse)现象:如果反复用上一代模型生成的数据训练下一代,不加任何真实数据,那么分布的尾部会一代一代消失——罕见的表达、少见的观点、长尾的事实逐渐被抹平,最后模型只会输出高度同质化的平均值文本。论文里那个著名的实验:从一段关于英国教堂建筑的维基文本出发,迭代九代之后,模型开始满嘴胡言乱语地讨论各种颜色的野兔。
拿一张照片去复印,复印件再去复印,如此重复二十次——最后你手上是一团灰。每一次复印都会丢一点细节、加一点噪点,误差是累积的而不是抵消的。用纯合成数据训练下一代模型,就是在复印复印件。
那怎么避免?答案很朴素:每一代都必须掺入足够比例的真实数据。论文的后续研究表明,只要真实数据保持一定占比,累积效应就能被压住。这也是为什么各家一边大规模用合成数据,一边还在花几千万美元买真实语料——合成数据是放大器,不是原料。你要放大的那个信号,必须是真的。
数据是 AI 的教材。规模决定见识、质量决定品味、多样性决定通才。训练集用来学、验证集用来调、测试集用来考——一分为三是铁律。到了对齐阶段,人工标注的每一条数据都价值千金。别再迷信"模型越大越强",真正的秘密在于——你喂给它的是什么。
十条要点收束这一节:(1) 规模从 GPT-3 的 3000 亿 token 涨到 Llama 3 的 15 万亿,五年放大 50 倍,相当于一个人不眠不休读 47 万年;(2) 训练集有配料表,GPT-3 里维基百科只占 3% 采样量却被读了 3.4 遍——高质量语料值得重复读;(3) 清洗是七道关卡:正文抽取、语言识别、启发式过滤、去重、去毒、隐私脱敏、污染检测,存活率常常只有百分之几;(4) 去重是收益最大的一步,Google 的实验显示去重后逐字复述概率降 10 倍而困惑度更低,因为重复数据会把模型从"总结规律"逼成"背原文";(5) 配比靠小模型代理实验砸出来,而退火——最后 5-10% 步数集中喂高质量数据——已成标准操作;(6) 多样性缺失会一比一变成模型的世界观偏斜,低资源语言的问题本质是语料供给;(7) 三集分离在大模型时代遇上了基准污染,GSM1K 实验里有模型掉了 13 个点——那个差值就是"背题"和"会做题"的距离;(8) 标注已成产业,Scale AI 估值 138 亿美元,而底层是时薪 2 美元的肯尼亚工人在替模型先看有害内容;(9) FineWeb-Edu 用 1.3 万亿精选 token 打败 10 倍量的原始数据,是"质量胜过数量"最干净的证明;(10) 高质量数据可能在 2026-2032 年间耗尽,合成数据是唯一可规模化的出路,但《自然》那篇模型崩溃论文提醒我们:合成数据是放大器不是原料,你要放大的那个信号必须是真的。