@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} }
เวอร์ชันไพธอน >= 3.6
เวอร์ชัน PyTorch >= 1.0.0
กำหนดค่าพาร์ส >= 0.14
สำหรับการฝึกฝนโมเดลใหม่ คุณจะต้องมี NVIDIA GPU และ NCCL ด้วย
รหัสเบส
วิธีติดตั้ง fairseq จากแหล่งที่มาและพัฒนาในเครื่อง:
pip ติดตั้ง --editable .
โมดูลคอสตูม
เรายังจำเป็นต้องสร้าง lightconv
และ dynamicconv
เพื่อรองรับ GPU
Lightconv_layer
ซีดี fairseq/โมดูล/lightconv_layer.cd หลาม cuda_function_gen.py หลาม setup.py ติดตั้ง
Dynamicconv_layer
ซีดี fairseq/โมดูล/dynamicconv_layer.cd หลาม cuda_function_gen.py หลาม setup.py ติดตั้ง
เราติดตามการเตรียมข้อมูลใน fairseq หากต้องการดาวน์โหลดและประมวลผลข้อมูลล่วงหน้า คุณสามารถเรียกใช้ได้
ทุบตี configs/iwslt14.de-en/prepare.sh
เราติดตามการประมวลผลข้อมูลล่วงหน้าใน fairseq หากต้องการดาวน์โหลดและประมวลผลข้อมูลล่วงหน้า คุณสามารถเรียกใช้ได้
ทุบตี configs/wmt14.en-fr/prepare.sh
เราติดตามการประมวลผลข้อมูลล่วงหน้าใน fairseq ก่อนอื่นควรดาวน์โหลดข้อมูลที่ประมวลผลล่วงหน้าจาก Google Drive ที่ Google เตรียมไว้ให้ หากต้องการแบ่งข้อมูลออกเป็นสองส่วนเราสามารถเรียกใช้ได้
bash configs/wmt16.en-de/prepare.sh [เส้นทางไปยังไฟล์ zip ที่ดาวน์โหลด]
เนื่องจากงานโมเดลภาษามีโค้ดเพิ่มเติมมากมาย เราจึงวางไว้ในสาขาอื่น: language-model
เราติดตามการประมวลผลข้อมูลล่วงหน้าใน fairseq หากต้องการดาวน์โหลดและประมวลผลข้อมูลล่วงหน้า คุณสามารถเรียกใช้ได้
git checkout ภาษา-โมเดล ทุบตี configs/wikitext-103/prepare.sh
ตัวอย่างเช่น หากต้องการทดสอบโมเดลบน WMT'14 En-Fr เราสามารถทำได้
configs/wmt14.en-fr/test.sh [เส้นทางไปยังจุดตรวจสอบโมเดล] [gpu-id] [ทดสอบ | ถูกต้อง]
ตัวอย่างเช่น ในการประเมิน Lite Transformer บน GPU 0 (ด้วยคะแนน BLEU ในชุดทดสอบของ WMT'14 En-Fr) เราสามารถรันได้
configs/wmt14.en-fr/test.sh ทดสอบ embed496/ 0
เรามีโมเดลที่ผ่านการฝึกอบรมไว้หลายแบบที่ด้านล่าง คุณสามารถดาวน์โหลดโมเดลและแตกไฟล์ได้โดย
tar -xzvf [ชื่อไฟล์]
เราได้จัดเตรียมตัวอย่างไว้หลายตัวอย่างเพื่อฝึก Lite Transformer ด้วย repo นี้:
หากต้องการฝึก Lite Transformer บน WMT'14 En-Fr (พร้อม 8 GPU) เราสามารถทำงานได้
หลาม train.py data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml
หากต้องการฝึก Lite Transformer ด้วย GPU น้อยกว่า เช่น 4 GPUS เราก็สามารถรันได้
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
โดยทั่วไปแล้ว ในการฝึกโมเดล เราสามารถทำได้
python train.py [เส้นทางไปยังไบนารีข้อมูล] --configs [เส้นทางไปยังไฟล์กำหนดค่า] [แทนที่ตัวเลือก]
โปรดทราบว่า --update-freq
ควรปรับตามหมายเลข GPU (16 สำหรับ 8 GPUs, 32 สำหรับ 4 GPUs)
เพื่อฝึก Lite Transformer ในลักษณะกระจาย ตัวอย่างเช่น บนโหนด GPU สองโหนดที่มี GPU ทั้งหมด 16 ตัว
# บน host1python -m torch.distributed.launch --nproc_per_node=8 --nnodes=2 --node_rank=0 --master_addr=host1 --master_port=8080 ข้อมูล train.py/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml --แจกจ่าย-ไม่มี-วางไข่ --update-freq 8# บน host2python -m torch.distributed.launch --nproc_per_node=8 --nnodes=2 --node_rank=1 --master_addr=host1 --master_port=8080 ข้อมูล train.py/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml --แจกจ่าย-ไม่มี-วางไข่ --อัพเดตความถี่ 8
เราจัดให้มีจุดตรวจสอบสำหรับ Lite Transformer ของเราที่รายงานในรายงาน:
ชุดข้อมูล | #Mult-เพิ่ม | คะแนนสอบ | โมเดลและชุดทดสอบ |
---|---|---|---|
WMT'54 อัง-ศ | 90ม | 35.3 | ดาวน์โหลด |
360ม | 39.1 | ดาวน์โหลด | |
527ม | 39.6 | ดาวน์โหลด | |
WMT'16 เอน-เด | 90ม | 22.5 | ดาวน์โหลด |
360ม | 25.6 | ดาวน์โหลด | |
527ม | 26.5 | ดาวน์โหลด | |
ซีเอ็นเอ็น / เดลี่เมล์ | 800ม | 38.3 (อาร์แอล) | ดาวน์โหลด |
วิกิเท็กซ์-103 | 1147ม | 22.2 (พีพีแอล) | ดาวน์โหลด |