评测与训练仪表:分数能信吗
主线定位
「小明把苹果给了小王」在 Qwen3.8-27B 里是 5 个 token。这句话走完了前十三章:切分、查表、位置、注意力、一个个块,最后在每个位置输出下一个 token 的概率。
点任一已学环节,看这一步的输入 → 输出形状、参数量,以及它解决了什么问题(数字取自 Qwen/Qwen3.8-27B 真实 config)。
它在这一章会以两种身份出现。训练开始的那一刻,每个位置的 loss 应当约等于 ln 248,320 = 12.42——训练曲线上第一个可以核对的读数。训练结束之后,它可以变成一道题:「小明把苹果给了小王。问:谁拿到了苹果?」——分数就是模型答对这类题的比例。一个是仪表,一个是分数,本章的问题是:这两类数字各该信几分。
上游 · 整条训练链:C0 第 5 课给了第一个读数「开局 loss ≈ ln V」;C5 的梯度裁剪与 Muon、C8 的 spike 与 logit 失控,留下了一堆「该盯什么」;C6 用小模型外推大模型;C7 的去重顺带给评测去了污染。C12 岔路的 pass@k、C13 第 4 课的量化涨幅,都是「拿一个数说好不好」:同一组采样,pass@1 = 0.30、pass@5 = 0.917,换个 k 结论就变;INT4 GPTQ 让验证 loss 涨 0.0083,要和本章实验课的重跑噪声(极差 0.016)比,才知道算不算掉了质量。这些数本身能信几分,正是本章的问题。
本章(C14):训练中看哪些仪表、训练后的分数能不能信、小实验的结论能不能推到大决策——以及读别人报告时,数字该信几分。
下游 · C15 前沿解剖:带着这套读法,去拆 2026 年的前沿技术报告。
仪表接在训练循环的哪几格,点开看它们在锚点模型上有多大:
这一章为什么换例子。仪表读的是整次训练的轨迹,分数读的是几百几千道题的比例,「小明把苹果给了小王」一句话撑不起来。所以每课开头用例句接上已有的东西,然后换成三个替身,每课都会写明原因:① 我们项目 04-实践项目 在各章真实跑过的 127 个 run(3.7M 参数、《三國志演義》语料);② 浏览器里现场训练的小模型(一个字级 4-gram 语言模型、七个做加法的 MLP);③ 逐字核对过的论文、技术报告与第三方评测。
本章问题链
每一课只回答一个问题;上一课的失败,逼出下一课的问题。
| 课 | 这一课的问题 | 朴素方案在哪个真数字上失败 | 一句话 |
|---|---|---|---|
| 第 1 课 | 训练跑着的时候,只看 loss 曲线够吗?该看哪些仪表? | 学习率调大 10 倍的 run:第 20 步 loss 比参照还低,最大注意力 logit 已是参照的 10.8 倍;400 步后差 1.19 | loss 是结果,仪表看状态:开局对 ln V,过程中盯裁剪前梯度范数和最大 logit,它们比 loss 更早报警,但要几块一起读 |
| 第 2 课 | 训练完,在公开 benchmark 上报一个分数——这个分数能信吗? | 公开题只泄进训练文本 1 份,续写全对从 0 / 30 升到 24 / 30,同分布新题仍是 0 / 30;GPT-3 的去污染程序有 bug | 公开基准的分数混着三样东西:能力、见没见过题、怎么考;n-gram 只查逐字重叠,新题对照、顺序检验和非公开题各补一块 |
| 岔路 | 技术报告和榜单上的数字,各该信几分? | — | 数字先分三层:第三方独立(最好含非公开题)、自跑但披露偏差、纯自报;再查口径;查不到的格子写「未核实」,不要填 |
| 第 3 课 | 大模型只训得起一次,小实验上得出的结论能信几分?「涌现」会让小实验全部失灵吗? | 只跑一个种子:RoPE 在 512 长度上「好」0.006;三个种子的均值反过来,不加位置好 0.0225 | 小实验能指导大决策,前提是信号大过噪声:多跑种子、用平滑指标做决策,再用两步预测换算回目标分数;「突然涌现」常常是全对才得分的尺子把平滑的进步量成了台阶 |
| 实验课 | 我们项目跑过的几十个 run,仪表上哪些「正常」、哪些「要出事」? | — | 仪表的阈值要拿自己的 run 校准:报警的 run 里有多少真的变坏,没报警的里有没有漏网;差距小于噪声底线,就不下结论 |
表里的项目数字由各课页面从 c08-stability.json、c14-eval.json、c2-position.json 现读;浏览器实验的数字是组件默认设置下的确定性结果(同一浏览器可复现)。
演进地图
- 解决了一个数就能看训练进度;PPL = eloss(C0 第 5 课)。卡在项目 run「只把学习率从 3×10⁻³ 调到 3×10⁻²」:第 20 步验证 loss 6.671,比参照的 6.683 还低;同一时刻最大注意力 logit 已是参照的 10.8 倍(25.7 对 2.38)。
- 解决了在 loss 变坏之前报警:OLMo 2 观察到剧烈的梯度范数尖峰常先于 loss 尖峰;改初始化后梯度范数的 spike score 从 0.40 降到 0.03。卡在训练完了,仪表回答不了「模型会不会做题」——要拿题来考。
- 解决了所有模型做同一套题,分数可以横向比。卡在同一个 LLaMA-65B,MMLU 的三种实现给出 0.637 / 0.488 / 0.636(HF 博客 2023);题目还会泄进训练数据。
- 解决了逐字重叠查得出来:GPT-3 对每个基准做「干净子集」重测,PIQA 29% 被标、干净子集低 3 个点。卡在GPT-3 的过滤程序有 bug,书一类长文档没滤掉,几个语言建模基准只能不报;改写、翻译能绕过逐字匹配(Yang 2023)。
- 解决了不看训练数据也能量出虚高:Yi-6B-Chat 在 GSM8K 上 43.7%,同风格新题 GSM1k 上 35.7%。卡在新题一公开,又会被下一代模型吃进去。
- 解决了只要能算 log 概率,就能给出假阳性率有保证的 p 值:重复 10 次的测试集,分片检验 p 到 1.96×10⁻¹¹。卡在只测「按原顺序、逐字」出现的污染;重复 1 次测不出(p = 0.099 / 0.485 / 0.544)。
- 解决了题目不公开,就无法被针对性优化:DeepSeek-V4 Pro 在公开的 GPQA-Diamond 上与 Opus 4.6 差 1 个点,在非公开的 PortBench 上差 16 个点。卡在分数本身有噪声;小模型上很多题根本测不准。
- 解决了判断一个差距是否超出噪声;DataDecide:150M 模型的排名预测 1B 模型排名约 80% 正确。卡在「全对才得分」的离散指标在小模型上贴地,排不出名次。
- 解决了>92% 的 BIG-Bench「涌现」出现在多选打分与完全匹配两种指标下;换成平滑指标,小模型上也有信号,再用 sigmoid 换算回准确率。卡在平滑指标不一定对应目标能力:Hu 2024 发现 PPL 与长文理解无相关。
三层交互
| 层 | 本章里的组件 | 在哪一课 |
|---|---|---|
| 概念动画 | 探针从哪个张量上取最大 logit(张量三区图);先猜再揭晓:只看「4 位全对」时的「涌现」,揭晓后四把尺子并排;先只看一个种子,再揭晓三个种子 | 第 1、3 课 |
| 算法模拟器(真算法、小数据) | spike score 规则在真实梯度范数序列上现算;逐字 n-gram 重叠扫描(真原文);交换性置换检验(99 次打乱现算 p 值);两比例 z 检验;信噪比与单种子误判概率;三层可信度分类练习;IRT Elo 换算胜算 | 第 1、2、3 课、岔路 |
| 真模型 / 真数据 | 我们项目全部 run 的仪表回放与体检表、5 次同配置重跑、C2 三种子实验;浏览器内现场训练的 4-gram 语言模型(泄题前后)与 7 个 MLP(涌现);NIST CAISI 的逐项分数 | 第 1、2、3 课、岔路、实验课 |
项目推进:给我们的训练装上仪表与噪声底线
对应 04-实践项目/MILESTONES.md 的「C14 评测与训练仪表」。分工照旧:代码 AI 来写,决策你来做。minillm/train.py 每 5 步记录裁剪前梯度范数的均值与最大值,每 20 步评估验证 loss;experiments/common.py 的探针在评估时额外记录最大注意力 logit 与输出 logit;experiments/exp_c14_eval.py 汇总 runs/ 下全部 run,并新跑 3 个与基线完全相同的 run 测噪声,导出 c14-eval.json。
你要拍板的三件事
- 记哪几块仪表、多久记一次?梯度范数每步都记还是每 5 步?探针要多做一次前向,多久做一次划算(第 1 课)?
- 报警阈值怎么定?开局 |loss − ln V| 超过多少、梯度范数峰值超过参照几倍、最大注意力 logit 超过多少算「要出事」——阈值必须用实验课的全部 run 校准,并公开它的误报与漏报(第 1 课、实验课)。
- 两个配置差多少才算「更好」?噪声底线以 5 次同配置重跑为准:目前标准差 0.0066、极差 0.0162(README 写的 0.003 只来自两次运行);差距与种子标准差同量级时,每边要几个种子(第 3 课)。
验收标准(全部可测):
c14-eval.json已生成(当前 2026-09-26,127 个 run);实验课体检表上写出自己的三条规则与阈值,给出「报警且结果坏 / 报警但结果正常 / 没报警结果却坏」三个计数。- 同配置重跑的均值、标准差、极差写进项目 README,替换「约 0.003」的旧说法。
- 用本章的方法重审 C2 实验课的一个结论:512 长度上 RoPE 与不加位置的差距是否超出噪声,需要每边几个种子(第 3 课的表)。
- 任选一个 run,说清它的四块仪表各在第几步报警、为什么 loss 最晚(第 1 课的回放)。
坑与带走
| 坑 | 症状 | 后果 | 怎么办 |
|---|---|---|---|
| 只看 loss 不看梯度范数与最大 logit | loss 一路平滑下降,最后却比参照差一大截 | 发现时已经训完了 | 同一时间轴上读四块仪表,和参照并排(第 1 课) |
| 把「梯度范数变小」当成「更稳了」 | 出事的 run 后期梯度范数反而比参照低 | 把 softmax 饱和、学不动当成稳定 | 梯度范数要和 logit、loss 一起读(第 1 课) |
| 开局对上 ln V 就以为初始化没问题 | 初始化 std 0.002 的 run 开局分毫不差,最后差 0.71 | 漏掉起步太慢 | 开局自检是必要条件,不是充分条件(第 1 课) |
| loss 好得离谱没起疑 | 去掉因果掩码的 run,验证 loss 只有 0.02 | 把「偷看答案」当成「学得好」 | 远低于该有的值,先查评估(C0 第 5 课、实验课) |
| 以为做过去污染就干净 | 报告写了去污染,分数仍虚高 | 高估能力 | 逐字匹配抓不住改写;加新题对照或顺序检验(第 2 课) |
| 同名 benchmark 直接比分 | 同一个模型在不同来源里差 10 个点 | 排名随口径翻转 | 先问几 shot、什么格式、怎么打分(第 2 课) |
| 差距小于噪声就下结论 | 单种子说 A 好,三个种子说 B 好 | 选错配置 | 先量噪声;差 ÷ 噪声 < 1 时多跑种子(第 3 课) |
| 在小模型上用 exact match 做决策 | 所有配置都是 0 分,排不出名次 | 以为只能硬上大模型 | 换连续指标(似然、错几位);在对数坐标上看(第 3 课) |
| 把官方自测当客观排名 | 发布当天的对比表全是自家领先 | 高估模型实力 | 分三层:第三方独立 / 自跑但披露偏差 / 纯自报(岔路) |
| 只看分数不看成本 | 选型时忽略性价比 | 为同样的分数多花几倍的钱 | 看「分数 ÷ 成本」的帕累托前沿,并确认成本口径(岔路) |
| 拿共用超参对比两种方法 | 得出「A 优于 B」 | 结论只是超参偏向的结果 | 各自调优再比(K3 比较 cosine 与 WSD 的做法;岔路) |
| 把 preview 版的数字当定论 | 引用的数字在正式版里变了 | 结论过期 | 引用带版本与日期(岔路) |
| 把理论 FLOPs 的倍数当实测加速 | 「快了 2.9 倍」 | 性能预期落空 | 分清估算与实测、整模型与单项(岔路) |
| 把「窗口 1M」当「有效 1M」 | 长文检索在生产环境翻车 | 高估长上下文能力 | 窗口看 config,有效长度看 NIAH / MRCR(C2 第 5 课、岔路) |
| 只比架构不比可信度 | 高估自报强的那一家 | 选型失误 | CAISI 案例:自报约等于 Opus 4.6,独立评测更接近 GPT-5(岔路) |
| 把 HF 合集页的参数徽章当真 | V4-Flash 显示 291B | 参数量对不上 | 以论文与模型卡为准(284B);753B 与 744B 是两种口径(岔路) |
这一章你应该带走的(各课「一句话」):
- loss 是结果,仪表看状态:开局对 ln V,过程中盯裁剪前梯度范数和最大 logit,它们比 loss 更早报警,但要几块一起读。
- 公开基准的分数混着三样东西:能力、见没见过题、怎么考;n-gram 只查逐字重叠,新题对照、顺序检验和非公开题各补一块。
- 数字先分三层:第三方独立(最好含非公开题)、自跑但披露偏差、纯自报;再查口径(版本、脚手架、日期、基线);查不到的格子写「未核实」,不要填。
- 小实验能指导大决策,前提是信号大过噪声:多跑种子、用平滑指标做决策,再用两步预测换算回目标分数;「突然涌现」常常是全对才得分的尺子把平滑的进步量成了台阶。
- 仪表的阈值要拿自己的 run 校准:报警的 run 里有多少真的变坏,没报警的里有没有漏网;差距小于噪声底线,就不下结论。
提问记录:这一章还没有真实提问。学习中有疑问,记到 05-问答记录/C14-L<课号>.md(岔路课是 C14-B1.md);有价值的问题会展开成新的岔路课。
深入这一章
每条都在 2026-09-26 实际打开核对过(网页用 curl 抽正文、视频用 oEmbed、论文用 arXiv API):写清它讲清了什么、对应哪一课、为什么推荐。
🎮 想更直观 10–30 分钟
🔬 想吃透原理 1–3 小时
📄 想读原文 按需
排除了什么(也是筛选标准):① 各类「榜单速报」与只贴分数截图的转载——不写版本、日期、评测设置,数字无法对上原处;② 只罗列 benchmark 名字、不讲怎么考的「评测大全」长文——读完知道了几十个名字,说不清任何一个分数该信几分;③ 把 Schaeffer 2023 写成「涌现被证伪」的标题党——原文的结论是「可能不是缩放的根本属性」;④ 把 Arena Elo 当精确排名、不写投票数与日期的榜单搬运——Elo 会随投票漂移;⑤ 旧版 M8 写作时没通过对抗验证、主动删掉的两个 Artificial Analysis 数字(见岔路课 Dig);⑥ 旧版课程的 LossChart「loss 诊断器」——用正弦噪声模拟 loss,不是真实训练动力学,本章实验课用项目真实 run 的仪表重做了「诊断」。