读完本文你将掌握如何在 lm-evaluation-harness 中一键运行 WSC273理解 partial evaluation部分评估 这一评测范式如何把指代消解问题转化为 token 级概率比较并能够基于源码与测试数据验证评测结果, templateoptions[1]]}}should_decontaminate: truedoc_to_decontamination_query: textmetric_list: - metric: accaggregation: meanhigher_is_better: truemetadata: version: 1.0 2.1 数据来源dataset_path 与 dataset_name dataset_path: lighteval/winograd_wsc指明数据集托管在 Hugging Face Hub 的 lighteval/winograd_wsc 仓库 dataset_name: wsc273指定该仓库中的 wsc273 子集 test_split: test评测使用数据集的 test 划分,这里使用了 Jinja2 模板 pronoun_loc 是代词在句子中的起始位置pronoun 是代词本身二者拼接后得到代词结束的位置 text[index:] 取出从代词之后一直到句末的字符串作为需要计算概率的目标片段。
----同目录的 winogrande 任务配置见 winogrande/default.yaml基于 Sakaguchi 等人 2019 年提出的 WinoGrande——一个受 Winograd Schema Challenge 启发、包含约 4.4 万道题的对抗性大规模集合同样声明使用 Trinh Le 的 partial evaluation 方法,} ,year 2012,执行后输出会包含类似 | Tasks |Version|Filter|n-shot| Metric | |Value| |Stderr||----------:|--
参考引用 任务文档 wsc273/README.md 提供了标准 BibTeX 引文评测时如需引用 WSC273 数据集可直接使用 inproceedings{ea01b9c0db064caca6986b925d75f2bb, 若要快速了解全仓库支持的任务清单可查看 tasks/README.md其中对 wsc273 的定位是 The Winograd Schema Challenge,it 指行李箱 WSC273 正是由 273 个这样的 Winograd schema 组成的评测集合。
该机制配合 lm_eval/decontamination 模块使用用于检测训练语料与评测样本的 n-gram 重叠从而评估评测结果是否可能被数据泄漏污染, 在 lm-evaluation-harness 中任务文档 wsc273/README.md 明确指出 本任务的评测基于 Trinh Le 在 Simple Method for Commonsense Reasoning2018中提出的 partial evaluation 方法 , doc_to_target: {% set index pronoun_loc pronoun | length %}{{text[index:]}} 目标文本正确答案是句子中 代词之后的剩余部分 , 六、总结 wsc273 是 lm-evaluation-harness 中一个麻雀虽小、五脏俱全的评测任务它以 default.yaml 中的三行 Jinja 模板实现了 Trinh Le 的 partial evaluation 范式以 utils.py 中的 process_doc 解决了数据集原始格式与评测范式之间的适配问题并通过去污染配置与版本化指标保证了评测的规范性与可复现性, ),仓库中的既有测试数据 tests/testdata/wsc273-v0-res.json 记录了一个早期版本version 0的参考运行结果acc 0.5164835164835165acc_stderr 0.0303, 2.5 指标与版本 metric_list: - metric: accaggregation: meanhigher_is_better: truemetadata: version: 1.0 指标为简单准确率 acc聚合方式为均值数值越高越好任务版本号为 1.0, 二、任务配置逐项解析default.yaml 全字段拆解 wsc273 任务的完整配置位于 default.yaml全部内容如下 task: wsc273dataset_path: lighteval/winograd_wscdataset_name: wsc273output_type: multiple_choicetest_split: testdoc_to_text: labelprocess_docs: !function utils.process_docdoc_to_target: {% set index pronoun_loc pronoun | length %}{{text[index:]}}doc_to_choice: {% set template text[:pronoun_loc] %}{{[templateoptions[0]。
lm-evaluation-harness 中的 WSC273 任务基于 partial evaluation 的 Winograd Schema Challenge 评测实战 本篇文章聚焦开源项目 lm-evaluation-harness 中的 wsc273 评测任务围绕其任务定义文档 wsc273/README.md 展开深入解析 Winograd Schema Challenge 273 的评测原理、YAML 任务配置、数据预处理实现与运行方式,abstract In this paper,对想要理解多选题式 partial evaluation如何落地、或希望在报告中引用 WSC273 结果的开发者而言本任务配置与源码是最直接、最完整的参考样例, 2.3 partial evaluation 的核心三件套 这是整个任务最有技术含量的部分三个字段共同实现了 部分评估 范式 doc_to_text: label 评测提示文本context直接取自数据字段 label,从源码结构看这对应着 Hugging Face 上该数据集对 partial evaluation 的既有整理——label 字段保存了句子中代词之前的前缀文本作为公共上下文,例如经典例子 奖杯放不下在行李箱里因为它太大了,it 指奖杯 奖杯放不下在行李箱里因为行李箱太小了, a test of commonsense reasoning and coreference resolution常识推理与指代消解测试,在 lm_eval/api/task.py 的 Task 基类中multiple_choice 是内置的 OUTPUT_TYPE 之一见该文件第 53 行附近的类型枚举它会为每个选项构造 loglikelihood 请求比较各选项的条件概率并取最大值对应的选项作为预测,两者对比可以看出该评测范式的通用性WSC273 规模小、源自原始论文WinoGrande 规模大、针对数据集特定偏差做了鲁棒性改进,这样模型 无需理解完整的选择填空指令 只需比较前缀 候选指代之后紧跟文本的自然程度——这正是 Trinh Le 方法的核心思想通过条件概率比较来完成指代消解绕过了完整句子理解可能引入的噪声, 一、任务背景什么是 Winograd Schema Challenge Winograd Schema Challenge 由 Levesque、Davis 与 Morgenstern 在 2012 年提出论文标题 The Winograd Schema Challenge其初衷是作为图灵测试的一种替代方案,这一点是理解整个任务配置的关键——评测的不是模型是否完整生成答案而是模型对特定片段的条件概率。
----:||wsc273 | 1.0|none |0|acc|↑ | 0.55|± |0.03 | 由于任务为单选式评测不需要 few-shot 示例即可直接比较选项概率默认 n-shot 为 0 即可运行,源码注释指出Hugging Face 上的 wsc273 实现并不友好于 partial evaluation因此需要先规整句子文本避免空格影响 pronoun_loc 等基于字符位置的字段的准确性, KR 2012,例如原句代词是 my则候选选项需要补成 mys 之类完整形式保证 template option 拼接后语法完整 句首大小写处理 判断代词位置 pronoun_loc 前两个字符是否为句号.若不是句首且选项首词属于 upper_pronouns 列表A、An、The、She、He、It、They、My、His、Her、Their 等则将该词转为小写避免拼接出的候选文本出现不合语境的句首大写, 四、运行方式如何在本地评测 WSC273 在 lm-evaluation-harness 中运行 wsc273 任务使用 CLI 即可, 2.4 去污染配置should_decontaminate should_decontaminate: truedoc_to_decontamination_query: text 任务开启了数据去污染decontamination去污染查询使用原始 text 字段,booktitle 13th International Conference on the Principles of Knowledge Representation and Reasoning,由于 WSC273 只有 273 个样本准确率约为 51.6%与随机猜测50%差距有限这也侧面印证了该基准对人类简单、对模型困难的特性——此结果可用于回归测试时核对任务是否按预期工作。{Hector J.} and Ernest Davis and Leora Morgenstern。
以 Hugging Face 模型为例项目标准用法详细说明见 docs/interface.md lm_eval --model hf \--model_args pretrainedMODEL_NAME \--tasks wsc273 \--device cuda 其中 MODEL_NAME 替换为实际的模型名称或本地权重路径,其核心难点在于正确答案对人类读者显而易见却难以通过简单的选择限制selectional restrictions或语料库统计技术获得因此它被广泛视为评测语言模型 常识推理与指代消解能力 的重要基准。
这一层预处理直接决定了 doc_to_choice 拼接出的两个候选是否真实、自然进而影响概率比较的公平性是整个任务正确性的关键保障, 三、数据规范化实现utils.py 源码剖析 为了让 Hugging Face 上的原始数据集适配 partial evaluation 范式任务通过 process_docs: !function utils.process_doc 引入了 utils.py 中的预处理逻辑,若需要查看任务注册情况可执行 lm_eval --tasks wsc273 --show_details 更多 CLI 参数如 --batch_size、--num_fewshot、--output_path 等可参考 docs/interface.md 与 _cli/run.py, 2.2 输出类型output_type: multiple_choice 任务将 WSC273 建模为 多选题 multiple choice, 五、相关任务与延伸阅读 WSC273 并非该仓库中唯一的 Winograd 风格任务, we present an alternative to the Turing Test that has some conceptual and practical advantages. ...,在 lm_eval/api/task.py 中doc_to_decontamination_query 会在未显式提供时回退为 doc_to_text而这里显式指定为 text确保去污染比较基于完整句子而非部分模板,pages 552--561, templateoptions[1]]}} 两个候选选项分别是 句子前缀text[:pronoun_loc] 选项一 / 选项二 ,也就是说模型看到的是句子前缀 候选指代需要比较哪个候选指代使后续片段即目标的条件概率更高,author Levesque,。
规范化两个选项 调用 __normalize_option 处理每个候选指代 所有格补全 当原句代词属于 my、his、her、our、their 等所有格限定词时为选项追加 s。
---------:|----------把三个字段合起来看partial evaluation 的完整逻辑是模型以 label 为上下文对 doc_to_choice 给出的两个候选前缀分别计算 doc_to_target 对应片段的 log-likelihood选择得分更高者,一个 Winograd schema维诺格拉德模式由一对句子构成这对句子 仅有一两个单词的差异 却包含一个在两句中以相反方式消解的指代歧义必须借助世界知识与推理才能正确消解,title The winograd schema challenge, doc_to_choice: {% set template text[:pronoun_loc] %}{{[templateoptions[0],process_doc 对每个样本依次执行 压缩连续空格 doc[text] doc[text].replace( 。
