@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
إصدار باي تورش >= 1.0.0
التكوين >= 0.14
لتدريب النماذج الجديدة، ستحتاج أيضًا إلى وحدة معالجة الرسومات NVIDIA وNCCL
قاعدة التعليمات البرمجية
لتثبيت fairseq من المصدر وتطويره محليًا:
تثبيت النقطة - قابل للتحرير.
وحدات مخصصة
نحتاج أيضًا إلى إنشاء lightconv
و dynamicconv
لدعم GPU.
Lightconv_layer
cd fairseq/modules/lightconv_layer بيثون cuda_function_gen.py تثبيت بيثون setup.py
Dynamicconv_layer
cd fairseq/modules/dynamicconv_layer بيثون cuda_function_gen.py تثبيت بيثون setup.py
نحن نتابع إعداد البيانات في fairseq. لتنزيل البيانات ومعالجتها مسبقًا، يمكن تشغيلها
تكوينات باش/iwslt14.de-en/prepare.sh
نحن نتبع المعالجة المسبقة للبيانات في fairseq. لتنزيل البيانات ومعالجتها مسبقًا، يمكن تشغيلها
تكوينات باش/wmt14.en-fr/prepare.sh
نحن نتبع المعالجة المسبقة للبيانات في fairseq. ينبغي للمرء أولاً تنزيل البيانات المعالجة مسبقًا من Google Drive الذي توفره Google. لثنائية البيانات، يمكن تشغيلها
bash configs/wmt16.en-de/prepare.sh [المسار إلى الملف المضغوط الذي تم تنزيله]
نظرًا لأن مهمة نموذج اللغة تحتوي على العديد من الرموز الإضافية، فإننا نضعها في فرع آخر: language-model
. نحن نتبع المعالجة المسبقة للبيانات في fairseq. لتنزيل البيانات ومعالجتها مسبقًا، يمكن تشغيلها
نموذج لغة git checkout تكوينات باش/wikitext-103/prepare.sh
على سبيل المثال، لاختبار النماذج على WMT'14 En-Fr، يمكن تشغيلها
configs/wmt14.en-fr/test.sh [المسار إلى نقاط التحقق النموذجية] [معرف وحدة معالجة الرسومات] [اختبار|صالح]
على سبيل المثال، لتقييم Lite Transformer على GPU 0 (مع درجة BLEU في مجموعة الاختبار WMT'14 En-Fr)، يمكن للمرء تشغيل
configs/wmt14.en-fr/test.sh embed496/ 0 اختبار
نحن نقدم العديد من النماذج المدربة مسبقًا في الأسفل. يمكنك تنزيل النموذج واستخراج الملف من خلاله
القطران -xzvf [اسم الملف]
لقد قدمنا عدة أمثلة لتدريب Lite Transformer باستخدام هذا الريبو:
لتدريب Lite Transformer على WMT'14 En-Fr (مع 8 وحدات معالجة رسوميات)، يمكن تشغيله
بايثون Train.py data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml
لتدريب Lite Transformer باستخدام وحدات معالجة رسومات أقل، على سبيل المثال 4 وحدات معالجة رسومات، يمكن للمرء تشغيله
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 [المسار إلى البيانات الثنائية] - التكوينات [المسار إلى ملف التكوين] [خيارات التجاوز]
لاحظ أنه يجب تعديل --update-freq
وفقًا لأرقام وحدة معالجة الرسومات (16 لـ 8 وحدات معالجة رسوميات، و32 لـ 4 وحدات معالجة رسوميات).
لتدريب Lite Transformer بطريقة موزعة. على سبيل المثال، على عقدتين GPU مع 16 وحدة معالجة رسومات إجمالية.
# على 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 --الموزعة بدون تفرخ --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 data/binary/wmt14_en_fr --configs configs/wmt14.en-fr/attention/multibranch_v2/embed496.yml --الموزعة بدون تفرخ --تحديث التكرار 8
نحن نقدم نقاط التفتيش لمحولنا Lite المذكور في الورقة:
مجموعة البيانات | #إضافات متعددة | نتيجة الاختبار | مجموعة النموذج والاختبار |
---|---|---|---|
WMT'14 En-Fr | 90 م | 35.3 | تحميل |
360 م | 39.1 | تحميل | |
527 م | 39.6 | تحميل | |
WMT'16 إن دي | 90 م | 22.5 | تحميل |
360 م | 25.6 | تحميل | |
527 م | 26.5 | تحميل | |
سي إن إن / ديلي ميل | 800 م | 38.3 (RL) | تحميل |
ويكيتكست-103 | 1147 م | 22.2 (بل) | تحميل |