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

fairseq WMT20 新闻翻译提交模型实战:Tamil/Inuktitut 低资源机器翻译与语言模型加载指南

fairseq WMT20 新闻翻译提交模型实战Tamil/Inuktitut 低资源机器翻译与语言模型加载指南【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm本指南围绕 fairseq 的 WMT20 新闻翻译任务官方提交模型展开完整讲解 Facebook-FAIR 在英语 ↔ 泰米尔语Tamil、英语 ↔ 因纽特语Inuktitut两组低资源语言对上发布的单模型翻译与配套语言模型Language Model的模型清单、归档构成与 torch.hub 加载方式。读完本文你将能够通过几行 Python 代码直接加载并调用这些 WMT20 模型完成翻译与文本采样并理解 fairseq 的 hub 模型注册与from_pretrained加载链路的底层原理。本文主体对应仓库内文档 decoding/IAD/fairseq/examples/wmt20/README.md并以当前仓库内置的 fairseq 源码decoding/IAD/fairseq作为实现佐证。背景WMT20 新闻翻译任务与 FAIR 提交WMTConference on Machine Translation的 news translation task 是机器翻译领域最具代表性的年度评测任务之一。本文所述的模型来自 Facebook-FAIR 在 WMT20 新闻翻译任务中的正式提交论文《Facebook AIs WMT20 News Translation Task Submission》Chen et al., 2020覆盖两组语言对英语 ↔ 泰米尔语English ↔ TamilISO 代码ta英语 ↔ 因纽特语English ↔ InuktitutISO 代码iu其中 Inuktitut 是典型的低资源语言。对于 Inuktitut模型进一步按**领域domain**区分发布News domain新闻领域归档名中的.news后缀Nunavut Hansard domain努纳武特议会议事记录领域归档名中的.nh后缀。该 README 位于当前仓库的decoding/IAD/fairseq代码树内。decoding/IAD是 Input-guided Aggressive DecodingIAD项目详见 decoding/IAD/README.md它内置了一份完整可用的 fairseq 代码库因此 WMT20 示例模型与 IAD 的解码工具可以共享同一套模型注册与加载逻辑——这也让本示例文档在仓库中具备了直接可复用的价值。单模型最优机器翻译模型在 WMT20 news dev 集部分数据微调后原始文档给出了 6 个方向的**单模型最优single best**翻译模型。这些模型均在 WMT20 新闻开发集news dev set的部分数据上做过微调且均为单模型、非集成ensemble版本。下表完整列出模型名与说明模型说明transformer.wmt20.ta-enTa-En泰米尔语 → 英语transformer.wmt20.en-taEn-Ta英语 → 泰米尔语transformer.wmt20.iu-en.newsIu-En因纽特语 → 英语News 领域transformer.wmt20.en-iu.newsEn-Iu英语 → 因纽特语News 领域transformer.wmt20.iu-en.nhIu-En因纽特语 → 英语Nunavut Hansard 领域transformer.wmt20.en-iu.nhEn-Iu英语 → 因纽特语Nunavut Hansard 领域在源码层面这 6 个模型的下载入口被逐一登记在 fairseq 标准 Transformer 模型的hub_models()注册表中见 decoding/IAD/fairseq/fairseq/models/transformer.py#L56-L99。从该注册表可以进一步确认每个模型归档的文件名例如wmt20.en-ta.single.tar.gz、wmt20.iu-en.news.single.tar.gz等并注意到每个条目都统一走spm(path)配置即SentencePiece BPE 子词切分 space 分词器。这意味着这些翻译模型的数据管线与 WMT19 系列模型使用 Moses fastBPE不同加载时 fairseq 会自动按 SentencePiece 方式做预处理。配套 Transformer 语言模型除了翻译模型FAIR 还发布了 4 个配套的 Transformer 语言模型用于解码时重排序reranking等场景。完整清单如下模型说明transformer_lm.wmt20.enEn Language Model英语语言模型transformer_lm.wmt20.taTa Language Model泰米尔语语言模型transformer_lm.wmt20.iu.newsIu Language Model因纽特语语言模型News 领域transformer_lm.wmt20.iu.nhIu Language Model因纽特语语言模型Nunavut Hansard 领域这些 LM 条目注册在TransformerLanguageModel的hub_models()中见 decoding/IAD/fairseq/fairseq/models/transformer_lm.py#L168-L201。从源码可以看到WMT20 语言模型同样使用spm(path)SentencePiece space tokenizer配置与翻译模型保持一致归档文件名分别为wmt20.en.tar.gz、wmt20.ta.tar.gz、wmt20.iu.news.tar.gz、wmt20.iu.nh.tar.gz。使用方式一通过 torch.hub 加载翻译模型原始文档推荐的最简使用方式是通过torch.hub按模型名加载。torch.hub.load会根据模型名在对应注册表中找到归档地址自动完成下载、解压与缓存默认缓存在~/.cache/torch/hub并返回一个可直接调用的推理接口对象。前置条件环境中已安装torch且pytorch/fairseq仓库或本仓库内置的decoding/IAD/fairseq可被 torch.hub 访问。翻译用法如下完整继承自原文档import torch # English to Tamil translation en2ta torch.hub.load(pytorch/fairseq, transformer.wmt20.en-ta) en2ta.translate(Machine learning is great!) # இயந்திரக் கற்றல் அருமை! # Tamil to English translation ta2en torch.hub.load(pytorch/fairseq, transformer.wmt20.ta-en) ta2en.translate(இயந்திரக் கற்றல் அருமை!) # Machine learning is great! # English to Inuktitut translation en2iu torch.hub.load(pytorch/fairseq, transformer.wmt20.en-iu.news) en2iu.translate(machine learning is great!) # ᖃᒧᑕᐅᔭᓄᑦ ᐃᓕᓐᓂᐊᕐᓂᖅ ᐱᐅᔪᒻᒪᕆᒃ! # Inuktitut to English translation iu2en torch.hub.load(pytorch/fairseq, transformer.wmt20.iu-en.news) iu2en.translate(ᖃᒧᑕᐅᔭᓄᑦ ᐃᓕᓐᓂᐊᕐᓂᖅ ᐱᐅᔪᒻᒪᕆᒃ!) # Machine learning excellence!几个要点返回值是 fairseq 的GeneratorHubInterface内部封装了模型、任务与生成器提供.translate()方法开箱即用无需手动加载字典或 SentencePiece 模型模型名中的.news/.nh后缀决定了 Inuktitut 使用哪个领域模型翻译非新闻类文本时应按领域选择示例输出体现了低资源语对的实际翻译质量Tamil 与 Inuktitut 的短句翻译均能得到合理的英文/目标语言结果。使用方式二通过 torch.hub 加载语言模型并采样配套语言模型的用法与翻译模型完全对称只是调用.sample()方法进行续写采样而非翻译。完整示例继承如下# Sample from the English LM en_lm torch.hub.load(pytorch/fairseq, transformer_lm.wmt20.en) en_lm.sample(Machine learning is) # Machine learning is a type of artificial intelligence that uses machine learning to learn from data and make predictions. # Sample from the Tamil LM ta_lm torch.hub.load(pytorch/fairseq, transformer_lm.wmt20.ta) ta_lm.sample(இயந்திரக் கற்றல் என்பது செயற்கை நுண்ணறிவின்) # இயந்திரக் கற்றல் என்பது செயற்கை நுண்ணறிவின் ஒரு பகுதியாகும். # Sample from the Inuktitut LM iu_lm torch.hub.load(pytorch/fairseq, transformer_lm.wmt20.iu.news) iu_lm.sample(ᖃᒧᑕᐅᔭᓄᑦ ᐃᓕᓐᓂᐊᕐᓂᖅ) # ᖃᒧᑕᐅᔭᓄᑦ ᐃᓕᓐᓂᐊᕐᓂᖅ, ᐊᒻᒪᓗ ᓯᓚᐅᑉ ᐊᓯᙳᖅᐸᓪᓕᐊᓂᖓᓄᑦ ᖃᓄᐃᓕᐅᕈᑎᒃᓴᑦ, ᐃᓚᖃᖅᖢᑎᒃ ᐅᑯᓂᖓ:.sample()接受一段前缀文本并返回续写结果适合用于评估语言模型的流畅度、做领域自适应重排序或为下游任务如 IAD 解码中的打分提供先验。源码级原理解析hub 模型是如何被找到和加载的要理解上述几行代码背后发生了什么需要串联三个源码文件1. torch.hub 的入口注册fairseq 仓库根目录的 hubconf.py 先做依赖检查dataclasses、hydra、numpy、omegaconf、regex、requests、torch随后遍历MODEL_REGISTRY中所有已注册的模型类对每个类的hub_models()中登记的每个模型名执行globals()[model_name] functools.partial( _cls.from_pretrained, model_name, )即把transformer.wmt20.en-ta这样的名字在模块级暴露为from_pretrained(transformer.wmt20.en-ta)的偏函数这正是torch.hub.load(..., transformer.wmt20.en-ta)最终命中的对象。2. 模型名 → 归档地址的映射from_pretrained的基类实现位于 decoding/IAD/fairseq/fairseq/models/fairseq_model.py#L227-L265。它接收model_name_or_path并传入archive_mapcls.hub_models()作为解析表——即前面提到的 transformer.py#L56-L99 与 transformer_lm.py#L168-L201 中的注册内容。参数checkpoint_file默认为model.pt即归档内的主 checkpoint 文件名data_name_or_path默认为.表示复用模型归档内的数据/字典文件。下载与缓存由fairseq.hub_utils完成最终返回GeneratorHubInterface(x[args], x[task], x[models])——这就是示例代码中.translate()/.sample()两个方法的来源。3. 预处理管线的一致性从两个hub_models()中可以看到所有 WMT20 条目都统一使用spm(path)辅助函数其返回的配置为{path: path, tokenizer: space, bpe: sentencepiece}。可以推断WMT20 的模型归档内同时打包了 checkpointmodel.pt、词典与 SentencePiece 模型加载器据此自动装配分词与子词切分流程用户无需手动指定--bpe sentencepiece。在本仓库中的落地从 hub 模型到本地推理结合 IAD当前仓库的decoding/IAD项目decoding/IAD/README.md提供了一个基于 fairseq 的输入引导式激进解码Input-guided Aggressive Decoding实现其推理入口与 WMT20 这类标准 fairseq checkpoint 是兼容的。具体有两种方式方式一直接使用 fairseq 自带的交互式解码脚本。IAD 仓库提供了封装脚本 decoding/IAD/interactive.sh调用方式为bash interactive.sh $PTPATH $BATCH $BEAM $INPPATH $BINDIR $OUTPATH其中PTPATH指向checkpoint*.pt模型文件BINDIR是包含 src/tgt 词典的 bin 数据目录INPPATH为待翻译文件如conll*.bpe.txtOUTPATH为输出文件。方式二使用 IAD 的推理入口python inference.py --checkpoint-path $PTPATH --bin-data $BINDIR --input-path $INPPATH --output-path $OUTPATH --aggressive结合上文可以推断torch.hub 加载与本地 checkpoint 加载共用同一套 fairseq 模型注册与 checkpoint 恢复逻辑MODEL_REGISTRYfrom_pretrained。因此通过 torch.hub 自动下载的 WMT20 翻译模型/LM 归档在解压后即可像 IAD README 中描述的那样作为本地PTPATH使用只需按 IAD 的数据约定bin 数据与词典、BPE 预处理准备好BINDIR与INPPATH。这套组合使 WMT20 模型不仅能用于常规翻译评测也可以作为 IAD 解码管线中的基础模型进一步实验。引用规范如果你在研究中使用了这些模型或本文档内容原始文档给出的引用信息如下inproceedings{chen2020facebook title{Facebook AIs WMT20 News Translation Task Submission}, author{Peng-Jen Chen and Ann Lee and Changhan Wang and Naman Goyal and Angela Fan and Mary Williamson and Jiatao Gu}, booktitle{Proc. of WMT}, year{2020}, }完整的模型下载地址、归档构成与用法细节均可直接查看仓库内原始文档 decoding/IAD/fairseq/examples/wmt20/README.md以及两个hub_models()注册表源码transformer.py#L56-L99、transformer_lm.py#L168-L201。【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

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

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