Fairseq(-py)是一个序列建模工具包,允许研究人员和开发人员训练用于翻译、摘要、语言建模和其他文本生成任务的自定义模型。
我们提供了各种序列建模论文的参考实现:
已实现的论文列表
- 卷积神经网络 (CNN)
- 轻量卷积和动态卷积模型
- 长短期记忆 (LSTM) 网络
- 基于注意力的神经机器翻译的有效方法 (Luong et al., 2015)
- Transformer (自注意力) 网络
- 注意力即一切 (Vaswani et al., 2017)
- 扩展神经机器翻译 (Ott et al., 2018)
- 大规模反向翻译的理解 (Edunov et al., 2018)
- 神经语言模型的自适应输入表示 (Baevski and Auli, 2018)
- 具有动态束分配的词汇约束解码 (Post & Vilar, 2018)
- Transformer-XL: 超越固定长度上下文的注意力语言模型 (Dai et al., 2019)
- Transformer的自适应注意跨度 (Sukhbaatar et al., 2019)
- 多样化机器翻译的混合模型: 实践技巧 (Shen et al., 2019)
- RoBERTa: 灵活优化的BERT预训练方法 (Liu et al., 2019)
- Facebook FAIR的WMT19新闻翻译任务提交 (Ng et al., 2019)
- 使用Transformer模型联合学习对齐和翻译 (Garg et al., 2019)
- 神经机器翻译的多语言去噪预训练 (Liu et at., 2020)
- 基于字节级子词的神经机器翻译 (Wang et al., 2020)
- 神经机器翻译的无监督质量评估 (Fomicheva et al., 2020)
- wav2vec 2.0: 自监督学习的语音表示框架 (Baevski et al., 2020)
- 使用序列到序列模型生成医疗报告 (Enarvi et al., 2020)
- Linformer: 线性复杂度的自注意力 (Wang et al., 2020)
- 用于迭代自监督训练的跨语言检索 (Tran et al., 2020)
- 具有潜在深度的深度Transformer (Li et al., 2020)
- 语音识别的无监督跨语言表示学习 (Conneau et al., 2020)
- 自监督学习的自我训练和预训练互补性 (Xu et al., 2020)
- 鲁棒的wav2vec 2.0: 分析自监督预训练中的域偏移 (Hsu, et al., 2021)
- 无监督语音识别 (Baevski, et al., 2021)
- 简单有效的零样本跨语言音素识别 (Xu et al., 2021)
- VideoCLIP: 用于零样本视频文本理解的对比预训练 (Xu et. al., 2021)
- VLM: 用于视频理解的任务无关视频语言模型预训练 (Xu et. al., 2021)
- NormFormer: 通过额外规范化改进Transformer预训练 (Shleifer et. al, 2021)
- 非自回归Transformer
- 非自回归神经机器翻译 (Gu et al., 2017)
- 通过迭代精炼的确定性非自回归神经序列建模 (Lee et al. 2018)
- 插入Transformer: 通过插入操作实现灵活序列生成 (Stern et al. 2019)
- Mask-Predict: 条件掩码语言模型的并行解码 (Ghazvininejad et al., 2019)
- Levenshtein Transformer (Gu et al., 2019)
- 微调
更新内容:
- 2023年5月 发布了扩展语音技术到1000+种语言的模型 (Pratap, et al., 2023)
- 2022年6月 发布了从 Towards End-to-end Unsupervised Speech Recognition (Liu, et al., 2022) 中的wav2vec-U 2.0代码
- 2022年5月 与xFormers集成
- 2021年12月 发布了直接语音到语音翻译代码
- 2021年10月 发布了VideoCLIP和VLM模型
- 2021年10月 发布了多语言微调的XLSR-53模型
- 2021年9月
master
分支重命名为main
- 2021年7月 发布了DrNMT代码
- 2021年7月 发布了鲁棒的wav2vec 2.0模型
- 2021年6月 发布了XLMR-XL和XLMR-XXL模型
- 2021年5月 发布了无监督语音识别代码
- 2021年3月 添加了完整的参数和优化器状态分片+CPU卸载
- 2021年2月 添加了LASER训练代码
- 2020年12月: 添加了自适应注意跨度代码
- 2020年12月: 发布了GottBERT模型和代码
- 2020年11月: 采用了 Hydra 配置框架
- 2020年11月: 发布了fairseq 0.10.0
- 2020年10月: 添加了R3F/R4F (更好的微调) 代码
- 2020年10月: 发布了具有潜在深度的深度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 的更多示例。
需求与安装
git clone https://github.com/pytorch/fairseq
cd fairseq
pip install --editable ./
# 在MacOS上:
# CFLAGS="-stdlib=libc++" pip install --editable ./
# 安装最新的稳定版本 (0.10.x)
# pip install fairseq
- 为了更快的训练 安装 NVIDIA 的 apex 库:
git clone https://github.com/NVIDIA/apex
cd 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 的说明。
预训练模型和示例
我们提供了预训练模型和预处理、二进制化测试集用于以下任务,并提供示例训练和评估命令。
我们还提供了更详细的README,以重现特定论文的结果:
- XLS-R: 规模化自监督跨语言语音表示学习(Babu 等人,2021)
- 迭代自监督训练的跨语言检索(Tran 等人,2020)
- wav2vec 2.0: 自监督语音表示学习框架(Baevski 等人,2020)
- 神经机器翻译的无监督质量评估(Fomicheva 等人,2020)
- 量化噪声训练以进行极端模型压缩({Fan*, Stock*} 等人,2020)
- 字节级子词的神经机器翻译(Wang 等人,2020)
- 神经机器翻译的多语言去噪预训练(Liu 等人,2020)
- 通过结构丢弃按需减少变压器深度(Fan 等人,2019)
- 联合学习对齐和翻译使用变压器模型(Garg 等人,2019)
- Levenshtein 变压器(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 等人,2017)
- 使用门卷积网络进行语言建模(Dauphin 等人,2017)
加入 fairseq 社区
- Twitter: https://twitter.com/fairseq
- Facebook 页面: https://www.facebook.com/groups/fairseq.users
- Google 群组: https://groups.google.com/forum/#!forum/fairseq-users
许可证
fairseq(-py) 授权为 MIT 许可证。 该许可证也适用于预训练模型。
引用
请引用以下内容:
@inproceedings{ott2019fairseq,
title = {fairseq: A Fast, Extensible Toolkit for Sequence Modeling},
author = {Myle Ott and Sergey Edunov and Alexei Baevski and Angela Fan and Sam Gross and Nathan Ng and David Grangier and Michael Auli},
booktitle = {Proceedings of NAACL-HLT 2019: Demonstrations},
year = {2019},
}