
Belebele 多语言阅读理解基准评测指南在 lm-evaluation-harness 中运行 122 语言变体的少样本评估【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harnessBelebele 是一个覆盖 122 种语言变体的大规模多语言机器阅读理解MRC数据集每条问题都基于 FLORES-200 平行语料中的短文片段并配备四个选项。本文基于 lm-evaluation-harness 仓库中 lm_eval/tasks/belebele/README.md 及其完整任务配置系统讲解该基准在框架中的任务/组结构、YAML 配置原理、配置生成脚本与具体运行方法帮助你用 loglikelihood 多选评分方式对单语与多语模型在高、中、低资源语言上的阅读理解能力进行统一评测与跨语言对比。一、Belebele 基准简介Belebele论文《The Belebele Benchmark for Massively Multilingual NLU Evaluation》arXiv:2308.16884是一个覆盖122 种语言变体的多选题机器阅读理解MRC数据集其主要设计目标包括大规模多语言覆盖同时涵盖高资源high-resource、中资源medium-resource与低资源low-resource语言可用于评测单语与多语模型。四选一阅读理解每个问题包含四个选项且都关联到FLORES-200数据集中的一段短文。严格的人工标注与质检标注流程经过精心设计以构造能够区分不同层次通用语言理解能力的问题并辅以大量质量检查。完全平行fully parallel同一问题在所有语言上平行存在可直接对不同语言间的模型表现进行对比。有区分度即使是纯英文数据集本身也足以对当前最先进的state-of-the-art语言模型构成挑战。该基准为评估与分析语言模型及 NLP 系统的多语言能力提供了新的途径。仓库 README 中还给出了标准的 BibTeX 引用条目见 lm_eval/tasks/belebele/README.md在论文或技术报告中引用该基准时可直接使用。二、任务与组结构Groups and Tasks在 lm-evaluation-harness 中Belebele 被组织为一个组group与 122 个语言子任务tasks全部采用loglikelihood-based multiple-choice scoring基于对数似然的多选题打分进行评测。2.1 组belebele组名belebele包含 Belebele 数据集全部 122 种语言的任务评测方法遵循MMLU 原始实现的方法论即通过每组语言的平均准确率聚合得到整体结果。该组的定义位于 lm_eval/tasks/belebele/_belebele.yaml其结构要点如下group: belebele声明组名task:下列出全部 122 个语言子任务如belebele_acm_Arab、belebele_eng_Latn、belebele_zho_Hans等aggregate_metric_list:定义了组的聚合指标对acc与acc_norm两个指标分别按mean均值聚合并设置weight_by_size: true即按各语言子任务的样本规模加权平均metadata: version: 0.1组配置的版本号。2.2 子任务belebele_{language}每个语言变体对应一个独立任务命名遵循belebele_{language}约定其中{language}采用 FLORES-200 的语言-文字代码ISO 639-3 语言码 文字码例如belebele_eng_Latn英语拉丁文字belebele_zho_Hans简体中文belebele_arb_Arab阿拉伯语阿拉伯文字belebele_hin_Deva印地语天城文字。每个语言任务对应目录下独立的一个 YAML 文件例如 belebele_eng_Latn.yaml、belebele_zho_Hans.yaml、belebele_arb_Arab.yaml。仓库中评测的变体为0-shot 或 few-shot少样本评测并使用英文指令English Instructions。三、任务配置深度解析_default_template_yaml所有 122 个语言任务的公共配置都集中在一个共享模板文件 lm_eval/tasks/belebele/_default_template_yaml 中各语言 YAML 仅通过include: _default_template_yaml继承它并覆盖语言相关的少量字段。该模板是整个 Belebele 评测的灵魂逐项解析如下dataset_path: facebook/belebele fewshot_config: sampler: first_n output_type: multiple_choice should_decontaminate: true doc_to_decontamination_query: {{question}} doc_to_text: P: {{flores_passage}}\nQ: {{question.strip()}}\nA: {{mc_answer1}}\nB: {{mc_answer2}}\nC: {{mc_answer3}}\nD: {{mc_answer4}}\nAnswer: doc_to_choice: [A, B, C, D] doc_to_target: {{[1, 2, 3, 4].index(correct_answer_num)}} metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: true metadata: version: 0.0配置项取值含义与影响dataset_pathfacebook/belebele数据集在 Hugging Face Hub 上的仓库 ID评测时按需自动下载加载。fewshot_config.samplerfirst_n少样本示例采样器采用取前 N 条策略从fewshot_split中按顺序选取示例保证可复现。output_typemultiple_choice输出类型为多选题框架将按选择题方式计算各选项的 loglikelihood 并取最高者作为预测。should_decontaminatetrue开启数据去污染decontamination流程用于检查评测数据是否与模型训练数据重叠。doc_to_decontamination_query{{question}}去污染查询使用问题文本本身。doc_to_text见上把样本渲染成模型输入 prompt依次呈现 FLORES 短文P:、问题Q:与 A/B/C/D 四个选项最后以Answer:引导模型作答。doc_to_choice[A, B, C, D]四个选项的标签框架将对每个选项计算条件 loglikelihood。doc_to_target{{[1, 2, 3, 4].index(correct_answer_num)}}将数据集中的正确答案编号1/2/3/4映射为选项索引0/1/2/3与doc_to_choice对应。metric_listacc、acc_norm评测指标为原始准确率与归一化准确率详见第五节均按均值聚合、越大越好。各语言子任务如 belebele_eng_Latn.yaml只需四个字段即可复用模板dataset_name: eng_Latn # 指定语言-文字子集 fewshot_split: test # 少样本示例取自 test 划分 include: _default_template_yaml # 继承公共模板 task: belebele_eng_Latn # 任务名 test_split: test # 评测划分四、配置生成脚本_generate_configs.py由于需要为 122 种语言分别维护任务仓库提供了自动化生成脚本 lm_eval/tasks/belebele/_generate_configs.py用于从一份基础 YAML 批量产出全部语言子任务与组配置。其工作流程为获取语言列表调用 Hugging Face Datasets Server 的 splits APIhttps://datasets-server.huggingface.co/splits?datasetfacebook/belebele查询facebook/belebele数据集包含的所有 split过滤默认划分跳过名中包含default的 split其余每个 split即每种语言-文字变体生成一个子任务 YAML批量生成子任务每个子任务 YAML 包含include指向基础模板文件名、taskbelebele_{lang}、test_split与fewshot_split均设为该语言生成组配置汇总全部语言任务到_belebele.yaml并写入aggregate_metric_listacc、acc_norm的均值聚合与版本号。脚本还支持两个可选参数--task_prefix为任务名添加前缀如用于区分不同 prompt 变体见下文第六节的 afrobench 用法--cot_prompt_path指定 CoT思维链prompt JSON 文件路径当前默认模板未使用。例如基于当前模板重新生成全部配置的命令形态为python lm_eval/tasks/belebele/_generate_configs.py \ --base_yaml_path lm_eval/tasks/belebele/_default_template_yaml \ --save_prefix_path lm_eval/tasks/belebele/belebele仓库中 122 个belebele_{lang}.yaml与_belebele.yaml即由此类脚本流程产出并提交保证了各语言配置的高度一致性与可维护性。五、指标含义acc 与 acc_normBelebele 任务与 MMLU 方法论一致使用两个指标acc原始准确率模型预测选项与正确答案一致的比例。预测基于各选项的 loglikelihood 比较得出。acc_norm长度归一化准确率将各选项的条件 loglikelihood 按其 token 长度归一化后再比较用于缓解模型对较短选项的系统性偏好在多选题评测中通常更为稳健。两个指标均以mean聚合、higher_is_better: true。在组级别belebele_belebele.yaml中两个指标均设置weight_by_size: true按子任务规模加权后再求平均从而得到全局的加权多语言平均分。六、运行评测命令行实操6.1 运行单个语言任务使用lm_evalCLI 评测英语任务例如lm_eval --model hf \ --model_args pretrainedmeta-llama/Llama-3.2-1B \ --tasks belebele_eng_Latn \ --device cuda \ --batch_size auto6.2 运行整个组全部 122 语言lm_eval --model hf \ --model_args pretrainedmeta-llama/Llama-3.2-1B \ --tasks belebele \ --device cuda \ --batch_size auto--tasks belebele会加载_belebele.yaml中列出的全部 122 个语言子任务并在评测结束后输出每个子任务的acc/acc_norm以及组级加权聚合结果便于直接观察模型在不同资源语言上的表现差异。6.3 使用本地模型目录与量化参数--model_args支持所有 Hugging Face 加载参数例如指定本地路径与低精度lm_eval --model hf \ --model_args pretrained./models/your-model,trust_remote_codeTrue,dtypebfloat16 \ --tasks belebele \ --device cuda \ --batch_size auto七、仓库内的衍生变体除独立目录外Belebele 任务配置还被其他任务族复用。例如 lm_eval/tasks/afrobench/belebele/ 下就包含了面向非洲语言的 Belebele 子集afrobench组其中通过_generate_configs.py的--task_prefix机制派生了prompt_1、prompt_2等多 prompt 变体如 belebele_afr.yaml、belebele_eng.yaml 等用于评估不同 prompt 设计对多语言理解的影响。这说明了本任务目录的配置模板与生成脚本具备良好的可复用性。八、自定义与扩展建议若要在现有基础上扩展例如新增 CoT 评测变体或调整 prompt可以遵循仓库既有的模板 继承模式复制_default_template_yaml或直接修改doc_to_text中P: ... / Q: ... / Answer:的渲染格式用_generate_configs.py的--save_prefix_path与--task_prefix生成一套新的语言任务与组配置用lm_eval --tasks 新组名验证配置可正常加载并输出指标。在修改前可通过lm_eval --tasks belebele --limit 10之类的小规模限流参数先行验证确认 prompt 渲染与评分逻辑符合预期后再进行全量评测。参考与延伸阅读Belebele 任务 READMElm_eval/tasks/belebele/README.md公共任务模板lm_eval/tasks/belebele/_default_template_yaml组配置lm_eval/tasks/belebele/_belebele.yaml语言子任务示例belebele_eng_Latn.yaml、belebele_zho_Hans.yaml、belebele_arb_Arab.yaml配置生成脚本lm_eval/tasks/belebele/_generate_configs.py衍生变体lm_eval/tasks/afrobench/belebele/【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考