新模型在自建 800 条评测集上准确率 91%,上线后人工抽检只有 72%,比对发现评测集里有 260 条与微调数据几乎一字不差。

一开始怀疑是「公开数据集的测试划分被混进训练」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。评测集与微调集同源 没有做隔离。还有一种是只按 id 去重 改写样本没识别。

少数情况下是评测前没有跑相似度检查。

动手时先用 MinHash 找训练集与评测集的近重复

python dedup_check.py --train train.jsonl --eval eval.jsonl --threshold 0.9

然后统计重复比例并按来源分组

python report_overlap.py --pairs dup.csv --by source

随后剔除重复样本后重跑评测

python run_eval.py --set eval_clean.jsonl --model new-ft

剩下的就是对比剔除前后的分数差

python -c "print(round(91-72,1))"

恢复的判定其实很直接。清洗后的评测集与训练集重叠为零,重跑分数回落到与人工抽检接近的区间。

分数虚高最容易被忽略,评测集建好后先跟所有训练数据做一次近重复检查,再谈结论。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189