尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
fairseq WMT19 预训练模型实战:基于 torch.hub 加载新闻翻译集成模型与语言模型
fairseq WMT19 预训练模型实战基于 torch.hub 加载新闻翻译集成模型与语言模型【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm本文围绕仓库 infoxlm/fairseq/examples/wmt19/README.md 展开系统讲解 Facebook FAIR 在 WMT19 新闻翻译任务提交中所发布的预训练模型英德、德英、英俄、俄英四个方向的 Transformer 集成翻译模型以及英/德/俄三种语言的 Transformer 语言模型如何通过 PyTorch Hub 一键加载与使用。读完本文你将掌握torch.hub.load加载 fairseq 模型的完整用法、翻译与语言模型采样的可直接运行的代码并能从 hubconf.py 与 hub_utils.py 的源码层面理解模型的下载、BPE/分词器装配与生成推理的底层原理。一、背景FAIR 的 WMT19 新闻翻译任务提交WMT 是每年举办的机器翻译评测会议其中新闻翻译任务News Translation Task是最受关注的赛道之一。Facebook FAIR 团队以论文Facebook FAIRs WMT19 News Translation Task SubmissionNg et al., 2019论文信息见 infoxlm/fairseq/examples/wmt19/README.md 的 Citation 小节提交了该系统并在同一篇工作里公开了其中的核心模型资产四个方向的神经机器翻译模型En→De、De→En、En→Ru、Ru→En以 Transformer 架构训练发布时以 4 个模型组成的集成Ensemble形式提供三个单语语言模型En、De、Ru 的transformer_lm语言模型可服务于文本生成、重排序等任务。本仓库中的这些模型由 fairseq 框架承载——注意当前仓库的 fairseq 是随 InfoXLM 项目一同内置的定制分支位于 infoxlm/fairseq而本文介绍的 WMT19 模型说明文档即位于该分支的examples/wmt19目录下。因此以下所有用法都以本仓库内这份 fairseq 为准。二、预训练模型一览下表完整列出了 WMT19 发布的预训练模型来自 infoxlm/fairseq/examples/wmt19/README.md模型名称说明下载transformer.wmt19.en-deEn→De 集成模型download (.tar.gz)transformer.wmt19.de-enDe→En 集成模型download (.tar.gz)transformer.wmt19.en-ruEn→Ru 集成模型download (.tar.gz)transformer.wmt19.ru-enRu→En 集成模型download (.tar.gz)transformer_lm.wmt19.enEn 语言模型download (.tar.gz)transformer_lm.wmt19.deDe 语言模型download (.tar.gz)transformer_lm.wmt19.ruRu 语言模型download (.tar.gz)模型的托管地址没有硬编码在说明文档中而是集中定义在 Transformer 模型类的hub_models()方法里见 transformer.py。阅读该段源码可以发现两个重要细节每个方向都额外提供了*.single_model变体如transformer.wmt19.en-de.single_model即去掉集成、仅保留单模型的轻量版本便于内存受限环境快速试验模型的 tokenizer 与 BPE 策略随模型绑定翻译模型通过moses_fastbpe(path)统一配置为tokenizermoses、bpefastbpe这意味着用户调用torch.hub.load时无需手动指定预处理方式默认值已由模型档案决定。三、环境准备在加载模型前需要安装两个额外的 Python 依赖用于文本预处理分词与 BPE 子词切分pip install fastBPE sacremosesfastBPE提供 fastBPE 子词切分实现对应模型档案中的bpefastbpe配置sacremoses提供 Moses 风格的分词/去分词tokenize/detokenize对应tokenizermoses配置。从源码角度印证GeneratorHubInterface在初始化时正是通过encoders.build_tokenizer(args)与encoders.build_bpe(args)构建这两个组件见 hub_utils.py而这两个组件又依赖上述两个第三方库实现。四、torch.hub 加载机制模型是如何被绑定的WMT19 模型之所以能通过torch.hub.load(pytorch/fairseq, transformer.wmt19.en-de, ...)这种简洁方式加载关键在 fairseq 根目录的 hubconf.py。其核心逻辑是for _model_type, _cls in MODEL_REGISTRY.items(): for model_name in _cls.hub_models().keys(): globals()[model_name] functools.partial( _cls.from_pretrained, model_name, )即遍历 fairseq 的模型注册表MODEL_REGISTRY把每个模型类hub_models()中登记的所有命名模型逐一绑定为from_pretrained的部分求值函数并注入全局命名空间。于是torch.hub在加载 fairseq 仓库时就能直接把transformer.wmt19.en-de这样的字符串解析为一次TransformerModel.from_pretrained(transformer.wmt19.en-de, ...)调用。from_pretrained的实现见 hub_utils.py其关键流程为通过archive_map此处即hub_models()返回的字典把模型名解析为下载地址file_utils.load_archive_file自动下载并解压.tar.gz模型档案检测档案内是否存在code/bpecodes/sentencepiece.bpe.model等文件自动把 BPE 词表注入参数将checkpoint_file按冒号:分割成多个检查点路径调用checkpoint_utils.load_model_ensemble_and_task一次性加载集成模型的所有成员、参数与任务对象。五、机器翻译实战在安装好依赖后即可用下面这段代码完成四个方向的翻译完整代码来自 infoxlm/fairseq/examples/wmt19/README.mdimport torch # English to German translation en2de torch.hub.load(pytorch/fairseq, transformer.wmt19.en-de, checkpoint_filemodel1.pt:model2.pt:model3.pt:model4.pt, tokenizermoses, bpefastbpe) en2de.translate(Machine learning is great!) # Maschinelles Lernen ist großartig! # German to English translation de2en torch.hub.load(pytorch/fairseq, transformer.wmt19.de-en, checkpoint_filemodel1.pt:model2.pt:model3.pt:model4.pt, tokenizermoses, bpefastbpe) de2en.translate(Maschinelles Lernen ist großartig!) # Machine learning is great! # English to Russian translation en2ru torch.hub.load(pytorch/fairseq, transformer.wmt19.en-ru, checkpoint_filemodel1.pt:model2.pt:model3.pt:model4.pt, tokenizermoses, bpefastbpe) en2ru.translate(Machine learning is great!) # Машинное обучение - это здорово! # Russian to English translation ru2en torch.hub.load(pytorch/fairseq, transformer.wmt19.ru-en, checkpoint_filemodel1.pt:model2.pt:model3.pt:model4.pt, tokenizermoses, bpefastbpe) ru2en.translate(Машинное обучение - это здорово!) # Machine learning is great!几个关键参数说明checkpoint_filemodel1.pt:model2.pt:model3.pt:model4.pt4 个成员检查点用冒号分隔对应 4 模型集成的结构。from_pretrained内部会按:拆分后逐一加载并组成模型集成见 hub_utils.py推理时多个模型共同参与生成tokenizermoses、bpefastbpe显式指定分词器与 BPE 策略与模型档案中的默认配置一致。值得注意的是如果完全省略这两个参数from_pretrained也会从hub_models()的档案字典中自动补齐见 hub_utils.py返回的en2de等对象是GeneratorHubInterface实例其translate(sentence)方法等价于sample(sentence, beam5)见 hub_utils.py即默认使用beam search 宽度为 5的解码策略。六、语言模型采样实战除翻译外WMT19 还发布了三个单语transformer_lm语言模型可以用于文本续写与采样示例同样来自原文档# Sample from the English LM en_lm torch.hub.load(pytorch/fairseq, transformer_lm.wmt19.en, tokenizermoses, bpefastbpe) en_lm.sample(Machine learning is) # Machine learning is the future of computing, says Microsoft boss Satya Nadella ... # Sample from the German LM de_lm torch.hub.load(pytorch/fairseq, transformer_lm.wmt19.de, tokenizermoses, bpefastbpe) de_lm.sample(Maschinelles lernen ist) # Maschinelles lernen ist das A und O (neues-deutschland.de) ... # Sample from the Russian LM ru_lm torch.hub.load(pytorch/fairseq, transformer_lm.wmt19.ru, tokenizermoses, bpefastbpe) ru_lm.sample(машинное обучение это) # машинное обучение это то, что мы называем искусственным интеллектом.与翻译不同语言模型的sample默认beam1即直接基于概率分布进行续写采样同一对象也可以像翻译一样调用translate两者共享同一个sample实现只是默认 beam 宽度不同。语言模型类同样实现了hub_models()并注册到MODEL_REGISTRY因此走的是完全相同的torch.hub加载链路。七、从translate到generate推理调用链源码拆解一次translate调用的完整数据流可以在 hub_utils.py 中完整追踪encode(sentence)L159-L162依次执行 Moses 分词tokenize→ fastBPE 子词切分apply_bpe→ 借助src_dict.encode_line将文本转为 token id 张量binarizegenerate(tokens, beam)L124-L157通过_build_sample构造 batch 数据用task.build_generator构建搜索器随后task.inference_step驱动模型集成执行 beam search若verboseTrue还会打印S/H/P/A格式的详细解码信息源句、候选假设、逐 token 得分、对齐decode(tokens)L164-L167对生成的 token 序列执行string→remove_bpe→detokenize还原为自然语言文本。同时GeneratorHubInterface.__init__L78-L110还会对每个模型调用make_generation_fast_做推理优化预计算 beam 相关的 mm 矩阵等这是模型加载后首轮翻译会稍慢、后续明显提速的原因之一。八、引用规范如果 WMT19 模型对你的研究或工程有所帮助请按以下格式引用原始论文来自 infoxlm/fairseq/examples/wmt19/README.mdinproceedings{ng2019facebook}, title {Facebook FAIRs WMT19 News Translation Task Submission}, author {Ng, Nathan and Yee, Kyra and Baevski, Alexei and Ott, Myle and Auli, Michael and Edunov, Sergey}, booktitle {Proc. of WMT}, year 2019, }九、进一步阅读模型说明文档原文infoxlm/fairseq/examples/wmt19/README.mdtorch.hub 模型绑定入口infoxlm/fairseq/hubconf.py模型档案定义含全部下载地址与单模型变体transformer.py加载与推理核心实现hub_utils.pyfairseq 分支所属项目 InfoXLM 的整体说明infoxlm/README.md【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

