数据截至 (上游 commit 932e1f2f4c5a)
04 · 与训练管线的集成
这一章讲什么: lighteval 怎么嵌进训练工作流——训到一半的 checkpoint 直接评、分数写到训练曲线旁边;以及输出层(details、hash、离线重算、inspect-ai 新入口)。读完你能判断「训练中评测」适不适合照抄进自己的栈。
1. 它要解决的小问题
离线评测(训完再评)有两个痛点:
- 反馈太慢:训练几天后发现第 2 天就过拟合了,白费算力。
- 分数不在一处:评测分数在评测日志里,loss 曲线在 TensorBoard 里,对不齐步数。
HF 的做法是让评测器直接认识训练框架的产物:nanotron 的 checkpoint 目录里本来就有模型配置、分词器配置、并行配置——lighteval 读过来,原样重建模型并加载权重,评完把分数按 checkpoint 的训练步数写回 TensorBoard。
2. 直觉:checkpoint 即配置,评测即训练的一环
两个设计决定让这件事成立:
- nanotron checkpoint 的配置 YAML 就是模型定义。
main_nanotron入口(src/lighteval/main_nanotron.py:42-121)吃两个 YAML:checkpoint 自带的 config(模型结构/分词器/训练元信息)+ 一份 lighteval 专属配置(评哪些任务、推送到哪)。前者本来就躺在 checkpoint 旁边,训到哪存到哪。 LightEvalConfig设计为「可覆盖」。 它的 docstring 明说:所有字段可选,因为可以「训完后用新参数覆盖存下来的配置」(src/lighteval/models/nanotron/nanotron_model.py:133-144)。训练脚本里嵌一份默认评测配置,训中自动评、训后想换任务再手动评,共用同一条代码路径。
直觉一句话: