在 lm-evaluation-harness 中评测 WMT16 机器翻译:T5 Prompt 变体任务的配置与实现解析
2026/9/15 11:27:18 网站建设 项目流程

在 lm-evaluation-harness 中评测 WMT16 机器翻译:T5 Prompt 变体任务的配置与实现解析

【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

导读

本文聚焦 lm-evaluation-harness 仓库中的wmt2016任务族,深入解析其唯一的 T5 Prompt 风格变体wmt-ro-en-t5-prompt(罗马尼亚语→英语翻译评测)。读者将掌握:该任务的论文出处与引用格式、YAML 配置文件中每个字段的实际含义、自定义 BLEU 指标函数的底层实现,以及它与此仓库中另一套 GPT-3 Prompt 风格 WMT16 任务的差异,从而能够在自己的实验中正确选用与扩展翻译类评测任务。

WMT16 任务背景与引用信息

WMT16(Conference on Machine Translation,2016 年首届会议)是机器翻译领域广为人知的共享任务基准。lm-evaluation-harness 在 wmt2016 任务目录 的 README 中完整保留了该基准的原始出处信息:

  • 论文标题Findings of the 2016 Conference on Machine Translation,发表于 ACL 主办的首届机器翻译会议(Proceedings of the First Conference on Machine Translation),2016 年 8 月,柏林,正文页码 131–198;
  • 数据来源:任务配置直接指向 Hugging Face 的wmt/wmt16数据集。

该 README 同时给出了标准的 BibTeX 引用,供学术论文引用使用:

@InProceedings{bojar-EtAl:2016:WMT1, author = {Bojar, Ondřej and Chatterjee, Rajen and Federmann, Christian and Graham, Yvette and Haddow, Barry and Huck, Matthias and Jimeno Yepes, Antonio and Koehn, Philipp and Logacheva, Varvara and Monz, Christof and Negri, Matteo and Neveol, Aurelie and Neves, Mariana and Popel, Martin and Post, Matt and Rubino, Raphael and Scarton, Carolina and Specia, Lucia and Turchi, Marco and Verspoor, Karin and Zampieri, Marcos}, title = {Findings of the 2016 Conference on Machine Translation}, booktitle = {Proceedings of the First Conference on Machine Translation}, month = {August}, year = {2016}, address = {Berlin, Germany}, publisher = {Association for Computational Linguistics}, pages = {131--198} }

从源码结构看,wmt2016目录遵循了本仓库"一个任务族一个子目录"的组织惯例(与 translation 任务族 并列),目录内包含三个文件:README.md、任务配置 ro_en-t5_prompt.yaml 与自定义指标实现 metrics.py。

任务族结构与变体说明

README 中明确列出当前wmt2016任务族下的唯一任务:

wmt-ro-en-t5-prompt:使用 T5 提示模板的 WMT16(罗马尼亚语→英语)评测任务。

这个命名包含三层信息:语言方向为ro-en(罗马尼亚语→英语),数据来自 WMT16,prompt 风格复刻自 T5 模型的翻译提示模板。任务配置见 ro_en-t5_prompt.yaml,完整内容如下:

task: wmt-ro-en-t5-prompt dataset_path: wmt/wmt16 dataset_name: ro-en training_split: train validation_split: validation output_type: generate_until doc_to_text: "translate English to Romanian: {{translation.en}}" doc_to_target: "{{translation.ro}}" metric_list: - metric: wer aggregation: mean higher_is_better: false - metric: !function metrics.bleu aggregation: !function metrics.agg_bleu higher_is_better: true metadata: version: 1.0

该变体与 translation 任务族 中生成的wmt16-ro-en任务形成对照:后者面向 GPT-3 式翻译评测,使用Romanian phrase: ... \n English phrase:的提示模板,并挂载gpt3_translation_benchmarks标签;而wmt-ro-en-t5-prompt使用 T5 风格模板,独立成族。两者数据同源(wmt/wmt16ro-en子集),差异完全体现在提示模板与评测指标上。

字段逐项解读

  • task:任务注册名,CLI 与 Python API 均以该名称引用任务;
  • dataset_path/dataset_name:Hugging Face 数据集的路径与子集名,即wmt/wmt16ro-en语言对;
  • training_split/validation_split:明确训练集与验证集划分。注意该配置未声明test_split,与 translation 公共配置 wmt_common_yaml(其中定义了test_split: test)不同,从配置结构可以推断该变体以验证集为主要评测对象;
  • output_type: generate_until:自由生成式评测,模型需自回归生成目标译文,直到遇到终止符为止;
  • doc_to_text/doc_to_target:从数据样本中抽取提示与标准答案的 Jinja2 模板。此处直接读取数据集中translation字段下的en/ro键;
  • metric_list:评测指标列表,含内置wer与自定义!function引用的 BLEU;
  • metadata.version:任务 schema 版本号。