定日镜场最优设计:2023年国赛A题的Python可复现方案

定日镜场最优设计:2023年国赛A题的Python可复现方案

简介:2023年全国大学生数学建模竞赛A题定日镜场优化设计的国一获奖方案,内含完整Python源码、MATLAB辅助程序与最终论文。内容针对问题一和问题二给出系统解法:问题一通过建立三维坐标系,用欧氏几何推导余弦效率,计算太…

📅 2026/9/14 3:50:36
中文影评情感分析实战:从数据清洗到模型部署全流程解析

中文影评情感分析实战:从数据清洗到模型部署全流程解析

简介:一份面向零基础学习者的中文情感分析实战资源包,聚焦影评数据的情感倾向判别,适合正在入门自然语言处理的学生、转行者或需要快速搭建分析原型的开发者,通过完整示例数据与可直接运行的代码降低了上手门槛。压缩包共14个文件…

📅 2026/9/14 3:50:36
MATLAB实现GPS/SINS松耦合组合导航:卡尔曼滤波误差估计与数据输入实践

MATLAB实现GPS/SINS松耦合组合导航:卡尔曼滤波误差估计与数据输入实践

简介:一套基于MATLAB的GPS/SINS组合导航程序源码包,面向新手及有一定经验的开发人员,主要解决组合导航仿真中算法实现、数据输入与结果分析等问题,适合惯性导航与卫星导航组合研究场景,也可为教学演示和毕业设计提供参…

