资讯动态

fairseq 翻译混合专家模型(translation_moe)完全指南:基于 Shen et al. 2019 的多样化机器翻译复现手册

发布时间:2026/9/14 5:31:17 来源:尧图企业网站定制
fairseq 翻译混合专家模型translation_moe完全指南基于 Shen et al. 2019 的多样化机器翻译复现手册【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm本文围绕 infoxlm/fairseq 仓库中的 translation_moe 示例文档系统讲解如何在 fairseq 框架下训练、翻译与评估混合专家Mixture of Experts, MoE翻译模型完整复现论文Mixture Models for Diverse Machine Translation: Tricks of the TradeShen et al., 2019。读者将掌握translation_moe任务四种 MoE 变体hMoElp / hMoEup / sMoElp / sMoEup的原理与选择方法、完整的 WMT17 En-De 数据准备、训练、指定专家生成以及多参考 BLEU 评估流程并通过源码级分析理解在线职责分配online responsibility assignment与共享参数化的底层实现。1. 背景为什么需要多样化的机器翻译传统机器翻译模型对同一输入只会产生单一译文。但在现实场景中同一句话往往存在多种同样忠实、流畅的译法单一模型难以覆盖这些不同的翻译风格。Shen et al.2019提出的混合专家翻译模型正是为了解决这一翻译多样性diversity问题用多个专家expert子模型分别建模不同的翻译模式再通过门控网络gating network在训练与推理阶段进行协调。在 infoxlm/fairseq 中该能力通过translation_moe任务完整落地其核心代码位于 fairseq/tasks/translation_moe.py配套的门控网络实现位于 fairseq/modules/mean_pool_gating_network.py评测脚本见 examples/translation_moe/score.py。2. 四种 MoE 变体先验与选择的组合2.1 方法命名规则translation_moe任务通过--method参数选择 MoE 变体命名由两部分拼接而成前缀含义对应源码分支translation_moe.py 第 58-73 行hhard硬选择每个样本只路由到一个专家hard_selection Truessoft软混合每个样本按概率加权所有专家hard_selection Falselplearned prior专家先验由门控网络学习uniform_prior Falseupuniform prior专家先验为均匀分布uniform_prior True由此得到四种组合hMoElp硬混合 学习先验。门控网络根据源句内容决定每个样本分配给哪个专家是文档中训练示例采用的默认推荐配置。hMoEup硬混合 均匀先验。专家分配不依赖源句内容倾向于让各专家天然分化。sMoElp软混合 学习先验。所有专家以门控概率加权参与每个样本的翻译。sMoEup软混合 均匀先验。从源码可见translation_moe.py--method的默认值为hMoEup--num-experts默认值为 3。2.2 关键约束学习先验必须搭配门控网络需要特别注意的是当选择lp学习先验变体时模型必须具备门控网络否则会直接报错。在build_model中translation_moe.py当uniform_prior False且模型本身没有gating_network属性时代码要求必须传入--mean-pool-gating-network否则抛出ValueErrortranslation_moe task with learned prior requires the model to have a gating network; try using --mean-pool-gating-network因此在训练 hMoElp / sMoElp 时务必同时加上--mean-pool-gating-network。2.3 专家指示符expert indicator token源码中一个易被忽略的细节是构造任务时会为每个专家向源、目标词典各添加一个特殊符号expert_{i}translation_moe.pyfor i in range(args.num_experts): src_dict.add_symbol(expert_{}.format(i)) tgt_dict.add_symbol(expert_{}.format(i))expert_index(i)返回i tgt_dict.index(expert_0)即把expert_{i}映射为词典中的真实索引。训练时这些符号作为解码器 BOS token 注入见_get_loss中prev_output_tokens_k[:, 0] self.expert_index(i)推理时通过--gen-expert指定用哪个专家的 BOS token 启动生成inference_steptranslation_moe.py。这就是从不同专家生成的底层机制——专家身份通过特殊的起始符区分模型本身是共享参数的。3. 数据准备WMT17 En-De 数据集训练前需要先准备 WMT17 英德数据。文档要求遵循 translation 示例 中的prepare-wmt14en2de.sh流程cd examples/translation/ bash prepare-wmt14en2de.sh cd ../..该脚本默认产出基于Attention Is All You NeedVaswani et al., 2017设置、并额外包含 WMT17 news-commentary-v12 数据的语料如需严格复现 WMT14 原论文结果可改用bash prepare-wmt14en2de.sh --icml17。随后二值化数据关键点在于必须通过--joined-dictionary学习联合词典因为 MoE 模型共享源/目标词表与嵌入TEXTexamples/translation/wmt17_en_de fairseq-preprocess \ --source-lang en --target-lang de \ --trainpref $TEXT/train --validpref $TEXT/valid --testpref $TEXT/test \ --destdir>fairseq-train --ddp-backendno_c10d \ >fairseq-generate>wget dl.fbaipublicfiles.com/fairseq/data/wmt14-en-de.extra_refs.tok6.2 对每个专家执行批量翻译对 3 个专家逐一运行fairseq-interactive输入为测试集源句从S-行提取并现场应用 BPEBPE_CODEexamples/translation/wmt17_en_de/code for EXPERT in $(seq 0 2); do \ cat wmt14-en-de.extra_refs.tok \ | grep ^S | cut -f 2 \ | fairseq-interactive>python examples/translation_moe/score.py --sys wmt14-en-de.extra_refs.tok.gen.3experts --ref wmt14-en-de.extra_refs.tok # pairwise BLEU: 48.26 # #refs covered: 2.11 # multi-reference BLEU (leave-one-out): 59.46文档指出该结果对应论文 Table 7 第 3 行。三个指标的含义与实现score.pypairwise BLEU对同一源句的多个假设两两互算 BLEU 后取语料级均值pairwise()函数第 123-131 行。该值越低说明专家间译文差异越大、多样性越高。#refs covered统计每个样本的 K 条假设能覆盖多少条人工参考用 sentence-level BLEU 匹配最佳参考并随机处理并列第 139-150 行。值越高说明专家译文覆盖了越多的参考译法。multi-reference BLEU (leave-one-out)把某假设组的所有译文合起来与排除一条参考后的其余参考计算语料 BLEU再对排除的参考取平均multi_ref()第 156-169 行。它衡量整体译文质量的上限且与intra_ref()计算的参考集内部 BLEU第 172-185 行可比。三个指标共同回答专家之间有多多样与整体译得有多好两个问题是论文评测方法论的核心也是验证 MoE 翻译模型价值的标准工具。7. 复现要点与注意事项汇总数据必须联合词典fairseq-preprocess记得加--joined-dictionary否则--share-all-embeddings与专家符号注入会出问题。学习先验必配门控网络hMoElp/sMoElp必须加--mean-pool-gating-network否则build_model抛 ValueError。训练/推理参数保持一致--task translation_moe --method ... --num-experts N在训练、生成、交互各阶段都要一致词典中expert_i符号依赖--num-experts。--gen-expert决定多样性来源默认专家 0遍历0..num_experts-1即可获取多样译文。硬件与内存--max-tokens 3584是单卡内存较友好的设置多卡可借助--ddp-backendno_c10d与--update-freq模拟更大 batch参考 translation 多语言示例 的做法。先用小数据验证链路参考 test_binaries.py 的test_mixture_of_experts用 2 层编码器/解码器 8 维嵌入的迷你配置跑通 train → generate → gen-expert 全流程再放大到 WMT17 全量数据。8. 结语与延伸通过本文的完整流程你已经能够在 infoxlm/fairseq 中复现 Shen et al. (2019) 的 MoE 多样化翻译准备 WMT17 En-De 数据、训练 hMoElp 模型、用--gen-expert从不同专家生成多样化译文并用 score.py 以 pairwise BLEU、refs covered 和多参考 BLEU 三个指标系统评估多样性与质量。若要进一步探索可对比四种--method变体hMoEup / sMoElp / sMoEup在同一数据上的表现差异观察训练日志中posterior字段随训练推进的收敛情况并结合 mean_pool_gating_network.py 的均值池化结构理解门控网络如何从源句编码中提取全局信息完成专家路由。论文引用信息如下便于在研究工作中标注article{shen2019mixture, title {Mixture Models for Diverse Machine Translation: Tricks of the Trade}, author {Tianxiao Shen and Myle Ott and Michael Auli and MarcAurelio Ranzato}, journal {International Conference on Machine Learning}, year 2019, }【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价