ADR 0002: 测试集访问验证结果
日期: 2026-06-09
状态: 阻塞 — 需询问赛方 / 走 fallback
执行人: AI agent (team lead 角色)
关联脚本: scripts/verify_testset_access.py
原始结果: benchmarks/testset_access.json
背景
P0 任务 0.2 要求在跑任何 baseline / 优化前先确认 LongBench 和 RULER 测试集能不能下载。脚本运行后,两个测试集都 FAIL。这是真实信号,不是脚本问题。
验证结果(实际跑出)
| 测试集 | 检查项 | 状态 | 原因 |
|---|---|---|---|
| LongBench | xinrongzhang2022/longbench (NarrativeQA) |
FAIL | DatasetNotFoundError: dataset gated/private,无法无 auth 访问 |
| LongBench | xinrongzhang2022/longbench (Qasper) |
FAIL | 同上 |
| RULER | https://raw.githubusercontent.com/NVIDIA/RULER/main/scripts/data/synthetic.json |
FAIL | HTTP 404: 该路径不存在,实际数据由 scripts/data/synthetic/json/ 下的脚本生成(SQuAD / HotpotQA / Paul Graham essays),不存预置 JSON |
失败原因分析
- LongBench gated: 原始仓库
xinrongzhang2022/longbench在 HuggingFace Hub 上已变为 gated / private。即使是streaming=True也需要登录。datasets-server.huggingface.co/info?dataset=xinrongzhang2022%2Flongbench返回401等价错误。 - RULER 数据结构不同: 计划里写的
scripts/data/synthetic.json不存在。RULER 的"基准数据"是合成的 — 评测脚本运行时调用download_paulgraham_essay.py和download_qa_dataset.sh从 SQuAD / HotpotQA / Paul Graham Blog 拉源数据,生成 NIAH / VT / CWE / QA / RAG 任务的 jsonl。所以"预下载 synthetic.json"这个概念本身在 RULER 里不成立。 datasets库未预装(环境中性发现): 干净环境需pip install datasets才能跑 HF 流式访问。赛方评测容器需确认镜像里是否包含。
决策
- 不修改脚本结构(脚本设计目的就是检测这些失败)。
- 不提交未在赛方/官方授权下镜像的测试集数据。
- 走 fallback: 自造 100 样本 smoke 测试集,用于 P2 阶段的 bench harness 自检。
- 真实评测集: 走赛方流程(邮件/IM 群),问三件事:
- LongBench 是否由赛方提供镜像/快照?是否需要专用 HF token?
- RULER 评测是赛方统一跑还是我们自己跑?如果是后者,需要确认 SQuAD / HotpotQA / Paul Graham 源数据是否允许现场拉取。
- 评测容器镜像里预装了什么 Python 包(
datasets/transformers/vllm)?
失败 → 询问映射
| 失败 | 解决路径 | 问赛方哪个问题 |
|---|---|---|
| LongBench 401 (gated) | 赛方提供镜像/快照/token | 问题 #1 |
| RULER 404 (无预置 JSON) | 不需要"提供文件" —— RULER 数据由评测时合成 | 问题 #2(确认赛方统一跑) |
datasets 缺失 |
容器镜像预装 / 允许 pip install | 问题 #3 |
注意:RULER 404 不是"数据缺失"问题,是"评测机制不同"问题;不要让赛方去找一个不存在的 synthetic.json。
Fallback 策略: 自造 100 样本
如果 24h 内未得到赛方回复或赛方不提供测试集:
- 构造脚本:
scripts/make_synth_bench.py - 从 Wikipedia 公开页面或 CC0 文本(如
wikimedia/wikipedia摘要)抽 100 个 long-context 段(每段 8k-32k tokens)。 - 每段配 1-2 个 QA 对,答案严格在段内可定位(避免幻觉测量失真)。
- 目的: bench harness 自检 + 调优循环 + 回归对比(参照 AGENTS.md §AI 输出验证协议 §2 "运行验证")。
- 限制: 不可作为最终提交 score 的依据,只用于研发期。
- 重做条件: 赛方提供官方测试集后,改用官方集重跑 P2 §2.2 三档 baseline,自造集归档到
benchmarks/synth_100/留作回归基线。
影响
- P2 任务 2.1 (bench harness TDD) 不会被卡 — harness 只依赖 OpenAI 兼容接口,数据来源可注入。
- P2 任务 2.2 (3 档 baseline 跑分) 会被卡 直到测试集到位 — 用自造 100 样本先出 1 档 rough baseline。
- P3+ 任务 (优化) 不依赖此任务,继续推进。
- Spec 引用: 此 ADR 替代了 spec §2 "待验证未知项" 第 3 项"LongBench / RULER 测试集"以及 §10 风险表对应行的假设,后续 PR 需在 spec 增补一段。
待办
- 队长发邮件/IM 给赛方,引用本 ADR +
benchmarks/testset_access.json - 收到回复后更新本 ADR 的"决策"段
- 若 24h 无回复,启动 fallback: 写
scripts/make_synth_bench.py - 在 spec §2 增补"测试集由赛方提供"段(同步 §10 风险表对应行)
- (spec 修订) 在 spec §2 待验证未知项 第 3 项"LongBench / RULER 测试集"中增补"长度分布: 短文 2k-10k / 长文 10k-50k / NIAH 4k-128k 多 bin",影响 Task 2.1 harness 设计