Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Requirements and Installation

  • PyTorch version >= 1.10.0
  • Python version >= 3.8

1.下载安装

  • To install fairseq and develop locally:
git clone https://github.com/tandede/fairseq.git
cd fairseq
sh prework.sh
pip install --editable ./

如果报:ERROR: Cannot install fairseq and fairseq==0.12.2 because these package versions have conflicting dependencies.

则:

pip install pip==24.0

修改部分

主要修改修改了两个文件

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

2. 数据下载、预处理

直接使用sh文件

sh data_download.sh

或者逐步使用以下命令

cd fairseq/examples/translation
 ./prepare-wmt14en2de.sh

若报:bash: ./prepare-wmt14en2de.sh: Permission denied

则:

chmod +x prepare-wmt14en2de.sh

3.Binarize the dataset

直接使用sh文件

sh data_prepare.sh

或者使用以下命令

cd ../..
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

4. Train

使用sh文件

sh pretrain.sh

或使用以下命令单卡训练

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

5. Test

平均检查点

使用sh文件

sh average.sh

python scripts/average_checkpoints.py \
  --inputs checkpoints \
  --num-epoch-checkpoints  5 --output averaged_model.pt

生成测试文件

使用sh文件

sh generate.sh

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

计算bleu分数

使用sh文件

sh socre.sh

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},
}

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages