这个坑值得记一笔。500 条测试集用大模型扩增过一轮,实际 40% 是原题换说法,新 prompt 在集上涨了 12 分,线上 A/B 却没有差异。

刚开始盯着「同一模板生成的问题句式高度一致」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。扩增时保留了原题语义,测的是记忆不是泛化;训练集与测试集存在重叠样本;评分只看关键词命中,改写后仍然命中。

先按相似度找近似重复

python dedup_eval.py --input test.jsonl --threshold 0.9 --out test_u.jsonl

再往下统计去重前后条数

python -c "print(sum(1 for _ in open('test.jsonl')), sum(1 for _ in open('test_u.jsonl')))"

然后在去重集上重跑两版

python run_eval.py --file test_u.jsonl --prompt v7

等前面都确认过,再对比两版差距

python diff_report.py --a v6.json --b v7.json

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

怎么算真的好了,看的是同一批现象。去重后测试集剩 310 条,新 prompt 的领先幅度从 12 分回落到 3 分,与线上结果接近。

评测集自己造得越顺手越容易泄漏,扩增样本要先做相似度去重再算分。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189