Fairseq(-py) 是一个序列建模工具包,允许研究人员和开发人员训练用于翻译、摘要、语言建模和其他文本生成任务的自定义模型。
我们提供各种序列建模论文的参考实现:
卷积神经网络 (CNN)
使用门控卷积网络进行语言建模(Dauphin 等人,2017)
卷积序列到序列学习(Gehring et al., 2017)
序列到序列学习的经典结构化预测损失(Edunov 等人,2018)
分层神经故事生成(Fan 等人,2018)
wav2vec:语音识别的无监督预训练(Schneider 等人,2019)
LightConv 和 DynamicConv 模型
通过轻量级和动态卷积减少注意力(Wu 等人,2019)
长短期记忆 (LSTM) 网络
基于注意力的神经机器翻译的有效方法(Luong et al., 2015)
Transformer(自注意力)网络
注意力就是你所需要的(Vaswani 等人,2017)
缩放神经机器翻译(Ott 等人,2018)
大规模理解反向翻译(Edunov 等人,2018)
神经语言建模的自适应输入表示(Baevski 和 Auli,2018)
具有动态波束分配的词法约束解码(Post & Vilar,2018)
Transformer-XL:超越固定长度上下文的专注语言模型(Dai 等人,2019)
变形金刚中的自适应注意力广度(Sukhbaatar 等人,2019)
多样化机器翻译的混合模型:交易技巧(Shen 等人,2019)
RoBERTa:一种稳健优化的 BERT 预训练方法(Liu 等人,2019)
Facebook FAIR 的 WMT19 新闻翻译任务提交(Ng 等人,2019)
联合学习与 Transformer 模型对齐和翻译(Garg et al., 2019)
神经机器翻译的多语言去噪预训练(Liu et at.,2020)
具有字节级子词的神经机器翻译(Wang 等人,2020)
神经机器翻译的无监督质量估计(Fomicheva 等人,2020)
wav2vec 2.0:语音表示自监督学习框架(Baevski 等人,2020)
使用序列到序列模型从患者与医生的对话生成医疗报告(Enarvi 等人,2020)
Linformer:具有线性复杂性的自注意力(Wang 等人,2020)
用于迭代自我监督训练的跨语言检索(Tran 等人,2020)
具有潜在深度的深度变压器(Li et al., 2020)
用于语音识别的无监督跨语言表示学习(Conneau 等人,2020)
自训练和预训练是语音识别的补充(Xu et al., 2020)
稳健的 wav2vec 2.0:分析自监督预训练中的域转移(Hsu 等人,2021)
无监督语音识别(Baevski 等人,2021)
简单有效的零样本跨语言音素识别(Xu et al., 2021)
VideoCLIP:零样本视频文本理解的对比预训练(Xu 等人,2021)
VLM:用于视频理解的任务无关视频语言模型预训练(Xu 等人,2021)
NormFormer:通过额外标准化改进 Transformer 预训练(Shleifer 等人,2021)
非自回归变压器
非自回归神经机器翻译(Gu et al., 2017)
通过迭代细化进行确定性非自回归神经序列建模(Lee et al. 2018)
插入变压器:通过插入操作生成灵活的序列(Stern 等人,2019)
Mask-Predict:条件屏蔽语言模型的并行解码(Ghazvininejad 等人,2019)
Levenshtein Transformer(Gu 等人,2019)
微调
通过减少表征崩溃来更好地进行微调(Aghajanyan 等人,2020)
2023 年 5 月发布了将语音技术扩展到 1,000 多种语言的模型(Pratap 等人,2023 年)
2022 年 6 月 从 Towards End-to-end Unsupervised Speech Recognition 发布了 wav2vec-U 2.0 代码(Liu 等人,2022)
2022 年 5 月 与 xFormers 集成
2021年12月发布直接语音转语音翻译代码
2021年10月发布VideoCLIP和VLM模型
2021年10月发布多语言微调XLSR-53模型
2021 年 9 月master
分支更名为main
。
2021年7月发布DrNMT代码
2021年7月发布Robust wav2vec 2.0模型
2021年6月发布XLMR-XL和XLMR-XXL型号
2021年5月发布无监督语音识别代码
2021 年 3 月 添加全参数和优化器状态分片 + CPU 卸载
2021 年 2 月 添加激光培训代码
2020 年 12 月:添加了自适应注意力跨度代码
2020 年 12 月:GottBERT 模型和代码发布
2020年11月:采用Hydra配置框架
请参阅解释如何将其用于新项目和现有项目的文档
2020 年 11 月:fairseq 0.10.0 发布
2020 年 10 月:添加了 R3F/R4F(更好的微调)代码
2020 年 10 月:发布具有潜在深度代码的 Deep Transformer
2020 年 10 月:添加了 CRISS 模型和代码
2020 年 9 月:添加了 Linformer 代码
2020 年 9 月:添加了指针生成器网络
2020 年 8 月:添加了词法约束解码
2020 年 8 月:wav2vec2 模型和代码发布
2020 年 7 月:发布无监督质量估计代码
2020 年 5 月:在 Twitter 上关注 fairseq
2020 年 4 月:单调多头注意力代码发布
2020 年 4 月:发布 Quant-Noise 代码
2020年4月:初始模型并行支持和11B参数单向LM发布
2020 年 3 月:发布字节级 BPE 代码
2020年2月:mBART模型和代码发布
2020 年 2 月:添加了反向翻译教程
2019 年 12 月:fairseq 0.9.0 发布
2019年11月:VizSeq发布(用于评估fairseq模型的可视化分析工具包)
2019 年 11 月:CamemBERT 模型和代码发布
2019 年 11 月:BART 模型和代码发布
2019 年 11 月:XLM-R 模型和代码发布
2019 年 9 月:发布非自回归翻译代码
2019 年 8 月:WMT'19 模型发布
2019 年 7 月:fairseq 根据 MIT 许可证重新获得许可
2019 年 7 月:RoBERTa 模型和代码发布
2019 年 6 月:wav2vec 模型和代码发布
在一台机器或多台机器上进行多 GPU 训练(数据和模型并行)
在 CPU 和 GPU 上快速生成,并实现多种搜索算法:
波束搜索
多样化波束搜索(Vijayakumar 等人,2016)
采样(无约束、top-k 和 top-p/nucleus)
词法约束解码(Post & Vilar,2018)
即使在单个 GPU 上,梯度累积也能实现大批量训练
混合精度训练(在 NVIDIA 张量核心上使用更少的 GPU 内存训练得更快)
可扩展:轻松注册新模型、标准、任务、优化器和学习率调度器
基于 Hydra 的灵活配置,允许组合代码、命令行和基于文件的配置
全参数和优化器状态分片
将参数卸载到 CPU
我们还通过方便的torch.hub
界面提供用于翻译和语言建模的预训练模型:
en2de = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.en-de.single_model')en2de.translate('Hello world', beam=5)# 'Hallo Welt'
请参阅 PyTorch Hub 翻译教程和 RoBERTa 了解更多示例。
PyTorch 版本 >= 1.10.0
Python 版本 >= 3.8
为了训练新模型,您还需要 NVIDIA GPU 和 NCCL
安装 fairseq并在本地开发:
git 克隆 https://github.com/pytorch/fairseqcd fairseq pip install --editable ./# 在 MacOS 上:# CFLAGS="-stdlib=libc++" pip install --editable ./# 安装最新的稳定版本 (0.10.x)# pip install fairseq
为了更快地训练,请安装 NVIDIA 的 apex 库:
git 克隆 https://github.com/NVIDIA/apexcd apex pip install -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: pip install pyarrow
如果您使用 Docker,请确保使用--ipc=host
或--shm-size
作为nvidia-docker run
的命令行选项来增加共享内存大小。
完整的文档包含入门、训练新模型以及使用新模型类型和任务扩展 fairseq 的说明。
我们为下面列出的多项任务提供预训练模型和预处理的二值化测试集,以及示例训练和评估命令。
翻译:卷积和变压器模型可用
语言建模:提供卷积和变压器模型
我们还有更详细的自述文件来重现特定论文的结果:
XLS-R:大规模自监督跨语言语音表示学习(Babu 等人,2021)
用于迭代自我监督训练的跨语言检索(Tran 等人,2020)
wav2vec 2.0:语音表示自监督学习框架(Baevski 等人,2020)
神经机器翻译的无监督质量估计(Fomicheva 等人,2020)
使用量化噪声进行极限模型压缩训练({Fan*, Stock*} 等人,2020)
具有字节级子词的神经机器翻译(Wang 等人,2020)
神经机器翻译的多语言去噪预训练(Liu et at.,2020)
通过结构化压降按需减少变压器深度(Fan 等人,2019)
联合学习与 Transformer 模型对齐和翻译(Garg et al., 2019)
Levenshtein Transformer(Gu 等人,2019)
Facebook FAIR 的 WMT19 新闻翻译任务提交(Ng 等人,2019)
RoBERTa:一种稳健优化的 BERT 预训练方法(Liu 等人,2019)
wav2vec:语音识别的无监督预训练(Schneider 等人,2019)
多样化机器翻译的混合模型:交易技巧(Shen 等人,2019)
通过轻量级和动态卷积减少注意力(Wu 等人,2019)
大规模理解反向翻译(Edunov 等人,2018)
序列到序列学习的经典结构化预测损失(Edunov 等人,2018)
分层神经故事生成(Fan 等人,2018)
缩放神经机器翻译(Ott 等人,2018)
卷积序列到序列学习(Gehring et al., 2017)
使用门控卷积网络进行语言建模(Dauphin 等人,2017)
推特:https://twitter.com/fairseq
Facebook 页面:https://www.facebook.com/groups/fairseq.users
谷歌群组:https://groups.google.com/forum/#!forum/fairseq-users
fairseq(-py) 是 MIT 许可的。该许可证也适用于预先训练的模型。
请引用为:
@inproceedings{ott2019fairseq,标题 = {fairseq:用于序列建模的快速、可扩展工具包},作者 = {Myle Ott 和 Sergey Edunov 和 Alexei Baevski 和 Angela Fan 和 Sam Gross 和 Nathan Ng 和 David Grangier 和 Michael Auli},书名 = {NAACL-HLT 2019 会议记录:演示},年份 = {2019}, }