Spaces:
Running
Running
<p align="center"> | |
<img src="docs/fairseq_logo.png" width="150"> | |
<br /> | |
<br /> | |
<a href="https://github.com/pytorch/fairseq/blob/main/LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg" /></a> | |
<a href="https://github.com/pytorch/fairseq/releases"><img alt="Latest Release" src="https://img.shields.io/github/release/pytorch/fairseq.svg" /></a> | |
<a href="https://github.com/pytorch/fairseq/actions?query=workflow:build"><img alt="Build Status" src="https://github.com/pytorch/fairseq/workflows/build/badge.svg" /></a> | |
<a href="https://fairseq.readthedocs.io/en/latest/?badge=latest"><img alt="Documentation Status" src="https://readthedocs.org/projects/fairseq/badge/?version=latest" /></a> | |
</p> | |
-------------------------------------------------------------------------------- | |
Fairseq(-py) is a sequence modeling toolkit that allows researchers and | |
developers to train custom models for translation, summarization, language | |
modeling and other text generation tasks. | |
We provide reference implementations of various sequence modeling papers: | |
<details><summary>List of implemented papers</summary><p> | |
* **Convolutional Neural Networks (CNN)** | |
+ [Language Modeling with Gated Convolutional Networks (Dauphin et al., 2017)](examples/language_model/conv_lm/README.md) | |
+ [Convolutional Sequence to Sequence Learning (Gehring et al., 2017)](examples/conv_seq2seq/README.md) | |
+ [Classical Structured Prediction Losses for Sequence to Sequence Learning (Edunov et al., 2018)](https://github.com/pytorch/fairseq/tree/classic_seqlevel) | |
+ [Hierarchical Neural Story Generation (Fan et al., 2018)](examples/stories/README.md) | |
+ [wav2vec: Unsupervised Pre-training for Speech Recognition (Schneider et al., 2019)](examples/wav2vec/README.md) | |
* **LightConv and DynamicConv models** | |
+ [Pay Less Attention with Lightweight and Dynamic Convolutions (Wu et al., 2019)](examples/pay_less_attention_paper/README.md) | |
* **Long Short-Term Memory (LSTM) networks** | |
+ Effective Approaches to Attention-based Neural Machine Translation (Luong et al., 2015) | |
* **Transformer (self-attention) networks** | |
+ Attention Is All You Need (Vaswani et al., 2017) | |
+ [Scaling Neural Machine Translation (Ott et al., 2018)](examples/scaling_nmt/README.md) | |
+ [Understanding Back-Translation at Scale (Edunov et al., 2018)](examples/backtranslation/README.md) | |
+ [Adaptive Input Representations for Neural Language Modeling (Baevski and Auli, 2018)](examples/language_model/README.adaptive_inputs.md) | |
+ [Lexically constrained decoding with dynamic beam allocation (Post & Vilar, 2018)](examples/constrained_decoding/README.md) | |
+ [Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (Dai et al., 2019)](examples/truncated_bptt/README.md) | |
+ [Adaptive Attention Span in Transformers (Sukhbaatar et al., 2019)](examples/adaptive_span/README.md) | |
+ [Mixture Models for Diverse Machine Translation: Tricks of the Trade (Shen et al., 2019)](examples/translation_moe/README.md) | |
+ [RoBERTa: A Robustly Optimized BERT Pretraining Approach (Liu et al., 2019)](examples/roberta/README.md) | |
+ [Facebook FAIR's WMT19 News Translation Task Submission (Ng et al., 2019)](examples/wmt19/README.md) | |
+ [Jointly Learning to Align and Translate with Transformer Models (Garg et al., 2019)](examples/joint_alignment_translation/README.md ) | |
+ [Multilingual Denoising Pre-training for Neural Machine Translation (Liu et at., 2020)](examples/mbart/README.md) | |
+ [Neural Machine Translation with Byte-Level Subwords (Wang et al., 2020)](examples/byte_level_bpe/README.md) | |
+ [Unsupervised Quality Estimation for Neural Machine Translation (Fomicheva et al., 2020)](examples/unsupervised_quality_estimation/README.md) | |
+ [wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations (Baevski et al., 2020)](examples/wav2vec/README.md) | |
+ [Generating Medical Reports from Patient-Doctor Conversations Using Sequence-to-Sequence Models (Enarvi et al., 2020)](examples/pointer_generator/README.md) | |
+ [Linformer: Self-Attention with Linear Complexity (Wang et al., 2020)](examples/linformer/README.md) | |
+ [Cross-lingual Retrieval for Iterative Self-Supervised Training (Tran et al., 2020)](examples/criss/README.md) | |
+ [Deep Transformers with Latent Depth (Li et al., 2020)](examples/latent_depth/README.md) | |
+ [Unsupervised Cross-lingual Representation Learning for Speech Recognition (Conneau et al., 2020)](https://arxiv.org/abs/2006.13979) | |
+ [Robust wav2vec 2.0: Analyzing Domain Shift in Self-Supervised Pre-Training (Hsu, et al., 2021)](https://arxiv.org/abs/2104.01027) | |
+ [Unsupervised Speech Recognition (Baevski, et al., 2021)](https://arxiv.org/abs/2105.11084) | |
* **Non-autoregressive Transformers** | |
+ Non-Autoregressive Neural Machine Translation (Gu et al., 2017) | |
+ Deterministic Non-Autoregressive Neural Sequence Modeling by Iterative Refinement (Lee et al. 2018) | |
+ Insertion Transformer: Flexible Sequence Generation via Insertion Operations (Stern et al. 2019) | |
+ Mask-Predict: Parallel Decoding of Conditional Masked Language Models (Ghazvininejad et al., 2019) | |
+ [Levenshtein Transformer (Gu et al., 2019)](examples/nonautoregressive_translation/README.md) | |
* **Finetuning** | |
+ [Better Fine-Tuning by Reducing Representational Collapse (Aghajanyan et al. 2020)](examples/rxf/README.md) | |
</p></details> | |
### What's New: | |
* September 2021 [`master` branch renamed to `main`](https://github.com/github/renaming). | |
* July 2021 [Released DrNMT code](examples/discriminative_reranking_nmt/README.md) | |
* July 2021 [Released Robust wav2vec 2.0 model](examples/wav2vec/README.md) | |
* June 2021 [Released XLMR-XL and XLMR-XXL models](examples/xlmr/README.md) | |
* May 2021 [Released Unsupervised Speech Recognition code](examples/wav2vec/unsupervised/README.md) | |
* March 2021 [Added full parameter and optimizer state sharding + CPU offloading](examples/fully_sharded_data_parallel/README.md) | |
* February 2021 [Added LASER training code](examples/laser/README.md) | |
* December 2020: [Added Adaptive Attention Span code](examples/adaptive_span/README.md) | |
* December 2020: [GottBERT model and code released](examples/gottbert/README.md) | |
* November 2020: Adopted the [Hydra](https://github.com/facebookresearch/hydra) configuration framework | |
* [see documentation explaining how to use it for new and existing projects](docs/hydra_integration.md) | |
* November 2020: [fairseq 0.10.0 released](https://github.com/pytorch/fairseq/releases/tag/v0.10.0) | |
* October 2020: [Added R3F/R4F (Better Fine-Tuning) code](examples/rxf/README.md) | |
* October 2020: [Deep Transformer with Latent Depth code released](examples/latent_depth/README.md) | |
* October 2020: [Added CRISS models and code](examples/criss/README.md) | |
<details><summary>Previous updates</summary><p> | |
* September 2020: [Added Linformer code](examples/linformer/README.md) | |
* September 2020: [Added pointer-generator networks](examples/pointer_generator/README.md) | |
* August 2020: [Added lexically constrained decoding](examples/constrained_decoding/README.md) | |
* August 2020: [wav2vec2 models and code released](examples/wav2vec/README.md) | |
* July 2020: [Unsupervised Quality Estimation code released](examples/unsupervised_quality_estimation/README.md) | |
* May 2020: [Follow fairseq on Twitter](https://twitter.com/fairseq) | |
* April 2020: [Monotonic Multihead Attention code released](examples/simultaneous_translation/README.md) | |
* April 2020: [Quant-Noise code released](examples/quant_noise/README.md) | |
* April 2020: [Initial model parallel support and 11B parameters unidirectional LM released](examples/megatron_11b/README.md) | |
* March 2020: [Byte-level BPE code released](examples/byte_level_bpe/README.md) | |
* February 2020: [mBART model and code released](examples/mbart/README.md) | |
* February 2020: [Added tutorial for back-translation](https://github.com/pytorch/fairseq/tree/main/examples/backtranslation#training-your-own-model-wmt18-english-german) | |
* December 2019: [fairseq 0.9.0 released](https://github.com/pytorch/fairseq/releases/tag/v0.9.0) | |
* November 2019: [VizSeq released (a visual analysis toolkit for evaluating fairseq models)](https://facebookresearch.github.io/vizseq/docs/getting_started/fairseq_example) | |
* November 2019: [CamemBERT model and code released](examples/camembert/README.md) | |
* November 2019: [BART model and code released](examples/bart/README.md) | |
* November 2019: [XLM-R models and code released](examples/xlmr/README.md) | |
* September 2019: [Nonautoregressive translation code released](examples/nonautoregressive_translation/README.md) | |
* August 2019: [WMT'19 models released](examples/wmt19/README.md) | |
* July 2019: fairseq relicensed under MIT license | |
* July 2019: [RoBERTa models and code released](examples/roberta/README.md) | |
* June 2019: [wav2vec models and code released](examples/wav2vec/README.md) | |
</p></details> | |
### Features: | |
* multi-GPU training on one machine or across multiple machines (data and model parallel) | |
* fast generation on both CPU and GPU with multiple search algorithms implemented: | |
+ beam search | |
+ Diverse Beam Search ([Vijayakumar et al., 2016](https://arxiv.org/abs/1610.02424)) | |
+ sampling (unconstrained, top-k and top-p/nucleus) | |
+ [lexically constrained decoding](examples/constrained_decoding/README.md) (Post & Vilar, 2018) | |
* [gradient accumulation](https://fairseq.readthedocs.io/en/latest/getting_started.html#large-mini-batch-training-with-delayed-updates) enables training with large mini-batches even on a single GPU | |
* [mixed precision training](https://fairseq.readthedocs.io/en/latest/getting_started.html#training-with-half-precision-floating-point-fp16) (trains faster with less GPU memory on [NVIDIA tensor cores](https://developer.nvidia.com/tensor-cores)) | |
* [extensible](https://fairseq.readthedocs.io/en/latest/overview.html): easily register new models, criterions, tasks, optimizers and learning rate schedulers | |
* [flexible configuration](docs/hydra_integration.md) based on [Hydra](https://github.com/facebookresearch/hydra) allowing a combination of code, command-line and file based configuration | |
* [full parameter and optimizer state sharding](examples/fully_sharded_data_parallel/README.md) | |
* [offloading parameters to CPU](examples/fully_sharded_data_parallel/README.md) | |
We also provide [pre-trained models for translation and language modeling](#pre-trained-models-and-examples) | |
with a convenient `torch.hub` interface: | |
``` python | |
en2de = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.en-de.single_model') | |
en2de.translate('Hello world', beam=5) | |
# 'Hallo Welt' | |
``` | |
See the PyTorch Hub tutorials for [translation](https://pytorch.org/hub/pytorch_fairseq_translation/) | |
and [RoBERTa](https://pytorch.org/hub/pytorch_fairseq_roberta/) for more examples. | |
# Requirements and Installation | |
* [PyTorch](http://pytorch.org/) version >= 1.5.0 | |
* Python version >= 3.6 | |
* For training new models, you'll also need an NVIDIA GPU and [NCCL](https://github.com/NVIDIA/nccl) | |
* **To install fairseq** and develop locally: | |
``` bash | |
git clone https://github.com/pytorch/fairseq | |
cd fairseq | |
pip install --editable ./ | |
# on MacOS: | |
# CFLAGS="-stdlib=libc++" pip install --editable ./ | |
# to install the latest stable release (0.10.x) | |
# pip install fairseq | |
``` | |
* **For faster training** install NVIDIA's [apex](https://github.com/NVIDIA/apex) library: | |
``` bash | |
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" ./ | |
``` | |
* **For large datasets** install [PyArrow](https://arrow.apache.org/docs/python/install.html#using-pip): `pip install pyarrow` | |
* If you use Docker make sure to increase the shared memory size either with `--ipc=host` or `--shm-size` | |
as command line options to `nvidia-docker run` . | |
# Getting Started | |
The [full documentation](https://fairseq.readthedocs.io/) contains instructions | |
for getting started, training new models and extending fairseq with new model | |
types and tasks. | |
# Pre-trained models and examples | |
We provide pre-trained models and pre-processed, binarized test sets for several tasks listed below, | |
as well as example training and evaluation commands. | |
* [Translation](examples/translation/README.md): convolutional and transformer models are available | |
* [Language Modeling](examples/language_model/README.md): convolutional and transformer models are available | |
We also have more detailed READMEs to reproduce results from specific papers: | |
* [Cross-lingual Retrieval for Iterative Self-Supervised Training (Tran et al., 2020)](examples/criss/README.md) | |
* [wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations (Baevski et al., 2020)](examples/wav2vec/README.md) | |
* [Unsupervised Quality Estimation for Neural Machine Translation (Fomicheva et al., 2020)](examples/unsupervised_quality_estimation/README.md) | |
* [Training with Quantization Noise for Extreme Model Compression ({Fan*, Stock*} et al., 2020)](examples/quant_noise/README.md) | |
* [Neural Machine Translation with Byte-Level Subwords (Wang et al., 2020)](examples/byte_level_bpe/README.md) | |
* [Multilingual Denoising Pre-training for Neural Machine Translation (Liu et at., 2020)](examples/mbart/README.md) | |
* [Reducing Transformer Depth on Demand with Structured Dropout (Fan et al., 2019)](examples/layerdrop/README.md) | |
* [Jointly Learning to Align and Translate with Transformer Models (Garg et al., 2019)](examples/joint_alignment_translation/README.md) | |
* [Levenshtein Transformer (Gu et al., 2019)](examples/nonautoregressive_translation/README.md) | |
* [Facebook FAIR's WMT19 News Translation Task Submission (Ng et al., 2019)](examples/wmt19/README.md) | |
* [RoBERTa: A Robustly Optimized BERT Pretraining Approach (Liu et al., 2019)](examples/roberta/README.md) | |
* [wav2vec: Unsupervised Pre-training for Speech Recognition (Schneider et al., 2019)](examples/wav2vec/README.md) | |
* [Mixture Models for Diverse Machine Translation: Tricks of the Trade (Shen et al., 2019)](examples/translation_moe/README.md) | |
* [Pay Less Attention with Lightweight and Dynamic Convolutions (Wu et al., 2019)](examples/pay_less_attention_paper/README.md) | |
* [Understanding Back-Translation at Scale (Edunov et al., 2018)](examples/backtranslation/README.md) | |
* [Classical Structured Prediction Losses for Sequence to Sequence Learning (Edunov et al., 2018)](https://github.com/pytorch/fairseq/tree/classic_seqlevel) | |
* [Hierarchical Neural Story Generation (Fan et al., 2018)](examples/stories/README.md) | |
* [Scaling Neural Machine Translation (Ott et al., 2018)](examples/scaling_nmt/README.md) | |
* [Convolutional Sequence to Sequence Learning (Gehring et al., 2017)](examples/conv_seq2seq/README.md) | |
* [Language Modeling with Gated Convolutional Networks (Dauphin et al., 2017)](examples/language_model/README.conv.md) | |
# Join the fairseq community | |
* Twitter: https://twitter.com/fairseq | |
* Facebook page: https://www.facebook.com/groups/fairseq.users | |
* Google group: https://groups.google.com/forum/#!forum/fairseq-users | |
# License | |
fairseq(-py) is MIT-licensed. | |
The license applies to the pre-trained models as well. | |
# Citation | |
Please cite as: | |
``` bibtex | |
@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}, | |
} | |
``` | |