将 fairseq WMT19 翻译系统移植到 🤗 Transformers

TL;DR

Hugging Face 发布了 fairseq WMT19 翻译系统到 Transformers 库的移植版,提供了可直接使用的英俄和英德翻译模型,可通过 AutoTokenizer 和 AutoModelForSeq2SeqLM 加载。

准备和文件布局

移植工作始于设置工作目录并安装所需的仓库:fairseq、mosesdecoder、fastBPE,以及带有 dev extras 的 transformers 库。作者创建了 ~/porting 文件夹,克隆了每个仓库,并以可编辑模式安装它们。fairseq WMT19 模型提供四个检查点(model1.pt–model4.pt)、源和目标字典(dict.en.txt、dict.ru.txt)以及一个 BPE 码文件(bpecodes)。这些文件被检查以了解模型的检查点、词汇表和分词工件。

分词器移植

分词器编码器通过改编现有的 tokenization_xlm.py 文件进行移植。作者将 tokenization_xlm.py 复制到 tokenization_fsmt.py,将类从 XLM 重命名为 FSMT,并删除了未使用的代码。由于 WMT19 模型使用独立的源和目标词汇表,分词器的 get_vocab 和 vocab_size 属性被重写以返回源词汇表。BPE 处理从 fastBPE 风格(@@ 用于非最终子词)更改为 Transformers 风格( 用于最终子词),词汇表重映射通过 fairseq.data.dictionary.Dictionary.load 执行以获得正确的 ID 映射。随后,通过将输出 ID 转换为字符串、去除 BPE 标记并应用 Moses 去分词来完成解码器。

模型转换和架构

转换脚本 convert_fsmt_original_pytorch_checkpoint_to_pytorch.py 是从 BART 转换脚本开始,逐步添加所需部分而创建的。模型权重通过 fairseq hub API 从 fairseq 检查点提取,该 API 还处理了将较旧的合并 in_proj 权重转换为单独的 k/q/v 投影。配置参数从 fairseq 参数映射到 Transformers FSMTConfig,包括 activation_dropout、attention_dropout、d_model、dropout、max_position_embeddings、num_hidden_layers、src_vocab_size、tgt_vocab_size,以及 bos、pad 和 eos 的 token ID。模型架构源自 modeling_bart.py,通过调整层以匹配 fairseq 的 TransformerEncoder 和 TransformerDecoder(例如,删除未使用的层,添加缺失的层,并确保正确使用源词汇表和目标词汇表的大小)。正弦位置嵌入被重新实现为普通的 nn.Embedding 子类,以满足 TorchScript 要求,同时防止确定性权重被保存。

测试和评估

为分词器和建模组件添加了单元测试,基于现有的 BART 测试套件,但已适应双词汇表设置。生成了一个具有随机权重的微型模型,用于快速 CI 测试。手动验证脚本将 fairseq 和 Transformers 实现的输出逐标记、逐句进行比较,并使用调试器对齐中间结果。束搜索行为进行了调整:移植的模型使用 early_stopping=False,在束大小为 5 时,这被发现比 fairseq 默认的 early_stopping=True 给出更高的 BLEU 分数。在 WMT19 测试集上使用 sacrebleu 进行评估,对于 ru‑en 方向,束大小为 5、长度惩罚为 1.1 时获得了 BLEU 分数 39.0498。作者指出,原始 fairseq 论文报告了更高的分数,因为它使用了四个检查点的集成和一个重新排名步骤,而这些在移植中未被复现。

上传、集成和自动化

转换后,模型文件被上传到作者账户下的 Hugging Face S3,随后移至 facebook 和 allenai 组织。这些模型可以通过标准 API 加载,例如 FSMTTokenizer.from_pretrained("facebook/wmt19-en-ru)). AutoConfig、AutoTokenizer 和 AutoModelWithLMHead 已更新以识别 fsmt 模型类型,从而实现管道式使用。为每个变体编写了模型卡,详细说明语言对、许可证、数据集和评估指标。通过将现有的 BART 文档改编为 FSMT 来添加文档,并使用 make docs 验证了构建过程。

影响和结束语

将 WMT19 系统移植到 Transformers 使下载大小从大约 13 GB(包括优化器状态)减少到每个模型约 1.1 GB,使翻译器在下游使用中更易于访问。尽管移植不支持原始的四个检查点集成,但单检查点模型仍能实现强劲的翻译质量。该工作展示了现有的 Transformers 组件(基于 BART 的建模、基于 XLM 的分词、转换工具)如何被重用和适应,以将高质量的 fairseq 模型引入库中,作者在 PR 审查过程中承认了 Sam Shleifer 的指导以及 Lysandre Debut 和 Sylvain Gugger 的贡献。

Sources