@inproceedings{Wu2020LiteTransformer, title={Lite Transformer with Long-Short Range Attention}, author={Zhanghao Wu* and Zhijian Liu* and Ji Lin and Yujun Lin and Song Han}, booktitle={International Conference on Learning Representations (ICLR)}, year={2020} }
Versi Python >= 3.6
Versi PyTorch >= 1.0.0
konfigurasi parse >= 0,14
Untuk melatih model baru, Anda juga memerlukan GPU NVIDIA dan NCCL
Basis kode
Untuk menginstal fairseq dari sumber dan mengembangkan secara lokal:
instalasi pip --dapat diedit.
Modul yang Disesuaikan
Kita juga perlu membangun lightconv
dan dynamicconv
untuk dukungan GPU.
Lightconv_layer
cd fairseq/modules/lightconv_layer python cuda_function_gen.py setup python.py instal
Lapisan_Konv Dinamis
cd fairseq/modules/dynamicconv_layer python cuda_function_gen.py setup python.py instal
Kami mengikuti persiapan data di fairseq. Untuk mengunduh dan memproses data terlebih dahulu, seseorang dapat menjalankannya
konfigurasi bash/iwslt14.de-en/prepare.sh
Kami mengikuti pra-pemrosesan data di fairseq. Untuk mengunduh dan memproses data terlebih dahulu, seseorang dapat menjalankannya
konfigurasi bash/wmt14.en-fr/prepare.sh
Kami mengikuti pra-pemrosesan data di fairseq. Pertama-tama seseorang harus mengunduh data yang telah diproses sebelumnya dari Google Drive yang disediakan oleh Google. Untuk melakukan binerisasi data, seseorang dapat menjalankannya
bash configs/wmt16.en-de/prepare.sh [jalur ke file zip yang diunduh]
Karena tugas model bahasa memiliki banyak kode tambahan, kami menempatkannya di cabang lain: language-model
. Kami mengikuti pra-pemrosesan data di fairseq. Untuk mengunduh dan memproses data terlebih dahulu, seseorang dapat menjalankannya
model bahasa git checkout konfigurasi bash/wikitext-103/prepare.sh
Misalnya, untuk menguji model pada WMT'14 En-Fr, seseorang dapat menjalankannya
configs/wmt14.en-fr/test.sh [jalur ke pos pemeriksaan model] [gpu-id] [test|valid]
Misalnya, untuk mengevaluasi Lite Transformer pada GPU 0 (dengan skor BLEU pada set pengujian WMT'14 En-Fr), seseorang dapat menjalankan
configs/wmt14.en-fr/test.sh embed496/ 0 tes
Kami menyediakan beberapa model terlatih di bagian bawah. Anda dapat mengunduh model dan mengekstrak filenya
tar -xzvf [nama file]
Kami memberikan beberapa contoh untuk melatih Lite Transformer dengan repo ini:
Untuk melatih Lite Transformer di WMT'14 En-Fr (dengan 8 GPU), seseorang dapat menjalankannya
python train.py data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml
Untuk melatih Lite Transformer dengan GPU yang lebih sedikit, misalnya 4 GPU, dapat dijalankan
CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml --update-freq 32
Secara umum, untuk melatih suatu model, seseorang dapat berlari
python train.py [jalur ke biner data] --configs [jalur ke file konfigurasi] [opsi penggantian]
Perhatikan bahwa --update-freq
harus disesuaikan dengan nomor GPU (16 untuk 8 GPU, 32 untuk 4 GPU).
Untuk melatih Lite Transformer secara terdistribusi. Misalnya pada dua node GPU dengan total 16 GPU.
# Di host1python -m torch.distributed.launch --nproc_per_node=8 --nnodes=2 --node_rank=0 --master_addr=host1 --master_port=8080 train.py data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml --didistribusikan-tidak muncul --update-freq 8# Di host2python -m torch.distributed.launch --nproc_per_node=8 --node=2 --node_rank=1 --master_addr=host1 --master_port=8080 train.py data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml --didistribusikan-tidak muncul --frekuensi pembaruan 8
Kami menyediakan pos pemeriksaan untuk Lite Transformer kami yang dilaporkan di koran:
Kumpulan data | #Banyak-Tambah | Skor Tes | Model dan Set Uji |
---|---|---|---|
WMT'14 En-Fr | 90M | 35.3 | unduh |
360M | 39.1 | unduh | |
527M | 39.6 | unduh | |
WMT'16 En-De | 90M | 22.5 | unduh |
360M | 25.6 | unduh | |
527M | 26.5 | unduh | |
CNN / Surat Harian | 800M | 38.3 (RL) | unduh |
WIKITEXT-103 | 1147M | 22.2 (PPL) | unduh |