- 大模型
- 推理模型
- 微调
- 模型推理服务
【免费下载链接】s1
s1: Simple test-time scaling
QA4MRE(Question Answering for Machine Reading Evaluation)是 CLEF 2011-2013 期间组织的英语机器阅读理解问答挑战赛,用于评测系统从大体积文本中抽取知识并回答问题的能力。本仓库(s1 项目的 lm-evaluation-harness 评测框架)将 QA4MRE 的 Main Task(2011/2012/2013 三个年份)封装为可直接运行的multiple_choice评测任务。读完本文,你将掌握 QA4MRE 任务的背景与组织方式、仓库中qa4mre_2011/2012/2013三个任务的 YAML 配置细节、答案索引的预处理逻辑,以及 acc / acc_norm 指标在框架内的底层计算原理,可直接在本地复现该基准评测。
QA4MRE 挑战赛背景
QA4MRE 是作为 CLEF 2011-2013 的 Lab(实验室评测任务)运行的,其核心目标是通过问答与阅读理解测试建立一套机器阅读(Machine Reading)系统的评测方法论。参赛系统需要能够从大规模文本中抽取知识,并利用这些知识回答问题。
根据 qa4mre/README.md 的记载,在 2011-2013 年间共组织了四项不同的任务:
| 任务 | 说明 |
|---|---|
| Main Task | 基于给定阅读文档的常规阅读理解问答主任务 |
| Processing Modality and Negation | 评测系统处理情态(modality)与否定(negation)语义的能力 |
| Machine Reading of Biomedical Texts about Alzheimer's Disease | 面向阿尔茨海默病生物医学文献的机器阅读理解 |
| Entrance Exam | 入学考试风格的阅读理解测试 |
挑战赛的权威论文为《QA4MRE 2011-2013: Overview of Question Answering for Machine Reading Evaluation》(作者:Anselmo Peñas、Eduard H. Hovy、Pamela Forner、Álvaro Rodrigo、Richard F. E. Sutcliffe、Roser Morante,发表于 CLEF 2013)。官方建议的引用格式如下:
@inproceedings{Peas2013QA4MRE2O, title={QA4MRE 2011-2013: Overview of Question Answering for Machine Reading Evaluation}, author={Anselmo Pe{\~n}as and Eduard H. Hovy and Pamela Forner and {\'A}lvaro Rodrigo and Richard F. E. Sutcliffe and Roser Morante}, booktitle={CLEF}, year={2013} }在仓库的 任务总览表 中,该任务被概括为 "Question Answering for Machine Reading Evaluation, assessing comprehension and reasoning"——即通过阅读理解与推理能力来评估模型的综合水平。
仓库中的组与任务结构
本仓库在eval/lm-evaluation-harness/lm_eval/tasks/qa4mre/目录下提供了完整的任务实现,共包含 5 个文件:
- qa4mre_2011.yaml:2011 年 Main Task 的完整配置
- qa4mre_2012.yaml:2012 年 Main Task 配置(继承 2011)
- qa4mre_2013.yaml:2013 年 Main Task 配置(继承 2011)
- preprocess_qa4mre.py:答案索引预处理辅助函数
- README.md:任务说明与引用信息
任务注册结构如下:
- Group(组):
qa4mre - Tasks(任务):
qa4mre_2011、qa4mre_2012、qa4mre_2013
其中组名qa4mre是一个 tag(标签)而非可独立评测的任务。在框架的 TaskManager 中,所有位于lm_eval/tasks/目录下的 YAML 会被自动索引,索引条目按类型区分为group、task、python_task与tag(见 tasks/init.py 中 initialize_tasks 的实现),因此这三个 YAML 定义的任务无需额外注册即可被--tasks参数直接引用。
任务 YAML 配置逐项解析
qa4mre_2011.yaml是三个年份任务的基础配置(version 1.0),完整内容如下:
tag: - qa4mre task: qa4mre_2011 dataset_path: qa4mre dataset_name: 2011.main.EN output_type: multiple_choice test_split: train # doc_to_text: "{{document_str.strip()}}\nQuestion: {{question_str}}\nChoices:\n- {{answer_choices|join('\n- ')}}\nAnswer:" doc_to_text: "{{document_str.strip()}}\nQuestion: {{question_str}}\nAnswer:" doc_to_target: "{{correct_answer_id|int - 1}}" doc_to_choice: "{{answer_options.answer_str}}" should_decontaminate: true doc_to_decontamination_query: "{{document_str.strip()}} + ' ' + {{question_str}}" metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: true metadata: version: 1.0各配置项的作用与要点如下:
task:任务唯一名称,评测命令行中通过该名称引用任务(如--tasks qa4mre_2011)。dataset_path: qa4mre/dataset_name: 2011.main.EN:指定 Hugging Face 数据集qa4mre及其子集(config)名称。2011.main.EN中的main对应 README 所述的 Main Task,EN表示英语语料——README 明确指出该挑战赛是English only的。output_type: multiple_choice:声明该任务采用多项选择输出。框架会根据此字段走对应的请求构造与评分逻辑(详见下文「acc 与 acc_norm 的计算原理」)。test_split: train:使用数据集的train划分作为评测集(QA4MRE 官方以训练集充当测试集的做法)。doc_to_text:构造送入模型的提示词,格式为"阅读文档 + 换行 + Question + 换行 + Answer:"。注意配置文件中注释掉了一版把选项逐行列出(Choices: ...)的提示词模板,当前生效的是不带选项文本的版本——选项会作为续写(continuation)参与 loglikelihood 计算,这正是multiple_choice输出类型的标准做法。doc_to_target:"{{correct_answer_id|int - 1}}",将数据集中的 1-based 正确答案编号转换为 0-based 索引(与 preprocess_qa4mre.py 中的qa4mre_process逻辑完全一致,见下节)。doc_to_choice:"{{answer_options.answer_str}}",取出数据集中的选项文本列表,作为候选答案集合。should_decontaminate: true与doc_to_decontamination_query:启用数据去污(decontamination)。评测前会把"文档 + 空格 + 问题"拼接成查询串,用于检查评测样本是否出现在模型的训练语料中,避免数据泄漏造成分数虚高(框架的去污实现位于 decontamination 子模块)。metric_list:注册两个指标acc与acc_norm,聚合方式均为mean,且都是越高越好(higher_is_better: true)。
qa4mre_2012.yaml与qa4mre_2013.yaml则通过 YAML 的include机制复用 2011 年的全部配置,仅覆盖任务名与数据集子集名:
include: qa4mre_2011.yaml task: qa4mre_2012 dataset_path: qa4mre dataset_name: 2012.main.ENinclude: qa4mre_2013.yaml task: qa4mre_2013 dataset_path: qa4mre dataset_name: 2013.main.EN这种"基础配置 + 增量覆盖"的组织方式让三个年份的任务保持完全一致的评测协议,只更换数据来源,便于横向比较模型在不同年份考题上的表现。
答案索引的预处理逻辑
preprocess_qa4mre.py 中定义了两个辅助函数,虽未在 YAML 中直接引用(YAML 内联的 Jinja 表达式已等价实现),但清晰地揭示了数据集字段的结构:
def qa4mre_process(doc): return int(doc["correct_answer_id"]) - 1 def doc_to_target(doc): return doc["answer_options"]["answer_str"][qa4mre_process(doc)]从源码结构可以推断:原始数据集样本包含correct_answer_id(1 起始的正确答案编号)与answer_options.answer_str(选项文本列表)两个关键字段。qa4mre_process完成 1-based 到 0-based 的索引换算;doc_to_target则按换算后的索引取出正确的选项文本。YAML 中的doc_to_target: "{{correct_answer_id|int - 1}}"正是把这一转换内联到了配置里。
acc 与 acc_norm 的计算原理
作为multiple_choice任务,QA4MRE 三个年份的评测在 Task.construct_requests / process_results 中按如下流程进行:
- 构造请求:对每个样本,框架把
doc_to_text生成的上下文作为 ctx,把doc_to_choice取出的每个选项作为 continuation,逐个发起loglikelihood请求(见 task.py 中 multiple_choice 分支)。 - 选择预测:模型返回每个选项的对数似然
lls后,框架取:
pred = np.argmax(lls) # acc:直接选似然最大的选项 pred_norm = np.argmax(lls / completion_len) # acc_norm:按选项长度归一化后再取最大(对应 task.py 的 L1452-L1453)
- 比对答案:将
pred/pred_norm与doc_to_target得到的标准答案索引比对,命中则记 1 分,最后按mean聚合得到acc与acc_norm(task.py L1480-L1488)。
其中completion_len是各选项文本的字符长度(task.py L1437-L1438)。acc_norm通过长度归一化修正了"短选项天然更容易获得更高似然"的偏差,因此通常比原始acc更稳健。仓库的回归测试数据也印证了这一点:三个年份的acc_norm均不低于acc(详见下节)。
评测运行方式与测试佐证
在安装好 lm-evaluation-harness 依赖(见 requirements.txt)后,可通过 CLI 入口运行评测,例如:
lm_eval --model hf \ --model_args pretrained=EleutherAI/pythia-70m \ --tasks qa4mre_2011,qa4mre_2012,qa4mre_2013 \ --batch_size 8任务名同样支持组名qa4mre批量引用。若使用外部自定义任务路径,可通过--include_path参数附加(main.py 中的参数定义)。
仓库的测试目录为这三个任务保存了基准结果快照,可用来校验本地实现的一致性:
- qa4mre_2011-v0-res.json:
acc0.225、acc_norm0.2333 - qa4mre_2012-v0-res.json:
acc0.15625、acc_norm0.16875 - qa4mre_2013-v0-res.json:
acc0.1831、acc_norm0.2218
从这些快照可以观察到:在相同小规模预训练模型(测试环境)下,三年份任务均呈现acc_norm > acc的趋势,且 2012 年 Main Task 的绝对分数最低,侧面反映了不同年份考题难度的差异;acc_norm因长度归一化而更加稳健。同时这些.json中versions字段标记为 0,与当前 YAML 的metadata.version: 1.0存在版本演进差异,若你的本地结果与快照不一致,可优先检查数据集与任务配置版本是否匹配。
小结
QA4MRE 评测任务在仓库中通过"一个基础 YAML + 两个 include 覆盖"的方式实现了 2011/2012/2013 三年 Main Task 的无缝接入:multiple_choice输出类型负责构造"文档 + 问题"上下文并对每个选项计算似然,correct_answer_id - 1的索引换算保证了答案对齐,acc/acc_norm双指标兼顾了原始准确率与长度归一化稳健性,should_decontaminate则为防止训练数据泄漏提供了保障。理解这套任务模板的写法,你也可以参考 new_task_guide.md 与 task_guide.md,将其他阅读理解基准以同样的方式接入本评测框架。
- 大模型
- 推理模型
- 微调
- 模型推理服务
【免费下载链接】s1
s1: Simple test-time scaling
相关推荐
Cybersecurity-Skills:NIST AI RMF 72子类别合规实操指南
Cybersecurity Skills:NIST AI RMF 72子类别合规实操指南 Anthropic Cybersecurity Skills 是面向
网络安全AI 技能/插件渗透测试红蓝对抗在 lm-evaluation-harness 中评测 LAMBADA Cloze 任务:配置解析、运行方式与实现原理
在 lm evaluation harness 中评测 LAMBADA Cloze 任务:配置解析、运行方式与实现原理 导读 LAMBADA(LAnguage
大模型推理模型微调模型推理服务s1 仓库中的 DROP 任务评测指南:在 lm-evaluation-harness 中配置离散推理阅读理解基准
s1 仓库中的 DROP 任务评测指南:在 lm evaluation harness 中配置离散推理阅读理解基准 本文聚焦当前仓库 s1 (Simple te
大模型推理模型微调模型推理服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考