ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

使用 lm-evaluation-harness 评估孟加拉语模型:Bangla MMLU / BoolQA / PIQA / OpenBookQA / CommonsenseQA 任务全解析

2026/9/14 20:26:42 拓冰建站 浏览量
使用 lm-evaluation-harness 评估孟加拉语模型:Bangla MMLU / BoolQA / PIQA / OpenBookQA / CommonsenseQA 任务全解析 使用 lm-evaluation-harness 评估孟加拉语模型Bangla MMLU / BoolQA / PIQA / OpenBookQA / CommonsenseQA 任务全解析【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness导读本文聚焦 lm-evaluation-harness 仓库中的孟加拉语Bangla/Bengali评测任务实现即以lm_eval/tasks/bangla/目录为核心的五个基准任务——Bangla MMLU、Bangla BoolQA、Bangla PIQA、Bangla OpenBookQA 与 Bangla CommonsenseQA。这些任务源自 TituLLMs 家族论文arXiv:2502.11187用于训练、验证和对比评估孟加拉语大语言模型。读完本文你将掌握每个任务的 YAML 配置结构、提示模板构造、few-shot 采样机制、准确率指标原理以及如何在本地用一条lm-eval run命令跑通全部 Bangla 基准。一、背景Bangla 基准与 TituLLMs孟加拉语Bangla/Bengali是使用者超过两亿的语言但高质量的开源评测基准长期稀缺。lm_eval/tasks/bangla/目录下的资源正是为填补这一空白而设计它包含Bangla MMLU、Bangla OpenBookQA、Bangla BoolQA、Bangla PIQA、Bangla CommonsenseQA五类覆盖不同能力维度的数据集用于训练、开发以及对孟加拉语语言模型进行对比评测。按照 bangla/README.md 的说明这些数据集在TituLLMs——一个面向孟加拉语的大语言模型家族——的训练与综合基准测试中被广泛使用相关细节可参阅原研究论文TituLLMs: A Family of Bangla LLMs with Comprehensive BenchmarkingarXiv:2502.11187。数据本身托管于 Hugging Face 的hishab组织下包括hishab/titulm-bangla-mmluBangla MMLUhishab/boolq_bnBangla BoolQAhishab/openbookqa-bnBangla OpenBookQAhishab/piqa-bnBangla PIQAhishab/commonsenseqa-bnBangla CommonsenseQA在 lm-evaluation-harness 的任务总索引 lm_eval/tasks/README.md 中这五个数据集也以bangla_mmlu、bangla_commonsenseQA、bangla_boolQA、bangla_piQA、bangla_poenbookQA等名称登记在案语言列标注为 Bengali/Bangla说明它们被正式纳入该框架的内置任务集合。注意总索引表格中的个别名称存在拼写不一致如poenbookQA实际可用的任务名以各 YAML 文件中的task:字段为准详见下文。二、任务实现五个 YAML 配置逐项拆解与仓库中绝大多数任务一样Bangla 系列任务不写任何 Python 代码而是以声明式 YAML 配置驱动。所有配置位于lm_eval/tasks/bangla/目录由 lm_eval/tasks/manager.py 中的TaskManager在初始化时扫描索引TaskManager默认将lm_eval/tasks/目录加入搜索路径通过TaskIndex建立任务名到 YAML 路径的映射并提供all_tasks属性供 CLI 列出全部可用任务。2.1 bangla_mmlu.yaml —— 多主题多项选择题文件bangla_mmlu.yamltask: bangla_mmlu dataset_path: hishab/titulm-bangla-mmlu dataset_name: all description: The following are multiple choice questions (with answers) about range of topics in Bangla test_split: test fewshot_split: dev fewshot_config: sampler: first_n output_type: multiple_choice doc_to_text: {{question.strip()}} A. {{options[0]}} B. {{options[1]}} C. {{options[2]}} D. {{options[3]}} Answer: doc_to_choice: [A, B, C, D] doc_to_target: answer metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: true这是对 MMLU 范式的孟加拉语移植数据集的all子集涵盖孟加拉语的多学科选择题。配置要点task任务名bangla_mmlu是 CLI 中引用该任务的唯一标识dataset_path/dataset_nameHugging Face 数据集路径及子集名运行时会通过datasets库自动加载test_split: test与fewshot_split: dev评测与 few-shot 示例分别取自测试集和开发集doc_to_text将样本渲染为选项拼接的提问文本options[0..3]对应 A/B/C/D 四个选项doc_to_choice: [A, B, C, D]候选答案集合模型需在四个字母中选出正确项doc_to_target: answer从样本字段answer取正确答案。2.2 bangla_boolqa.yaml —— 篇章是非题文件bangla_boolqa.yamltask: boolqa_bn dataset_path: hishab/boolq_bn description: Bangla BoolQ: yes/no questions based on a passage. test_split: validation fewshot_split: train fewshot_config: sampler: first_n output_type: multiple_choice doc_to_text: |- Passage: {{passage.strip()}} Question: {{question.strip()}} Answer: doc_to_choice: [yes, no] doc_to_target: answer metric_list: - metric: acc aggregation: mean higher_is_better: trueBoolQA 评测模型基于篇章回答是非问题的阅读理解能力。该任务将英文 BoolQ 数据集的孟加拉语译文hishab/boolq_bn包装为二分类多项选择题使用 YAML 块标量|-构造多行提示先给出Passage篇章再给出Question问题最后以Answer:收尾doc_to_choice: [yes, no]表明答案是 yes/no 二选一测试/示例划分与其他任务不同test_split: validation、fewshot_split: train。2.3 bangla_openbookqa.yaml —— 开放书本知识问答文件bangla_openbookqa.yamltask: openbookqa_bn dataset_path: hishab/openbookqa-bn description: Bangla OpenBookQA multiple-choice questions. test_split: test fewshot_split: train fewshot_config: sampler: first_n output_type: multiple_choice doc_to_text: |- {{question_stem.strip()}} {% for i in range(choices[label] | length) -%} {{choices[label][i]}}. {{choices[text][i]}} {% endfor -%} Answer: doc_to_choice: [A, B, C, D] doc_to_target: answerKey metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: trueOpenBookQA 考察模型能否利用开放书本式的常识知识回答科学类多选题。此配置展示了 lm-evaluation-harness 强大的Jinja2 模板能力doc_to_text中使用{% for %}循环遍历choices[label]与choices[text]两个并列列表动态生成数量可变的选项列表这里为 A/B/C/D 四项doc_to_target: answerKey直接从样本的answerKey字段取答案choices[label]与choices[text]的结构沿用了原始 OpenBookQA 数据集的嵌套字段格式。2.4 bangla_piqa.yaml —— 物理常识推理文件bangla_piqa.yamltask: piqa_bn dataset_path: hishab/piqa-bn description: Bangla PIQA: physical commonsense reasoning questions. test_split: validation fewshot_split: train fewshot_config: sampler: first_n output_type: multiple_choice doc_to_text: |- {{goal.strip()}} A. {{sol1.strip()}} B. {{sol2.strip()}} Answer: doc_to_choice: [A, B] doc_to_target: label metric_list: - metric: acc aggregation: mean higher_is_better: truePIQA 聚焦物理常识推理给定一个目标goal和两个候选解决方案sol1、sol2模型需判断哪个方案更合理。配置采用最直接的模板写法——目标后接 A/B 两个选项doc_to_target: label指向样本中的label字段。2.5 bangla_commonsenseqa.yaml —— 常识问答五选一文件bangla_commonsenseqa.yamltask: bangla_commonsenseqa dataset_path: hishab/commonsenseqa-bn description: The following are Bangla multiple-choice CommonsenseQA-style questions. test_split: validation fewshot_split: train fewshot_config: sampler: first_n output_type: multiple_choice doc_to_text: |- {{question_stem.strip()}} {% for i in range(choices[label] | length) -%} {{choices[label][i]}}. {{choices[text][i]}} {% endfor -%} Answer: doc_to_choice: [A, B, C, D, E] doc_to_target: answerKey metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: trueCommonsenseQA 是五选一的常识推理任务。与 OpenBookQA 类似这里同样用 Jinja2 循环渲染选项区别在于doc_to_choice扩展为五个字母[A, B, C, D, E]评测的是模型在更多干扰项下的判别能力。三、配置关键项的原理支撑五个 YAML 文件共享一套配置骨架理解这些字段的底层实现能帮助你按需修改或复刻新的孟加拉语任务。3.1 output_type: multiple_choice 的评测机制所有 Bangla 任务都声明output_type: multiple_choice。在该模式下框架为doc_to_choice中的每个候选答案分别计算条件对数似然log-likelihood选择得分最高的候选作为模型预测再与doc_to_target给出的参考答案比对。这一机制对应 lm_eval/api/task.py 中multiple_choice输出类型的处理逻辑属于 lm-evaluation-harness 中最常用的评测范式之一。3.2 fewshot_config.sampler: first_n 的含义五个任务均配置了fewshot_split: train # 或 dev fewshot_config: sampler: first_nfirst_n是注册在 lm_eval/api/samplers.py 中的采样器FirstNSampler。查看其实现可以看到它不同于默认ContextSampler的随机抽样class FirstNSampler(ContextSampler): def sample(self, n: int, eval_docNone, dfNone, **kwargs): Draw the first n samples in order from the specified split. Used for tasks with canonical ordered fewshot examples, such as MMLU and CMMLU. pool self.rm_eval_doc(eval_doc, self.df) if eval_doc is not None else self.df assert n len(pool), (...) return pool[:n]FirstNSampler按顺序取示例集中的前n条作为 few-shot 上下文必要时剔除与当前评测样本相同的文档保证评测结果的可复现性。采样器通过SAMPLER_REGISTRYdefault与first_n注册get_sampler(name)负责按名查找这与 MMLU、CMMLU 等既有任务保持一致。这也解释了为什么 Bangla MMLU 的 few-shot 示例取自dev集沿用 MMLU 的规范有序示例惯例。3.3 指标 acc 与 acc_norm 的区别五个任务全部或部分启用了acc与acc_norm两个指标。二者均在 lm_eval/api/metrics.py 中注册accacc_fn直接计算预测与真实答案的匹配准确率是一个透传函数最终由注册的mean聚合器求平均acc_normacc_norm_fn对每个候选答案的对数似然按其 token 长度归一化后再比较能缓解短答案天然获得更高似然分的问题常用于多选题场景。两个指标都声明higher_is_better: true且aggregation: mean即最终报告的是所有样本正确率的算术平均。mean聚合器同样定义在 lm_eval/api/metrics.pyregister_aggregation(mean)是框架中最基础的聚合方式。四、实战运行 Bangla 任务4.1 安装与准备在仓库根目录安装依赖后即可使用。由于仓库尚未安装为包缺少lm_eval的包元数据可先执行pip install -e .完成安装或者直接以仓库源码方式运行。运行前需确保网络可访问 Hugging Face Hub五个数据集hishab/titulm-bangla-mmlu等会在首次加载时自动下载。4.2 查看任务是否被正确索引使用lm-eval ls子命令确认任务已注册lm-eval ls tasks | grep -i bangla该命令底层调用TaskManager.all_tasks见 lm_eval/tasks/manager.py列出内置任务集合中所有任务名。预期输出包含bangla_mmluboolqa_bnopenbookqa_bnpiqa_bnbangla_commonsenseqa4.3 单任务评测以 Hugging Face 模型为例评测 Bangla MMLUlm-eval run \ --model hf \ --model_args pretrained你的孟加拉语模型ID \ --tasks bangla_mmlu \ --num_fewshot 5 \ --batch_size auto \ --device cuda \ --output_path results/bangla_mmlu.json参数说明对应 lm_eval/_cli/run.py 中lm-eval run的参数定义参数含义说明--model/-M模型后端默认hf还可选用vllm、gguf、openai-completions等--model_args/-a模型参数以keyval形式给出如pretrained...、dtypefloat32--tasks/-t任务列表空格分隔的任务名或分组可同时传多个--num_fewshot/-ffew-shot 示例数覆盖 YAML 中的默认采样数量--batch_size/-b批大小支持auto、auto:N自动调优或整数--device设备cuda、cuda:0、cpu、mps等--output_path/-o输出路径结果 JSON 文件或目录--limit/-L每任务样本上限整数条数或小数比例适合快速冒烟测试4.4 一次性评测全部 Bangla 基准lm-eval run \ --model hf \ --model_args pretrained你的孟加拉语模型ID \ --tasks bangla_mmlu boolqa_bn openbookqa_bn piqa_bn bangla_commonsenseqa \ --num_fewshot 5 \ --batch_size auto如上所示--tasks接受空格分隔的多个任务名五个 Bangla 任务可一次提交。每组任务都会报告acc以及启用了acc_norm的任务报告该指标输出中包含每个任务的准确率、样本数及标准误便于横向对比模型在知识记忆MMLU、篇章阅读BoolQA、开放书本常识OpenBookQA、物理常识PIQA与干扰项判别CommonsenseQA五个维度上的表现。4.5 快速验证配置在完整运行前可先用--limit参数做小样本冒烟测试验证提示模板与数据字段是否正常lm-eval run \ --model hf \ --model_args pretrainedEleutherAI/pythia-70m \ --tasks bangla_mmlu \ --num_fewshot 0 \ --limit 10如果模板中引用了不存在的字段、或doc_to_choice与数据不匹配框架会在加载样本时立即报错便于快速定位配置问题。五、扩展如何基于现有配置复刻新任务了解五个 YAML 的构成后你可以很容易地复刻同类孟加拉语任务在 lm_eval/tasks/bangla/ 目录下新建xxx.yaml参照bangla_mmlu.yaml填写task、dataset_path、test_split、fewshot_split、output_type根据数据字段编写doc_to_text模板与doc_to_choice、doc_to_target字段结构不确定时可先用--limit冒烟测试依据任务性质选择acc或accacc_norm指标组合重新运行lm-eval ls tasks确认新任务被TaskManager索引到。TaskManager也支持通过include_path参数扫描仓库外部的自定义任务目录见 lm_eval/tasks/manager.py因此自定义任务无需改动仓库内置代码即可参与评测。六、引用规范若在论文或报告中使用了 Bangla 数据集与评测结果请按 bangla/README.md 中的指引引用原论文misc{nahin2025titullmsfamilybanglallms, title{TituLLMs: A Family of Bangla LLMs with Comprehensive Benchmarking}, author{Shahriar Kabir Nahin and Rabindra Nath Nandi and Sagor Sarker and Quazi Sarwar Muhtaseem and Md Kowsher and Apu Chandraw Shill and Md Ibrahim and Mehadi Hasan Menon and Tareq Al Muntasir and Firoj Alam}, year{2025}, eprint{2502.11187}, archivePrefix{arXiv}, primaryClass{cs.CL}, url{https://arxiv.org/abs/2502.11187}, }总结lm_eval/tasks/bangla/以纯声明式 YAML 的形式将 TituLLMs 论文配套的五类孟加拉语基准完整接入 lm-evaluation-harness 框架。无论你是在训练自己的孟加拉语模型还是想对比已有模型的孟加拉语能力都可以直接通过任务名bangla_mmlu、boolqa_bn、openbookqa_bn、piqa_bn、bangla_commonsenseqa一键运行评测。其配置背后依赖的FirstNSampler、acc/acc_norm指标注册机制以及TaskManager的任务索引体系与仓库中 MMLU、CMMLU 等成熟任务完全一致充分体现了 lm-evaluation-harness以配置定义任务、零代码接入新语言基准的设计理念。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考