📅 2026/9/14 3:45:36
MORE NEWS

更多资讯

📰

C#入门必读:六个小游戏源码逐行拆解,从游戏循环到碰撞判定

简介:一套面向C#初学者的七合一游戏开发实战资源,包含飞机大战、俄罗斯方块、贪吃蛇、拼图游戏、连连看、五子棋等经典小游戏完整项目,所有代码均配有详细注释,覆盖窗体设计、游戏循环、碰撞检测、坐标变换、事件监听等核心知识点…

📰

VTK-6.1.0-vc14-64预编译库在VS2015中的配置与管道实战

简介:面向Visual Studio 2015(vc14)的64位VTK 6.1.0库压缩包,专为Windows平台需要开展三维可视化与科学计算的C开发者准备。该版本免去了从源码自行编译VTK的时间成本,解压后即可在VS2015工程中引用。包体大小约24.11M…

📰

Codex 配 TaoToken:生成 px2rem 的 px 转 rem 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

基于EasyX的C++课设:火柴人躲炸弹游戏实现解析

简介:面向高校C/C课程设计学生的一款“火柴人躲炸弹”游戏源码,以趣味游戏方式将C/C语言知识融入实际项目,适合作为课设大作业或编程初学者的实践练习。资源压缩包仅含1个cpp源文件,包体仅2KB,代码简洁、结构清晰&…

📰

MySQL事务四大特性与隔离级别深度详解:脏读、不可重复读、幻读原理及彻底解决方案

MySQL事务四大特性与隔离级别深度详解:脏读、不可重复读、幻读原理及彻底解决方案 摘要:MySQL事务是数据库数据一致性、可靠性的核心基石,也是后端开发、面试、生产问题排查的高频核心知识点。本文将系统性拆解事务ACID四大特性、四大隔离级别,结合实操SQL代码完整复现脏读…

📰

CODESYS原生MQTT库实现PLC直连工业物联网

简介:本资源是一套面向工业自动化工程师与物联网开发者的CODESYS平台MQTT通信解决方案,聚焦PLC设备与云/边缘MQTT代理服务器的高效双向数据交互,特别适配Zigbee2MQTT网关集成场景,解决传统工控系统接入IoT平台时的协议适配、多代理…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