拓冰建站拓冰建站
首页 / 资讯中心 / 正文

使用 lm-evaluation-harness 的 arc_mt 任务族评估多语言机器翻译版 ARC Challenge

使用 lm-evaluation-harness 的 arc_mt 任务族评估多语言机器翻译版 ARC Challenge【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness本指南完整讲解 lm-evaluation-harness 仓库中arc_mt任务族的实现原理与使用方法。arc_mt是 ARC ChallengeAI2 Reasoning Challenge机器翻译版本的多语言评测任务集合通过 LumiOpen/arc_challenge_mt 等数据集将英文科学推理题机器翻译为多种欧洲语言用于评估语言模型在非英语环境下的科学推理能力。阅读本文后你将掌握该任务族 12 个语言子任务的组织结构、YAML 配置字段的语义、去污染decontamination机制以及如何用lm-evalCLI 一键运行与验证这些任务。一、arc_mt 是什么机器翻译版 ARC Challengearc_mtMachine-Translated ARC Challenge是 lm-evaluation-harness 中用于支持机器翻译版 ARC Challenge 评测的任务族。ARCAI2 Reasoning Challenge原本是面向英文科学考试题的多选题数据集其 Challenge 子集以高难度著称要求模型具备科学常识推理能力。arc_mt的目标是把这类评测推广到更多语言以便衡量模型在非英文语种上的推理表现。从该任务族的说明文档看其初始数据集覆盖了一系列欧洲语言并计划在未来继续扩充语种。因此arc_mt并不是单一任务而是一组按语言划分、共享同一套评测模板的子任务集合。二、任务族结构与 12 个语言子任务arc_mt任务族位于仓库的 lm_eval/tasks/arc_mt/ 目录下共包含 13 个文件1 份 README 说明文档与 12 个语言配置文件。每个文件对应一种语言配置文件语言数据集arc_challenge_mt_da.yaml丹麦语DanishLumiOpen/arc_challenge_mtdaarc_challenge_mt_de.yaml德语GermanLumiOpen/arc_challenge_mtdearc_challenge_mt_el.yaml希腊语GreekLumiOpen/arc_challenge_mtelarc_challenge_mt_es.yaml西班牙语SpanishLumiOpen/arc_challenge_mtesarc_challenge_mt_fi.yaml芬兰语FinnishLumiOpen/arc_challenge_mtfiarc_challenge_mt_hu.yaml匈牙利语HungarianLumiOpen/arc_challenge_mthuarc_challenge_mt_is.yaml冰岛语Icelandicmideind/icelandic-arc-challengearc_challenge_mt_it.yaml意大利语ItalianLumiOpen/arc_challenge_mtitarc_challenge_mt_nb.yaml挪威博克马尔语Norwegian BokmålLumiOpen/arc_challenge_mtnbarc_challenge_mt_pl.yaml波兰语PolishLumiOpen/arc_challenge_mtplarc_challenge_mt_pt.yaml葡萄牙语PortugueseLumiOpen/arc_challenge_mtptarc_challenge_mt_sv.yaml瑞典语SwedishLumiOpen/arc_challenge_mtsv2.1 主配置与“继承”模式这 12 个文件并非各自重复完整的任务定义而是采用 lm-evaluation-harness 常见的 YAML 继承机制以一个“主模板”加多个“薄壳子任务”的形式组织。其中 arc_challenge_mt_fi.yaml 是完整的主配置承担了任务的全部定义。其余 11 个语言文件则只做三件事继承主配置、声明自己的任务名、覆盖数据集的语言标识。例如 arc_challenge_mt_da.yaml 的完整内容只有 3 行include: arc_challenge_mt_fi.yaml task: arc_challenge_mt_da dataset_name: dainclude指示配置加载器先引入arc_challenge_mt_fi.yaml中定义的全部字段task覆盖为本语言的任务标识符如arc_challenge_mt_dadataset_name覆盖 Hugging Face 数据集的语言子集名如da。这种“一主多从”的结构让新增语言子任务只需几行配置而无需复制整套模板既降低了维护成本也保证了所有语言使用完全一致的提示词模板与指标口径使跨语言分数具有可比性。2.2 一个特例冰岛语arc_challenge_mt_is.yaml 是唯一的例外——它没有使用include继承而是完整写入了全部配置并且数据集源不同tag: - arc_challenge_mt task: arc_challenge_mt_is dataset_path: mideind/icelandic-arc-challenge output_type: multiple_choice training_split: train validation_split: validation test_split: test doc_to_text: Question: {{question}}\nAnswer: doc_to_target: {{choices.label.index(answerKey)}} doc_to_choice: {{choices.text}} should_decontaminate: true doc_to_decontamination_query: Question: {{question}}\nAnswer: metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: true metadata: version: 1.0冰岛语子任务的数据来自冰岛语社区维护的mideind/icelandic-arc-challenge数据集而非统一机器翻译管道产出的LumiOpen/arc_challenge_mt。这说明arc_mt任务族对“机器翻译”持开放定义——只要数据是 ARC Challenge 的非英文版本即可纳入无论其来源是机翻流水线还是社区人工整理。三、主配置逐字段解析从数据集到提示词与指标主配置 arc_challenge_mt_fi.yaml 完整定义了一个标准的多项选择multiple choice评测任务。逐字段说明如下3.1 标签与数据集来源tag: - arc_challenge_mt task: arc_challenge_mt_fi dataset_path: LumiOpen/arc_challenge_mt dataset_name: fitag为任务打上arc_challenge_mt标签。在 lm-evaluation-harness 中标签允许用lm-eval run --tasks arc_challenge_mt一次性运行整族任务详见下文第五节无需逐个列举语言名。dataset_pathHugging Face 数据集标识符LumiOpen/arc_challenge_mt。dataset_name数据集的语言子集fi即芬兰语子集。3.2 评测类型与数据切分output_type: multiple_choice training_split: train validation_split: validation test_split: testoutput_type: multiple_choice告诉评测框架按“多项选择”方式计算 loglikelihood即分别计算每个候选选项作为续写的概率取概率最高者为模型答案。三个*_split字段分别指定训练、验证与测试切分。arc_mt 任务族保留了完整的train切分尽管推理评测通常只使用test这为需要 few-shot 示例或需要微调/校准的场景留出了空间。3.3 提示词模板与答案提取doc_to_text: Question: {{question}}\nAnswer: doc_to_target: {{choices.label.index(answerKey)}} doc_to_choice: {{choices.text}}这三行是该任务提示词构造的核心采用 Jinja2 模板语法doc_to_text构造发给模型的提示词形如Question: 问题文本\nAnswer:。{{question}}来自数据集中每条样本的question字段。doc_to_choice定义选项列表。{{choices.text}}从数据集的choices字段取出全部候选文本作为多项选择评测时的候选续写串。doc_to_target将正确答案映射为选项索引。数据集通常以answerKey如B标记正确答案{{choices.label.index(answerKey)}}先取出choices.label这一组选项字母再用.index(answerKey)求出正确答案字母对应的整数下标供评测框架与模型预测结果比对。3.4 去污染Decontamination支持should_decontaminate: true doc_to_decontamination_query: Question: {{question}}\nAnswer:should_decontaminate: true开启训练数据污染检测防止评测样本出现在模型预训练语料中导致分数虚高。doc_to_decontamination_query指定用于去污染比对的核心文本。这里复用了问题文本配合仓库 decontamination 相关的工具链参见 decontamination 文档执行 n-gram 匹配检查。3.5 指标定义metric_list: - metric: acc aggregation: mean higher_is_better: true - metric: acc_norm aggregation: mean higher_is_better: trueacc标准准确率直接比较模型最高概率选项与正确答案。acc_norm归一化准确率用各选项续写概率除以选项的 token 长度后再比较。这一指标对选项长度不均衡的多选题更公平也是 ARC 类任务上普遍报告的主指标。两者都以mean聚合、higher_is_better: true最终输出所有样本的平均值。3.6 版本元数据metadata: version: 1.0metadata.version是任务的配置版本号用于结果缓存与复现追踪——修改任务定义时应递增版本号避免使用旧缓存得出错误结果。四、提示词与评测流程的底层原理arc_mt的评测链路与仓库中其他multiple_choice任务如原版 arc 任务完全一致。从源码结构看评测请求由模型后端如 huggingface.py以loglikelihood请求执行对每个样本框架将doc_to_text生成的提示词分别与doc_to_choice中的每个选项拼接计算拼接串的条件概率acc取概率最高的选项acc_norm则先按选项 token 数归一化再取最高。这意味着arc_mt各语言子任务的评测行为与英文 ARC 完全同构唯一的差异是问题与选项文本被翻译成了目标语言。因此任何在英文 ARC 上可用的技巧few-shot 示例、提示词改写、答案抽取过滤等都可直接迁移到arc_mt。五、运行与验证lm-eval CLI 实战arc_mt任务族可直接通过 lm-evaluation-harness 的 CLI 运行。该仓库采用lm-eval命令 子命令的入口设计见 harness.py核心子命令为run、ls、validate。5.1 列出任务ls运行单个语言子任务前可先用ls确认任务名与标签已正确注册lm-eval ls tasks | grep arc_challenge_mt预期输出应包含arc_challenge_mt_da、arc_challenge_mt_fi、arc_challenge_mt_is等 12 个子任务名。5.2 运行单个语言子任务run以芬兰语为例用 Hugging Face 模型评测lm-eval run \ --model hf \ --model_args pretrainedEleutherAI/pythia-14m \ --tasks arc_challenge_mt_fi \ --num_fewshot 0 \ --device cpu参数说明--model hf使用 Hugging Face Transformers 后端更多后端vLLM、SGLang、GGUF、API 模型等可参考 model_guide.md。--model_args pretrained...指定模型权重仓库测试用例如 test_huggingface.py中常用pythia-14m这类小模型做功能验证。--tasks arc_challenge_mt_fi任务标识符可直接换成任一语言子任务名。--num_fewshot 00-shot 评测ARC 相关评测也可配合train切分构造 few-shot 示例。--device cpu无 GPU 环境时指定 CPU评测速度较慢但可验证全流程。5.3 按标签一次运行全部语言run tag利用tag: [arc_challenge_mt]可以一条命令评测全部 12 种语言得到完整的跨语言对比结果lm-eval run \ --model hf \ --model_args pretrainedEleutherAI/pythia-14m \ --tasks arc_challenge_mt \ --num_fewshot 0 \ --device cpu此时评测框架会展开标签arc_challenge_mt下所有子任务分别输出各语言的acc与acc_norm方便直接比较模型在不同欧洲语言上的推理能力差异。5.4 校验配置validate修改或新增语言子任务后可用validate子命令检查 YAML 配置的合法性lm-eval validate --tasks arc_challenge_mt该命令会校验include引用是否有效、字段拼写、doc_to_*模板能否在数据上求值等是新增语言前必做的检查。任务定义的完整字段说明可参考 task_guide.md 与 new_task_guide.md。六、扩展新语言与注意事项arc_mt的设计目标是在未来不断扩充语种。基于上述结构新增一种语言的成本极低可参照以下模式确认目标语言的 ARC Challenge 数据已发布到 Hugging Face如加入LumiOpen/arc_challenge_mt的新语言子集在 lm_eval/tasks/arc_mt/ 下新建arc_challenge_mt_语言码.yaml内容仅三行include: arc_challenge_mt_fi.yaml、task: arc_challenge_mt_语言码、dataset_name: 语言码运行lm-eval validate --tasks arc_challenge_mt_语言码校验若数据来自独立数据集而非统一机翻管道则仿照冰岛语子任务完整重写配置并替换dataset_path。需要注意的实践要点指标解读优先参考acc_norm它对选项长度差异更稳健两种指标均可在各语言之间横向对比。few-shot 一致性由于所有语言共享同一模板与指标配置跨语言对比的结果差异主要反映模型的多语言能力而非评测口径差异。去污染开关should_decontaminate: true默认开启若需关闭可比对其他任务的配置方式进行覆盖但在报告结果时建议保留以保证分数的可信度。七、小结arc_mt是 lm-evaluation-harness 中一个组织精巧、易于扩展的多语言评测任务族以 arc_challenge_mt_fi.yaml 为主模板通过 YAMLinclude继承机制派生出丹麦语、德语、希腊语、西班牙语、芬兰语、匈牙利语、冰岛语、意大利语、挪威语、波兰语、葡萄牙语、瑞典语共 12 个语言子任务全部任务采用统一的multiple_choice评测类型、acc/acc_norm双指标与内置去污染机制。借助lm-eval run --tasks arc_challenge_mt一行命令即可获得模型在十余种欧洲语言上的 ARC Challenge 推理表现对比是研究多语言模型科学推理能力的直接入口。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门