Requirements and Installation
PyTorch version >= 1.10.0
Python version >= 3.8
To install fairseq and develop locally:
git clone https://github.com/tandede/fairseq.git
pip install --editable ./
如果报:ERROR: Cannot install fairseq and fairseq==0.12.2 because these package versions have conflicting dependencies.
1. 修改了Rope-fairseq/fairseq/modules/multihead_attention.py
添加了rope函数接口,使其能够融入transformer预训练中
2. 修改了Rope-fairseq/fairseq/modules/rotary_positional_embedding.py
3.将Rope-fairseq/fairseq/models/transformer中下的几个python文件,将原始绝对位置编码进行注释,不进行添加
Pre-trained models and examples
cd fairseq/examples/translation
若报:bash: ./prepare-wmt14en2de.sh: Permission denied
chmod +x prepare-wmt14en2de.sh
fairseq-preprocess \
--source-lang en --target-lang de \
--trainpref examples/translation/wmt17_en_de/train \
--validpref examples/translation/wmt17_en_de/valid \
--testpref examples/translation/wmt17_en_de/test \
--destdir data-bin/wmt17_en_de --thresholdtgt 0 --thresholdsrc 0 \
--workers 20
CUDA_VISIBLE_DEVICES=0 fairseq-train \
data-bin/wmt17_en_de \
--arch transformer_wmt_en_de --share-decoder-input-output-embed \
--optimizer adam --adam-betas ' (0.9, 0.98)' --clip-norm 0.0 \
--lr 5e-4 --lr-scheduler inverse_sqrt --warmup-updates 4000 \
--dropout 0.3 --weight-decay 0.0001 \
--criterion label_smoothed_cross_entropy --label-smoothing 0.1 \
--max-tokens 4096 \
--eval-bleu \
--eval-bleu-args ' {"beam": 5, "max_len_a": 1.2, "max_len_b": 10}' \
--eval-bleu-detok moses \
--eval-bleu-remove-bpe \
--eval-bleu-print-samples \
--best-checkpoint-metric bleu --maximize-best-checkpoint-metric \
--tensorboard-logdir ./tensorboard_logs/rope \
--keep-last-epochs 5 \
--save-dir checkpoints/rope
CUDA_VISIBLE_DEVICES=0,1 fairseq-train \
data-bin/wmt17_en_de \
--distributed-world-size 2 \
--distributed-num-procs 2 \
--arch transformer_wmt_en_de --share-all-embeddings \
--optimizer adam --adam-betas ' (0.9, 0.98)' \
--clip-norm 0.0 --lr-scheduler inverse_sqrt --warmup-init-lr 1e-07 --warmup-updates 4000 \
--lr 5e-4 --min-lr 1e-09 --criterion label_smoothed_cross_entropy \
--label-smoothing 0.1 --dropout 0.3 --weight-decay 0.0001 --max-tokens 4096 \
--eval-bleu \
--eval-bleu-args ' {"beam": 4, "max_len_a": 1.2, "max_len_b": 10}' \
--eval-bleu-detok moses \
--eval-bleu-remove-bpe \
--eval-bleu-print-samples \
--best-checkpoint-metric bleu --maximize-best-checkpoint-metric \
--update-freq 2 \
--tensorboard-logdir ./tensorboard_logs \
--save-interval-updates 5000 \
--keep-interval-updates 5 \
--save-dir checkpoints \
| tee exp3.log
python scripts/average_checkpoints.py \
--inputs checkpoints \
--num-epoch-checkpoints 5 --output averaged_model.pt
CUDA_VISIBLE_DEVICES=0 python fairseq_cli/generate.py \
data-bin/wmt17_en_de --path averaged_model.pt \
--remove-bpe --beam 4 --batch-size 64 --lenpen 0.6 \
--max-len-a 1 --max-len-b 50| tee generate.out
grep ^T generate.out | cut -f2- | perl -ple ' s{(\S)-(\S)}{$1 ##AT##-##AT## $2}g' > generate.ref
grep ^H generate.out | cut -f3- | perl -ple ' s{(\S)-(\S)}{$1 ##AT##-##AT## $2}g' > generate.sys
python fairseq_cli/score.py \
--sys generate.sys \
--ref generate.ref
@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} ,
}