欠训练模型的正规基准测试 | AI生成和翻译
根据您的训练运行:验证损失值 3.29,训练数据量 6.3B 词元,迭代次数 12k —— 模型处于欠训练但状态正常。以下是合适的评估路径:
为何不建议使用 SimpleQA
SimpleQA 旨在测试事实性记忆,专为前沿模型(GPT-4 级别)设计。您 124M 参数且欠训练的模型将会获得接近 0% 的分数 —— 这并不具备参考价值。
适用于 GPT-2 124M 量级的评测基准
请使用 EleutherAI 的 lm-evaluation-harness —— 这是该模型类别的标准工具:
pip install lm-eval
随后在标准任务上运行零样本评估:
cd ~/projects/nanoGPT
lm_eval --model hf \
--model_args pretrained=gpt2 \
--tasks lambada_openai,hellaswag,piqa,winogrande,arc_easy \
--device cuda \
--batch_size 8
但您的模型采用 nanoGPT 格式(非 HuggingFace),您需要先执行以下任一操作:
方案 A — 转换为 HF 格式(编写一次性脚本将 nanoGPT 权重映射至 GPT2LMHeadModel)
方案 B — 编写自定义的 lm-eval 模型封装器(一个用于加载 ckpt.pt 并暴露 lm-eval 所需对数概率 API 的 Python 类)
方案 C — 直接在保留验证集上测量困惑度(最简便——您的验证损失 3.29 对应困惑度 ≈ 26.8)
GPT-2 124M 的参考性能数据
| 任务 | GPT-2 124M(完整训练后) |
|---|---|
| LAMBADA | ~45% |
| HellaSwag | ~31% |
| PIQA | ~70% |
| WinoGrande | ~51% |
您的模型仅经过 1/50 计算量训练,分数会偏低 —— 这是预期的对比基准。
建议: 方案 A(转换为 HF 格式)是最清晰的路径。是否需要我撰写权重转换脚本?