4.4 性能记录与基准


4.4 性能记录与基准

本节摘要:没有基准,就没有"更好"。本节讲清基准的意义(对比的参照系)、常用指标(损失、困惑度、生成质量)、记录方法(实验表),以及"用损失当主要指标、生成质量当辅助判断"的评估习惯。

本节导读

阅读完本节,你应当能够:

  1. 解释基准的作用
  2. 说出常用评估指标
  3. 理解困惑度
  4. 建立实验记录习惯
  5. 综合评估模型效果

一、问题与直觉

"这个模型到底好不好?"——没有参照就没法回答。基准就是参照系:与论文值比、与基线比、与上次实验比。NanoGPT 场景里,主要指标是损失(训练与验证),辅助判断是生成质量——两者结合,才能全面评估。

一个常见误区是只盯着"生成出来像不像人话"做判断。生成质量当然重要,但它方差大、主观强,不能作为唯一标准;损失则客观、可复现,适合做横纵对比。

二、核心原理

2.1 基准的意义

2.2 两个主要指标

指标 含义 用途
损失 预测误差 训练监控、对比
困惑度 损失的指数化 更直观的语言质量

困惑度是损失的指数(exp(loss))——困惑度越低,模型"预测下一个词"越准,语言越自然。

💡 关键直觉:损失是"体检报告",生成是"实际表现"。损失对不上论文值,模型可能有问题;损失接近但生成乱,可能数据问题——两者结合看,判断才完整。

2.3 损失与困惑度的换算

import math # 常见验证损失对应的困惑度 for loss in [4.17, 3.1, 2.0, 1.5]: ppl = math.exp(loss) print(f"loss {loss} -> perplexity {ppl:.1f}") # loss 4.17 -> 64.8(均匀乱猜) # loss 3.1 -> 22.2(GPT-2 124M 水平) # loss 2.0 -> 7.4 (小模型莎士比亚水平) # loss 1.5 -> 4.5 (相当好的小模型)

困惑度可以这样理解:模型对下一个词的"候选池"大小。困惑度 22 意味着平均要猜 22 个候选;降到 7 就是平均猜 7 个——数字越小,模型越有把握。

三、工程实践要点

3.1 评估步骤

第一步 记训练损失:训练是否收敛 第二步 记验证损失:是否过拟合 第三步 跑生成:人工看质量 第四步 对比基准:是否达标/进步

3.2 自动评估的命令

# 评估验证集损失(复用 train.py 的评估逻辑) python train.py config/train_shakespeare.py --init_from=resume --eval_only=True # 生成多份样本人为评估 python sample.py --out_dir=out-shakespeare --num_samples=5 --max_new_tokens=200

NanoGPT 没有单独的 eval 脚本,评估靠 train.py 的 --eval_only 和 sample.py 的批量生成。手动跑一遍这两条命令,就完成了"损失 + 生成"的双重评估。

3.3 实验记录表

日期 实验 验证损失 困惑度 生成观察 结论
8-01 基线 3.8 45 通顺 起点
8-02 大学习率 3.5 33 更好 保留

⚠️ 常见坑:只记损失不记生成观察。损失只反映"预测准度",生成质量(连贯、自然、主题)需要人看——记录里一定要留"生成观察"一栏。

3.4 评估的频率

训练中:定期记录损失曲线 训练后:完整评估(损失 + 生成) 对比时:同条件重跑基线

3.5 损失曲线怎么读

曲线单调下降后趋平:正常收敛 曲线震荡剧烈:学习率偏大或批次太小 训练降验证升:过拟合,应早停或加正则 曲线不降:数据或配置有问题

把每次实验的损失曲线画在一起(横轴训练步数、纵轴验证损失),是判断"哪个优化有效"最直观的方式。曲线整体更低的那条,就是更好的配置。

3.6 综合评估清单

  • 训练损失:收敛到合理范围?
  • 验证损失:与训练接近(无过拟合)?
  • 困惑度:数值合理?
  • 生成质量:通顺、有主题、符合数据风格?
  • 与基线对比:有进步?

3.7 困惑度的直观解释

困惑度可以理解为"模型对下一个词的候选池大小"。几个参考点能帮你建立直觉:

困惑度 65:均匀乱猜 65 个字符(训练前的莎士比亚模型) 困惑度 22:GPT-2 124M 在 OpenWebText 的水平 困惑度 7:小模型在莎士比亚数据上训好的水平 困惑度 1:完美预测(现实中不可能)

注意困惑度高度依赖数据集:同一个模型在不同数据上的困惑度不能直接比。对比实验务必保证"同一验证集",否则结论无意义。

3.8 评估的可复现性

评估结果要能复现,需固定三样东西:随机种子、验证集、采样参数。NanoGPT 在训练脚本里固定了 seed,评估时也建议固定:

python train.py config/train_shakespeare.py --init_from=resume --eval_only=True

如果不固定种子,两次评估的验证损失会有小差异,优化实验的"0.01 提升"就可能只是噪声。科学评估的第一步,是让数字可复现。

本节速览

  • 要点一:基准 = 参照系——论文值、基线、历次实验
  • 要点二:主要指标——损失与困惑度
  • 要点三:困惑度是损失的指数化,越低越自然
  • 要点四:损失是体检,生成是表现,结合看
  • 要点五:实验记录要有"生成观察"栏
  • 要点六:综合评估五问,结论才可靠

性能四节完结。第 5 章看更远——生态、资源与演进方向。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U