ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 lm-evaluation-harness 评测 MELA 多语言语言可接受性基准

使用 lm-evaluation-harness 评测 MELA 多语言语言可接受性基准 使用 lm-evaluation-harness 评测 MELA 多语言语言可接受性基准【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness导读MELAMultilingual Evaluation of Linguistic Acceptability是当前规模最大的多语言语言可接受性linguistic acceptability基准之一涵盖 46K 样本、10 种语言。本文以 lm_eval/tasks/mela/README.md 为骨架结合 lm_eval/tasks/mela 目录下的 YAML 配置与 lm_eval/api/metrics.py 中的指标注册实现系统讲解该基准在 lm-evaluation-harness 中的任务组织方式、配置字段含义、评测指标原理以及如何在本地实际运行 MELA 评测。读完本文你将掌握mela组及其 10 个语言子任务的定义结构理解multiple_choice输出类型与 MCC 指标的配合机制并能直接复现该基准的评测命令。一、MELA 基准背景与任务定位1.1 什么是语言可接受性评测语言可接受性linguistic acceptability任务要求模型判断给定句子是否违反某种语言学约束若句子违反约束则标记为 unacceptable不可接受否则标记为 acceptable可接受。这是语法能力评测中的经典范式最著名的同类基准是英文的 BLiMP 与 SuperGLUE 中的 CoLA。MELA 论文arXiv:2311.09033ACL 2024将这一范式扩展到多语言场景构建了包含约 46K 样本、覆盖 10 种语言分属多个语系的基准是迄今最大的多语言语言可接受性基准。论文核心发现包括GPT-4o 展现出强多语言能力超过微调后的 XLM-R开源多语言模型与之相比存在明显差距可接受性判断的跨语言迁移并不平凡仅 500 条冰岛语微调样本即可在完全无关的语言中文上带来 23 的 MCC 性能提升在 MELA 上训练能提升 XLM-R 在句法相关任务上的表现。事实边界说明以上结论来自 README.md 转述的论文摘要本仓库并不包含 46K 样本数据本身数据通过 Hugging Face 数据集远程加载见下文dataset_path配置。1.2 基准的引用信息在论文或报告中引用该基准时README 提供了官方 BibTeX 条目作者 Ziyin Zhang 等ACL 2024 长文。完整条目见 lm_eval/tasks/mela/README.md 的 Citation 小节此处摘录关键字段zhang2023mela、title 为 MELA: Multilingual Evaluation of Linguistic Acceptability、发表于 ACL 2024曼谷DOI 指向 arXiv:2311.09033。二、任务与分组结构mela组下的 10 个语言子任务2.1 分组清单README 定义了 1 个组group和 10 个任务task组Groupmelamultilingual evaluation of linguistic acceptability 的聚合组。任务Tasks任务名语言mela_enEnglish英语mela_zhChinese中文mela_itItalian意大利语mela_ruRussian俄语mela_deGermany德语mela_frFrench法语mela_esSpanish西班牙语mela_jaJapanese日语mela_arArabic阿拉伯语mela_isIcelandic冰岛语注意README 任务列表末尾将 Icelandic 误写为mela_ar而仓库目录中实际存在的冰岛语任务文件为 mela_is.yaml。同样地分组文件 _mela.yaml 的task列表中mela_ar被重复列出两次。按当前仓库实际文件判断应视为笔误真实任务集合为上述 10 个语言文件。2.2 分组聚合配置解析组定义位于 _mela.yaml内容如下group: mela task: - mela_en - mela_zh - mela_it - mela_ru - mela_de - mela_fr - mela_es - mela_ja - mela_ar - mela_ar aggregate_metric_list: - metric: mcc weight_by_size: False metadata: version: 1关键点aggregate_metric_list声明组级聚合指标为mcc且weight_by_size: False—— 即组结果取各语言子任务 MCC 的简单平均不按样本量加权metadata.version: 1用于结果文件results.json的版本追踪与缓存 key 管理组内任务顺序即结果中展示的顺序。三、任务配置核心以mela_en为基座模板3.1 基座配置逐字段拆解英语任务 mela_en.yaml 是其余 9 个语言任务的模板完整配置如下task: mela_en dataset_path: Geralt-Targaryen/MELA dataset_name: en training_split: train validation_split: dev test_split: test output_type: multiple_choice doc_to_text: Sentence: {{sentence}}\nDetermine whether this sentence is acceptable or unacceptable?\nA. Acceptable\nB. Unacceptable\nAnswer: doc_to_choice: [A, B] doc_to_target: {{[B, A][label]}} description: Determine whether the following sentence(s) violate certain linguistic constraints. If yes, then it is \unacceptable\; otherwise, \acceptable\.\n\n fewshot_split: dev fewshot_config: sampler: first_n metric_list: - metric: mcc higher_is_better: true逐字段解读dataset_path: Geralt-Targaryen/MELAHugging Face 数据集标识评测时由datasets库在线加载无需本地准备数据文件dataset_name: en数据集内的子集configuration名称对应语言training_split / validation_split / test_split分别映射数据集的train/dev/test划分。test_split是实际评测时使用的划分output_type: multiple_choice任务输出类型为多选。这意味着评测时对每个候选选项分别计算对数似然取概率最大者作为模型答案。该字段决定了指标注册表中可用的度量范围mcc正是注册为output_typemultiple_choice见下文第四节doc_to_text将样本转换为输入 prompt 的 Jinja2 模板注入数据集字段sentence固定使用 A/B 两个选项要求模型判断句子可接受性。最终 prompt 为Sentence: {句子}\nDetermine whether this sentence is acceptable or unacceptable?\nA. Acceptable\nB. Unacceptable\nAnswer:doc_to_choice: [A, B]两个候选答案文本与doc_to_target的下标一一对应doc_to_target: {{[B, A][label]}}标签映射逻辑。数据集中label字段约定 0 表示不可接受、1 表示可接受而选项顺序是 AAcceptable、BUnacceptable因此这里用[B, A][label]反转映射label0不可接受→ 选项Blabel1可接受→ 选项Adescription附加在 prompt 前的任务说明few-shot 场景下会插入到示例之前fewshot_split: devfew-shot 示例从dev划分中采样fewshot_config.sampler: first_n采用顺序采样策略即取 dev 集前 N 条作为示例N 由 CLI 的--num_fewshot控制默认 0metric_list声明任务级指标mcchigher_is_better: true表示数值越大越好。3.2 语言变体如何复用模板除英语外其余 9 个任务全部通过include机制继承 mela_en.yaml只覆盖差异字段。例如中文任务 mela_zh.yamlinclude: mela_en.yaml task: mela_zh dataset_name: zh意大利语、法语、西班牙语、俄语任务与之相同仅dataset_name不同it、fr、es、ru。而阿拉伯语、冰岛语、日语、德语任务额外将training_split置为null例如 mela_ar.yamlinclude: mela_en.yaml task: mela_ar dataset_name: ar training_split: nulltraining_split: null表明这些语言在数据集中没有对应的train划分或无需使用。由于fewshot_split指向dev且评测走test划分training_split置空不影响 few-shot 评测流程。从源码结构看include合并逻辑位于 lm_eval/tasks/_yaml_loader.pyinclude 遵循子配置覆盖父配置的合并语义因此这种写法能保持其余字段prompt 模板、选项、指标完全一致。四、MCC 指标的底层实现MELA 采用Matthews Correlation CoefficientMCC马修斯相关系数作为核心指标。它在 lm-evaluation-harness 中的注册实现位于 lm_eval/api/metrics.pyregister_metric( metricmcc, higher_is_betterTrue, output_typemultiple_choice, aggregationmatthews_corrcoef, ) def mcc_fn(items): # This is a passthrough function return items结合注册装饰器可以确认三个关键事实mcc仅对multiple_choice输出类型有效注册时声明output_typemultiple_choice与 MELA 任务的输出类型严格匹配。若将mcc用在generate_until等任务上会触发指标与输出类型不匹配的错误higher_is_betterTrue与各语言 YAML 中metric_list的声明一致聚合方式为matthews_corrcoef任务级mcc_fn只是一个透传函数passthrough真正计算发生在聚合阶段调用matthews_corrcoef将模型预测标签与真实标签比较得出 -1 到 1 之间的相关系数1 为完全一致0 为随机-1 为完全相反。由于任务输出是 A/B 二选一MCC 适用于二分类评价且对类别不平衡比准确率更稳健。组级聚合时_mela.yaml 通过aggregate_metric_list声明weight_by_size: False因此mela组的整体分数是 10 个语言 MCC 的等权平均。五、本地运行 MELA 评测5.1 安装与加载确保已安装 lm-evaluation-harness例如pip install -e .依赖见 pyproject.toml评测时会自动通过datasets从 Hugging Face 加载Geralt-Targaryen/MELA数据集。5.2 运行命令评测整个mela组全部 10 种语言lm_eval --model hf \ --model_args pretrainedMODEL_NAME \ --tasks mela \ --batch_size auto \ --output_path results/mela其中MODEL_NAME替换为 Hugging Face 模型标识如Qwen/Qwen2.5-7B。只评测特定语言lm_eval --model hf \ --model_args pretrainedMODEL_NAME \ --tasks mela_en,mela_zh \ --batch_size auto \ --output_path results/mela使用 few-shot 评测从dev划分取前 N 条作为示例lm_eval --model hf \ --model_args pretrainedMODEL_NAME \ --tasks mela \ --num_fewshot 5 \ --output_path results/mela_fs5--num_fewshot与 mela_en.yaml 中fewshot_config.sampler: first_n配合决定从 dev 集顺序截取的示例条数。5.3 结果解读运行结束后--output_path目录下会生成results.json含逐任务明细与按分组的汇总结果。关注点任务级每个mela_*子任务报告mcc及其标准误stdderr组级mela组报告聚合后的mcc10 语言等权平均。若需对比不同语言之间的模型表现差异可分别运行单语言命令并比对 MCC 数值。由于doc_to_text、doc_to_choice等模板对所有语言完全一致通过 include 继承各语言结果具有直接可比性。六、延伸在现有评测中复用 MELA 配置MELA 的 YAML 组织方式是 lm-evaluation-harness 任务开发的典型范式值得复用基座 变体模式把公共字段数据集路径、prompt、指标放在基座文件语言变体用include继承并只覆盖dataset_name等少量字段既避免重复又保证模板一致training_split: null按语言裁剪对缺失训练划分的语言单独覆盖不影响 few-shot 与评测流程组级聚合用aggregate_metric_listweight_by_size: False实现等权聚合适合各语言样本量不均衡、但希望语言等权的评测需求。如需进一步了解任务 YAML 的完整字段语义可参阅 docs/task_guide.md 与 docs/new_task_guide.md。七、注意事项与已知问题README 笔误lm_eval/tasks/mela/README.md 任务列表中 Icelandic 被误写为mela_ar实际为mela_is_mela.yaml 的task列表存在mela_ar重复条目。运行--tasks mela时以实际存在的 YAML 文件为准mela_is.yaml 存在而重复的mela_ar不会产生额外任务数据为远程加载评测需要联网访问 Hugging Face 数据集Geralt-Targaryen/MELA指标约束mcc仅适用于multiple_choice输出类型MELA 的配置与之完全匹配切勿将该指标直接套用到生成式任务上。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表