跳到主要内容
这篇讲 AI 训练数据的,标题跟内容对不上

这篇讲 AI 训练数据的,标题跟内容对不上

书签客
书签客

· 阅读约 5 分钟

这条是 dev.to 上 Fonyuy Gita 写的,四章系列第一章,标题叫 Before We Train——配套代码在 GitHub 的 iws3/before-we-train 仓库。我说"标题跟内容对不上"是认真的。我读到第六节才确认值得推,前面那些"训练电费"和"标注工"的账,可以跳过。

第一二节上来先算 Llama 3.1 训练电费:16384 块 H100 跑 78 天,3084 万 GPU 小时,折合 2160 万千瓦时,够 2000 户普通家庭用一年,碳排放 8930 吨,相当于 1900 辆汽车。这堆数字我读到的时候没什么感觉。不是不触目惊心,是训练碳排放在大模型爆火之后被写烂了,而且跟文章后面真正压秤的东西没关系。还有肯尼亚标注工时薪 1.5 美元那一整段,全是别人报道过的,作者只是把新闻拼了一遍。跳过不影响理解。

到第六节开始变味,是那个 "the cat sat / the cat ran / the dog sat" 的例子。作者往干净语料里掺了三句 "the free prize",然后算 P(free|the),从 0 直接蹦到 0.5。就这一个例子把数据污染讲透了:不是模型学坏了,是数据分布本身被污染了,模型诚实地学会了一个坏分布。

这条能留住我,是因为作者往下又走了一步,给出了惩罚的精确形式——这个我在别处很少看到。设数据里 spam 比例是 ε,完美模型在干净文本上的困惑度会乘 1/(1-ε)。10% 的垃圾对应约 1.111 倍困惑度。他还自己跑了字符级实验:干净训练集留出损失 2.4838,掺 spam 后 2.6550,差距 0.1712 nats,反推有效 spam 比例约 16%——掺进去 10% 但有效污染是 16%,多出来的部分来自 spam 的简单模式被过拟合了。

顺手跑了一下困惑度的公式。他给的那个例子:四个 token 概率 0.5、0.25、0.1、0.8,损失算出来 1.1513,困惑度 e^1.1513 ≈ 3.16。

import math
ps = [0.5, 0.25, 0.1, 0.8]
loss = -sum(math.log(p) for p in ps) / len(ps)
ppl = math.exp(loss)
print(loss, ppl)  # 1.1513, 3.1623

跑通了。没啥技术含量,但困惑度的几何平均直觉我是这次才真正记住:3.16 意味着模型平均面对约三个候选在犹豫。这个数字不抽象,比单看损失更直觉。

读到 softmax 梯度那节我停下来了。他推的是 ∂ℓ/∂z_i = p_i − 1[i=y],拿 logits (2,1,0)、真实 token 是 3 举例,softmax 后三个概率约 0.665、0.245、0.090,梯度就是 +0.665、+0.245、−0.910,加起来正好是零。对同一上下文求平均之后,梯度等于模型分布减数据分布,只有当模型分布完全等于数据分布时梯度才为零。

推导本身不新鲜,但作者点破的那句话值得当结论。原话大意是:

训练永远只能逼近数据集的经验分布,不能超越数据质量。你有一个垃圾占比 ε 的数据集,最优模型不是"大部分时候对",而是"在干净文本上固定亏 1/(1-ε) 的困惑度,在垃圾上同样自信地错"。

缺陷数据集产出的不是缺陷模型,是自信的缺陷模型。这个差别重要。

有一条没跑通,挂在最后。他推荐的初始损失检查,说是随机模型在词表 V 下的交叉熵应该接近 ln V,给了 Llama 2(V=32000)约 10.37、GPT-2(V=50257)约 10.82、Llama 3(V=128256)约 11.76。我拿小词表 V=100 试,随机均匀分布算出来的损失确实是 ln 100 ≈ 4.6,这个没问题。但没想明白他为什么要把这个做成"管线检查"的固定步骤——随机初始化本来就在平均意义下有这个上限,测一次是为了抓什么?初始化没随机?还是数据量太小导致过拟合才偏离?他说得不够清楚。先记着,等后续章节。

Chinchilla 缩放律那段也值得扫一眼:L ≈ E + A/N^α + B/D^β,拟合常数抄的经典值。他估算 Llama 3 405B/15.6T 的损失约 1.82,数据项约 0.083,模型项约 0.046,数据项已经是模型项接近两倍。这是全篇唯一一个让我停下来想的"经济性"结论:强模型已经逼近数据瓶颈了,再堆参数边际收益很小,数据质量每提升一点,整条曲线往下平移。他还推了过度训练的事,生命周期内服务 token 超过 3D 之后推理成本反超训练成本。对 D=15T,阈值是 45 万亿 token——这个数字我没验证,但"推理长远看比训练贵"和前面碳排放那节的"训练贵"叙事放一块儿看挺割裂的。

这篇值得点开,但不建议从第一段读。直接跳到"数据污染"那节,看完二元组例子再看困惑度惩罚公式和实验。这三段合起来是我最近读到的关于"为什么数据质量从根上决定了上限"最具体的一版——它不跟你讲道理,直接让你看到概率表被污染之后模型能学到什么,以及那个最优解长什么样。前面那些电费和标注工,当背景看就好。

不点链接也能带走的一句:缺陷数据集产出的不是缺陷模型,是自信的缺陷模型。

作者在系列后续预告了数据清洗和实验比较,等出来了再看值不值得接着推。他这第一章 1200 行数学看下来,不算失望。但标题叫 Before We Train,读完的结论是:大部分内容在讲"训练会发生什么",真正该关心的"训练前你还能救什么",最后三节才刚沾到边。

书签客
书签客

只推真读过的、顺手跑个实验贴完整记录——link-blog 策展 + 实验笔记。

查看主页 →