数据截至 (上游 commit 652c89d0ca9d)
第 4 章:巧妙之处、边界与横向对比
这章收尾:先讲几个值得抄进自己评测系统的技巧,再诚实划出它不做什么、会在哪崩,最后和货架兄弟项目对比并给总代码地图。
4.1 巧妙之处(可借鉴的技术)
防泄题:XOR + SHA256 加密题库
妙在哪: 评测题库一旦明文进了网络,就会被未来的模 型「背下来」(数据污染 / contamination),分数失真。BrowseComp 的题目和答案在 CSV 里是加密存放的,运行时才用每行自带的 canary 口令解密。
机制极简(browsecomp_eval.py:50-63):用 SHA256 把口令拉成定长密钥,与密文逐字节 XOR:
# 示意,非源码 —— 提炼自 derive_key / decrypt
def decrypt(ciphertext_b64, password):
encrypted = base64.b64decode(ciphertext_b64)
key = derive_key(password, len(encrypted)) # SHA256(password) 重复填到等长
return bytes(a ^ b for a, b in zip(encrypted, key)).decode()
解密在判分前一刻才做(browsecomp_eval.py:97-98)。这不是为了保密强度(XOR 很弱),而是为了让题库不以明文形式出现在公开仓库,降低被爬进训练集的概率。
GPQA:选项乱序消除位置偏差
妙在哪: 模型对选项位置有偏好(比如偏爱 C)。如果正确答案总在固定位置,分数会被这种偏差污染。GPQA 给每道题随机一个 permutation,把四个选项打乱后再问,正确答案落在哪个字母是随机的(gpqa_eval.py:33、45-47)。
配合 n_repeats(默认 10,simple_evals.py:366),同一题用不同乱序跑多遍,把位置偏差「平均掉」。
bootstrap 误差棒
妙在哪: 一个 92.9 的分数,换一批题会抖多少?库提供 bootstrap_std(common.py:175-178):对分数列表有放回重采样 1000 次、各算均值、取这些均值的标准差,作为分数的不确定度。HealthBench 默认就报它(healthbench_eval.py:231-236)。报分数时附误差棒,是诚实评测的基本功。