自定义 BLEU 指标的底层实现

metric_list中通过!function语法将 metrics.py 中的 Python 函数注入为指标,这是本仓库 YAML 任务体系提供的函数引用机制。其实现只有 10 行:

import evaluate def bleu(predictions, references): return (predictions[0], references[0]) def agg_bleu(items): bleu_fn = evaluate.load("bleu") predictions, references = zip(*items) return bleu_fn.compute(predictions=predictions, references=references)["bleu"]

其工作方式体现了 lm-evaluation-harness 的"逐样本指标 + 聚合指标"两段式设计:

  • 逐样本阶段bleu(predictions, references)接收模型输出与参考答案,直接原样打包返回。之所以"不做计算",是因为 BLEU 作为语料级指标依赖多个句子的整体统计(n-gram 精度与惩罚项),需要在聚合阶段一次性计算;
  • 聚合阶段agg_bleu(items)通过evaluate.load("bleu")加载 Hugging Face evaluate 库的 BLEU 实现,对全部样本统一计算后返回bleu分数,并在 YAML 中声明higher_is_better: true

该模式与仓库内置的逐样本指标形成互补——例如内置的bleu实现位于 api/metrics.py,而 WER(词错误率,higher_is_better: false,聚合方式mean)则直接使用 harness 内置指标,无需自定义函数。

需要指出的是,本变体的 WER 聚合配置(aggregation: mean)会先对逐样本 WER 求平均,这与 BLEU 的整体计算语义并不完全相同,评测时应对照参考理解两者的统计口径差异。

与 GPT-3 风格 WMT16 任务的差异与生成机制

translation 任务族 的 README 记录了gpt3_translation_taskswmt14wmt16wmt20iwslt2017等分组。其中wmt16分组下的ro-ende-en等任务并非手写,而是由 utils.py 脚本生成的:

  • 脚本内置gpt3_translation_benchmarks = {"wmt14": ["fr-en"], "wmt16": ["ro-en", "de-en"]},为每个语言对双向生成 YAML;
  • 生成模板使用{source} phrase: ... \n {target} phrase:的 GPT-3 风格提示,并自动写入doc_to_text/doc_to_target
  • 语言全名解析依赖pycountry库(pip install lm-eval[multilingual]pip install -e .[multilingual]安装);
  • 生成的 YAML 通过include: wmt_common_yaml继承公共配置,其中定义了output_type: generate_untilfewshot_split: validationgeneration_kwargsuntil: ["\n"]do_sample: falsetemperature: 0.0)以及bleuterchrf三指标。

相比之下,wmt2016/ro_en-t5_prompt.yaml是独立手写的变体:它不继承公共配置,改以 T5 风格的translate English to Romanian: {{translation.en}}模板,并选用 WER + 自定义 BLEU 的指标组合。两类任务并存恰好体现了本仓库"同一基准、多套 prompt 风格、多套指标"的评测组织方式,便于研究者隔离 prompt 模板对翻译质量的影响。

如何运行该任务

在安装并激活 lm-evaluation-harness 后,可通过 CLI 直接评测(示例模型参数可按需替换):

lm_eval --model hf \ --model_args pretrained=your-model \ --tasks wmt-ro-en-t5-prompt \ --batch_size auto

若需批量对比,可同时传入 translation 任务族中的 GPT-3 风格变体:

lm_eval --model hf \ --model_args pretrained=your-model \ --tasks wmt-ro-en-t5-prompt,wmt16-ro-en \ --batch_size auto

其中wmt-ro-en-t5-prompt为本文任务,wmt16-ro-en为 translation/wmt16_ro-en.yaml 注册的 GPT-3 风格任务。评测完成后控制台会输出 WER 与 BLEU 分数,BLEU 值越高越好,WER 值越低越好。

扩展新变体时的自查清单

README 末尾附带了本仓库任务贡献的标准 Checklist。若要在wmt2016任务族下新增变体(例如en-ro反向语言对或新的提示模板),需自查:是否已引用原始论文、是否有参考实现可供对照、是否清楚标注"主变体"与新增变体各自评测什么、是否说明了该变体复现的是哪个已发表评测设置。结合本仓库的注册机制,新增任务只需在 wmt2016 目录 下新增 YAML 文件并在任务名上体现变体语义即可,指标函数可复用现有的 metrics.py 或参考内置指标实现。

【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询