同一份评测集上,新版本分数从 71 涨到 79,团队准备上线,复跑时发现两次实验的提示词版本不同,评测脚本读的是本地最新模板。
这类报错背后常见的原因有几处,逐个排除就行。两次实验的 prompt 版本没有固定;评测脚本读取的是工作区文件而不是快照;解码参数在两次运行间被改过;评测集本身也在增量更新,样本不完全是同一批。
动手时先把 prompt 和参数一起做哈希留档
python -c "import hashlib;print(hashlib.md5(open('prompt.txt','rb').read()).hexdigest())"
评测时显式固定模板路径与版本
python eval_run.py --prompt prompts/v3.txt --temperature 0 --top-p 1
接着核对两次运行的样本 id 是否一致
python -c "a={l.split(',')[0] for l in open('run1.csv')};b={l.split(',')[0] for l in open('run2.csv')};print(len(a^b))"
末了在同一配置下重跑基线做对照
python eval_run.py --prompt prompts/v3.txt --model base --out base2.jsonl
改之前先确认了最近有没有人动过配置,避免白查一遍。
恢复的判定其实很直接。两次运行只有模型变量不同,样本 id 差集为 0,分数差稳定在 2 分以内才算可信。
补一句。评测要一次只改一个变量,prompt、参数、数据集任何一项变动都会让分数失去可比性。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
