资讯动态

使用 lm-evaluation-harness 评测 bAbI:基于故事问答的阅读推理基准实战指南

发布时间:2026/10/10 23:44:46 来源:尧图企业网站定制
大模型推理模型微调模型推理服务【免费下载链接】s1s1: Simple test-time scaling项目地址https://gitcode.com/gh_mirrors/s1/s1点击查看免费下载导读bAbI 是自然语言理解与问答领域一个极具代表性的推理基准由 Weston 等人于 2015 年提出其核心思想是用 20 组玩具任务模拟人类对话智能所需的链式推理、归纳、演绎等能力。本篇文章以仓库中 babi 任务 README 为骨架结合其任务配置 babi.yaml 与 lm-evaluation-harness 框架源码系统讲解bAbI 数据集的技术背景、YAML 任务配置的每个字段含义、如何将任务接入框架并实际运行评测、以及如何理解与复现评测结果。读完本文你将能够独立在本地使用 lm-evaluation-harness 对 bAbI以及同类生成式 QA 任务完成从配置到出分的完整评测闭环。bAbI 基准概述论文与数据集出处bAbI 任务由下述论文提出该论文同时给出了数据集的官方主页论文标题Towards ai-complete question answering: A set of prerequisite toy tasks论文摘要与全文https://arxiv.org/abs/1502.05698数据集官方主页https://github.com/facebookarchive/bAbI-tasks论文的核心主张是机器学习研究的长远目标之一是构建可用于推理和自然语言的智能对话 Agent。为了衡量迈向该目标的进展作者提出用一组代理任务proxy tasks来评估系统的阅读理解问答能力。这些任务从多个维度测试系统是否能够通过事实链式推理chaining facts、简单归纳induction、演绎deduction等方式回答问题并被认为是任何能与人类对话的系统必须具备的前置技能prerequisites。论文还指出当时许多既有学习系统无法解决这些任务因此作者希望通过将任务按技能集合分类帮助研究者定位并修复其系统的短板。作为方法论的贡献论文同时扩展并改进了 Memory Networks 模型证明其能解决部分但非全部任务。在仓库的 lm_eval/tasks/README.md 中babi 任务被登记为Tasks designed as question and answering challenges based on simulated stories.基于模拟故事设计的问答挑战任务语言为英语。这与论文的定位完全一致bAbI 不是大规模知识竞赛式问答而是用小规模、结构化的模拟故事来测试推理机制本身。引用信息在论文或报告中引用该基准时官方 README 给出的 BibTeX 如下article{weston2015towards, title{Towards ai-complete question answering: A set of prerequisite toy tasks}, author{Weston, Jason and Bordes, Antoine and Chopra, Sumit and Rush, Alexander M and Van Merri{\e}nboer, Bart and Joulin, Armand and Mikolov, Tomas}, journal{arXiv preprint arXiv:1502.05698}, year{2015} }任务在框架中的注册信息babi 任务在 lm-evaluation-harness 中的组织方式可以通过 README 中的 Groups, Tags, and Tasks 一节确认Groups目前不属于任何任务组Not part of a group yetTags目前未打任何标签No tags appliedTasks注册的任务名为babi这意味着该任务是作为独立单任务运行的不能通过--tasks传入某个组名或标签名来批量触发。任务名的注册方式在 new_task_guide.md 中有明确说明只要 YAML 文件位于lm_eval/tasks目录下并在文件中声明task: name任务即完成注册。babi 正是在其目录 babi.yaml 中声明了task: babi。深入解析 babi.yaml一个生成式问答任务的完整配置babi 任务的全部逻辑都浓缩在一个约 20 行的 YAML 文件 babi.yaml 中。下面逐字段拆解其含义并对照框架文档 task_guide.md 中的TaskConfig参数说明理解每个字段对评测行为的影响。数据集加载与划分task: babi dataset_path: Muennighoff/babi dataset_name: null training_split: train validation_split: valid test_split: testtask: babi注册的任务名用于 CLI 中--tasks babi指定。dataset_path: Muennighoff/babiHugging Face Hub 上的数据集标识。框架统一通过 HFdatasetsAPI 加载数据这是TaskConfig中dataset_path字段的标准用法见 task_guide.md。dataset_name: null表示该数据集没有需要额外指定的 HF 数据子配置即不需要传给load_dataset的第二个参数直接留空。training_split / validation_split / test_split分别指向数据集的train、valid、test划分。根据框架约定评测优先使用test_split若测试集不可用则回退到validation_split见 new_task_guide.md。提示模板将故事与问题组织成模型输入doc_to_text: Passage: {{passage}}Question: {{question}}\nAnswer: doc_to_target: {{answer}} target_delimiter: doc_to_text使用 Jinja2 模板将每个样本渲染为模型输入Passage: {{passage}}Question: {{question}}\nAnswer:。即先输出一段模拟故事passage再以Question:引出问题question最后以Answer:提示模型开始作答。doc_to_target是标准答案模板 {{answer}}。需要注意target_delimiter被显式设为空字符串默认值为一个空格见 task_guide.md因此评测时输入与目标答案之间的分隔由模板自身控制。doc_to_text与doc_to_target均不应包含多余的首尾空白这一约定同样源自 new_task_guide.md 的说明。生成参数何时停止采样output_type: generate_until generation_kwargs: until: - \n - Passage:output_type: generate_until表明这是一个**自由生成generative**任务模型需要自行采样文本而不是在固定选项间计算 log-likelihood。output_type的可选值包括generate_until、loglikelihood、loglikelihood_rolling与multiple_choice见 task_guide.md。generation_kwargs.until定义了采样终止条件\n遇到换行即停止——因为答案是单行短文本Passage:防止模型越界开始生成新的故事段落。generation_kwargs本质上是传给 HF transformersgenerate函数的辅助参数框架对非 HF 模型后端可能不完全支持高级关键字见 task_guide.md。评测指标Exact Matchmetric_list: - metric: exact_match aggregation: mean higher_is_better: truemetric: exact_match逐样本判断模型生成文本与标准答案是否完全一致aggregation: mean对全部样本的 0/1 结果取平均得到最终准确率higher_is_better: true数值越高越好符合准确率的语义。在源码层面generate_until类型任务的默认指标正是exact_match——这可以在 registry.py 的映射generate_until: [exact_match]中得到印证exact_match指标的具体实现逐样本比较 gold 与预测则位于 task.py。此外metrics.py 中还提供了基于 HuggingFace Evaluate 的exact_match_hf_evaluate实现供需要与外部指标库对齐的场景使用。版本元数据metadata: version: 1.0metadata.version是任务配置的版本号。框架约定当任务配置发生破坏性变更如提示模板、指标逻辑调整时应递增版本号以便研究者区分不同迭代并保证评测可复现见 new_task_guide.md。如何运行 babi 评测环境与入口lm-evaluation-harness 的 CLI 入口为main.py。核心参数在 setup_parser 中定义--model/-m模型类型默认hfHuggingFace Transformers 模型--tasks/-t要评测的任务名逗号分隔babi 直接传babi--model_args/-a模型加载参数例如pretrainedEleutherAI/pythia-160m,dtypefloat32--num_fewshot/-ffew-shot 示例数量不传时使用任务配置默认值babi 配置未设置即默认 0-shot--batch_size/-b批大小支持auto、auto:N或整数。一条可复现的评测命令以 HuggingFace 模型为例0-shot 评测 babi 的完整命令如下lm-eval --model hf \ --model_args pretrainedEleutherAI/pythia-160m,dtypefloat32 \ --tasks babi \ --batch_size auto运行结束后控制台会输出一个结果表其中 babi 一行的exact_match列即模型的 bAbI 推理准确率。若需要同时评测多个任务例如与同类阅读推理任务对比使用逗号分隔的任务列表即可lm-eval --model hf \ --model_args pretrainedEleutherAI/pythia-160m,dtypefloat32 \ --tasks babi,drop \ --batch_size auto注意所有任务名必须是已注册名称。可用lm-eval --tasks list查看全部任务清单见 README.md。验证提示模板与 few-shot 样本在正式评测前建议先用scripts/write_out工具把渲染后的输入输出落盘检查确保提示格式符合预期该工具用法见 new_task_guide.mdpython -m scripts.write_out \ --output_base_path output-dir \ --tasks babi \ --sets test \ --num_fewshot 0 \ --num_examples 20打开--output_base_path指定的文件做肉眼检查eye test确认每个样本都形如Passage: 模拟故事文本 Question: 问题 Answer: 标准答案即可放心进入正式评测。从配置到评测结果框架执行流程梳理结合上文babi 任务在 lm-evaluation-harness 中的完整执行链路可以概括为注册与加载--tasks babi触发任务管理器查找 babi.yaml解析TaskConfig数据准备通过dataset_path: Muennighoff/babi从 HF Hub 拉取数据按training_split/validation_split/test_split选取评测划分提示渲染对每个样本用doc_to_text的 Jinja2 模板生成输入用doc_to_target生成标准答案模型推理按output_type: generate_until进行自由采样generation_kwargs.until控制停止条件打分汇总exact_match逐样本比对mean聚合出任务准确率higher_is_better: true标注方向结果输出以表格形式打印各任务指标。该流程中提示渲染 → 推理 → 指标的通用设计决定了更换评测模型--model或调整批次--batch_size不会影响任务配置本身的可复现性而metadata.version则为提示模板或数据集发生变化时提供了版本追踪手段。结论与适用说明babi 在仓库中是一个结构极简但语义完整的generate_until式生成问答任务它依托 HF Hub 上的Muennighoff/babi数据集通过 babi.yaml 一次性完成数据加载、提示模板、采样停止条件与 Exact Match 指标的声明。对研究者而言它既是评测模型链式推理能力的最小抓手也是理解 lm-evaluation-harness YAML 任务机制尤其是生成式任务的最佳入门案例。需要说明的适用前提babi 当前不归属任何 group、无 tag只能以babi任务名单独运行数据依赖 HF Hub 上的Muennighoff/babi数据集评测前需具备网络访问能力或提前缓存generation_kwargs中的高级参数对非 HF 模型后端可能存在兼容性限制跨后端评测时需留意本文所有命令与配置说明均以当前仓库eval/lm-evaluation-harness目录实际内容为准适用于仓库所对应的 lm-evaluation-harness 版本。延伸阅读babi 任务 README任务注册信息、论文与引用babi.yaml 配置完整任务配置task_guide.mdTaskConfig全量参数说明new_task_guide.md如何新增一个 YAML 任务任务总览 READMEbabi 在全部任务中的登记信息指标实现 与 注册映射exact_match的源码依据CLI 入口--tasks等参数定义赞分享大模型推理模型微调模型推理服务【免费下载链接】s1s1: Simple test-time scaling项目地址https://gitcode.com/gh_mirrors/s1/s1点击查看免费下载相关推荐在 lm-evaluation-harness 中接入与运行 bAbI 任务基于 simulate story 的问答推理评估指南在 lm evaluation harness 中接入与运行 bAbI 任务基于 simulate story 的问答推理评估指南 导读 bAbI 是 Fac人工智能模型评测AI 评测Oumi 标准化基准评测Standardized Benchmarks完全指南基于 LM Evaluation Harness 的模型能力评测Oumi 标准化基准评测Standardized Benchmarks完全指南基于 LM Evaluation Harness 的模型能力评测 本文是 O人工智能大模型预训练微调强化学习模型推理服务模型评测MCP 服务分布式训练模型量化在 lm-evaluation-harness 中使用 ACLUE古汉语理解评测基准的接入与实战指南在 lm evaluation harness 中使用 ACLUE古汉语理解评测基准的接入与实战指南 导读 本文介绍 Ancient Chinese Lang大模型推理模型微调模型推理服务上一篇3步掌握抖音批量下载助手高效自动化采集创作者作品下一篇3分钟极速上手免费城通网盘解析工具终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