1 万 Star!来自 Facebook 的翻译模型:Fairseq
简介
Fairseq这个翻译模型由FacebookAI实验室在2017年提出,和以往以RNN为基础的翻译模型相比,使用一种全新的卷积神经网络(CNN)进行语言翻译,结果以9倍于以往循环神经网络(CNN)的速度实现了目前最高准确率。
特点
单机多GPU训练或者多机器并行(数据和模型并行)
CPU和GPU的快速生成基于多个搜索算法的实现:
柱型搜索
多样化柱型搜索
抽样(无约束,top-k和top-p/nucleus)
词法约束译码(Post&Vilar,2018)
梯度堆积可以在单个GPU上完成大量的小块训练
混合精度训练(基于英伟达张量内核,可以用更少的GPU进行更快速的训练)
可拓展:注册新模型,测量规范,任务,优化器以及学习率的调度十分便捷
基于Hydra的灵活配置,可满足代码,命令行和配置文件的混合使用
也为翻译提供了预训练模型,此外还为语言模型提供了便利的torch.hub接口:
en2de=torch.hub.load('pytorch/fairseq','transformer.wmt19.en-de.single_model')
en2de.translate('Helloworld',beam=5)
#'HalloWelt'
安装和要求
PyTorch版本>=1.5.0
Python版本>=3.6
为了训练新模型,你需要一个英伟达GPU和NCCL
安装fairseq以及本地开发,可用如下命令:
gitclonehttps://github.com/pytorch/fairseq
cdfairseq
pipinstall--editable./
#onMacOS:
#CFLAGS="-stdlib=libc++"pipinstall--editable./
#toinstallthelateststablerelease(0.10.0)
#pipinstallfairseq==0.10.0
安装英伟达的apex库,以提高训练速度。安装命令如下:
gitclonehttps://github.com/NVIDIA/apex
cdapex
pipinstall-v--no-cache-dir--global-option="--cpp_ext"--global-option="--cuda_ext"\
--global-option="--deprecated_fused_adam"--global-option="--xentropy"\
--global-option="--fast_multihead_attn"./
安装PyArrow,以满足大数据集的需求。安装命令如下:
pipinstallpyarrow
如果你使用Docker,一定要增加共享内存,使用--ipc=host或者--shm-size选项来运行nvidia-dockerrun.
开始使用
完整的使用文档涵盖了如何启动,训练新模型以及使用新模型和任务来扩展fairseq的详细说明。