إصدار جديد
لقد أصدرنا تدريبًا عدوانيًا لكل من LM قبل التدريب/التغلب على العمل و F-Divergence.
التدريب العدواني على نطاق واسع لـ LMS: رمز الشب.
نموذج الشبكة العصبية الهجينة للمنطق المنطقي: رمز HNN
إذا كنت ترغب في استخدام الإصدار القديم ، فيرجى استخدام CMD التالي لاستنساخ الرمز:
git clone -b v0.1 https://github.com/namisan/mt-dnn.git
تحديث
نأسف لإبلاغك أنه بسبب تغيير السياسة ، لم يعد يوفر تخزينًا عامًا لمشاركة النماذج. نحن نعمل بجد للعثور على حل.
تنفذ حزمة Pytorch الشبكات العصبية العميقة متعددة المهام (MT-DNN) لفهم اللغة الطبيعية ، كما هو موضح في:
Xiaodong Liu*، Pengcheng He*، Weizhu Chen و Jianfeng Gao
شبكات عصبية عميقة متعددة المهام لفهم اللغة الطبيعية
ACL 2019
*: مساهمة متساوية
Xiaodong Liu ، Pengcheng He ، Weizhu Chen و Jianfeng Gao
تحسين الشبكات العصبية العميقة متعددة المهام عبر تقطير المعرفة لفهم اللغة الطبيعية
نسخة arxiv
Liyuan Liu ، Haoming Jiang ، Pengcheng He ، Weizhu Chen ، Xiaodong Liu ، Jianfeng Gao و Jiawei Han
على تباين معدل التعلم التكيفي وما بعده
ICLR 2020
Haoming Jiang ، Pengcheng He ، Weizhu Chen ، Xiaodong Liu ، Jianfeng Gao و Tuo Zhao
ذكي: صقل قوي وفعال لنماذج اللغة الطبيعية التي تم تدريبها مسبقًا من خلال التحسين المنظم المبدئي
ACL 2020
Xiaodong Liu ، Yu Wang ، Jianshu Ji ، Hao Cheng ، Xueyun Zhu ، Emmanuel Awa ، Pengcheng He ، Weizhu Chen ، Hoifung Poon ، Guihong Cao ، Jianfeng Gao
مجموعة أدوات Microsoft للشبكات العصبية العميقة متعددة المهام لفهم اللغة الطبيعية
ACL 2020
Hao Cheng و Xiaodong Liu و Lis Pereira و Yaoliang Yu و Jianfeng Gao
التنظيم التفاضلي الخلفي مع التقليل f لتحسين متانة النموذج
NAACL 2021
بيثون 3.6
مرجع إلى التنزيل والتثبيت: https://www.python.org/downloads/release/python-360/
تثبيت المتطلبات
> pip install -r requirements.txt
سحب Docker
> docker pull allenlao/pytorch-mt-dnn:v1.3
تشغيل Docker
> docker run -it --rm --runtime nvidia allenlao/pytorch-mt-dnn:v1.3 bash
يرجى الرجوع إلى الرابط التالي إذا كنت تستخدم Docker أولاً: https://docs.docker.com/
تنزيل البيانات
> sh download.sh
يرجى الرجوع إلى تنزيل مجموعة بيانات الغراء: https://gluebenchmark.com/
بيانات المعالجة المسبقة
> sh experiments/glue/prepro.sh
تمرين
> python train.py
لاحظ أننا أجرينا تجارب على 4 V100 وحدات معالجة الرسومات لنماذج MT-DNN الأساسية. قد تحتاج إلى تقليل حجم الدُفعة لعمليات معالجة الرسومات الأخرى.
تحسين MTL: صقل MT-DNN (الطبقات المشتركة) ، التي تم تهيئتها باستخدام نموذج BERT الذي تم تدريبه مسبقًا ، عبر MTL باستخدام جميع مهام الغراء باستثناء WNLI لتعلم تمثيل مشترك جديد.
لاحظ أننا قمنا بتشغيل هذه التجربة على 8 V100 GPU (32G) بحجم دفعة 32.
>scriptsrun_mt_dnn.sh Finetuning: Finetune MT-DNN لكل من مهام الغراء للحصول على نماذج خاصة بالمهمة.
هنا ، نقدم مثالين ، STS-B و RTE. يمكنك استخدام البرامج النصية المماثلة لتحقيق Finetune جميع مهام الغراء.
> scriptsrun_stsb.sh> scriptsrun_rte.sh تكييف المجال على Scitail
>scriptsscitail_domain_adaptation_bash.sh
تكييف المجال على SNLI
>scriptssnli_domain_adaptation_bash.sh
بيانات المعالجة المسبقة
أ) تنزيل بيانات ner إلى البيانات/ner بما في ذلك: {train/appal/test} .txt
ب) تحويل بيانات ner إلى التنسيق الكنسي: > python experimentsnerprepro.py --data dataner --output_dir datacanonical_data
ج) المعالجة المسبقة للبيانات الكنسي إلى تنسيق MT-DNN: > python prepro_std.py --root_dir datacanonical_data --task_def experimentsnerner_task_def.yml --model bert-base-uncased
تمرين
> python train.py --data_dir <data-path> --init_checkpoint <bert-base-uncased> --train_dataset squad,squad-v2 --test_dataset squad,squad-v2 --task_def experimentssquadsquad_task_def.yml
بيانات المعالجة المسبقة
أ) تنزيل بيانات فرقة إلى البيانات/الفريق بما في ذلك: {Train/Valive} .txt ثم قم بتغيير اسم الملف إلى: {squad_train/squad_dev} .json
ب) تحويل البيانات إلى تنسيق MT-DNN: > python experimentssquadsquad_prepro.py --root_dir datacanonical_data --task_def experimentssquadsquad_task_def.yml --model bert-base-uncased
تمرين
> python train.py --data_dir <data-path> --init_checkpoint <bert-model> --train_dataset ner --test_dataset ner --task_def experimentsnerner_task_def.yml
التدريب ADV في مراحل الضبط: > python train.py --data_dir <data-path> --init_checkpoint <bert/mt-dnn-model> --train_dataset mnli --test_dataset mnli_matched,mnli_mismatched --task_def experimentsglueglue_task_def.yml --adv_train --adv_opt 1
استخراج تضمينات مثال نص زوج
>python extractor.py --do_lower_case --finput input_examplespair-input.txt --foutput input_examplespair-output.json --bert_model bert-base-uncased --checkpoint mt_dnn_modelsmt_dnn_base.pt
لاحظ أن زوج النص ينقسم بواسطة رمز خاص ||| . يمكنك الرجوع إلى input_examplespair-output.json كمثال.
استخراج تضمينات مثال جملة واحدة
>python extractor.py --do_lower_case --finput input_examplessingle-input.txt --foutput input_examplessingle-output.json --bert_model bert-base-uncased --checkpoint mt_dnn_modelsmt_dnn_base.pt
تراكم التدرج
إذا كان لديك وحدات معالجة الرسومات الصغيرة ، فقد تحتاج إلى استخدام تراكم التدرج لجعل التدريب مستقرًا.
على سبيل المثال ، إذا كنت تستخدم العلامة: --grad_accumulation_step 4 أثناء التدريب ، فسيكون حجم الدُفعة الفعلي batch_size * 4 .
FP16 ، يدعم الإصدار الحالي من MT-DNN التدريب FP16 ، ويرجى تثبيت Apex.
تحتاج فقط إلى تشغيل العلم أثناء التدريب: --fp16
يرجى إحالة البرنامج النصي: scriptsrun_mt_dnn_gc_fp16.sh
هنا ، نذهب من خلال كيفية تحويل نموذج Bert الصيني TensorFlow إلى تنسيق MT-DNN.
قم بتنزيل نموذج Bert من موقع Google Bert: https://github.com/google-research/bert
قم بتشغيل البرنامج النصي التالي لتنسيق MT-DNN
python scriptsconvert_tf_to_pt.py --tf_checkpoint_root chinese_L-12_H-768_A-12 --pytorch_checkpoint_path chinese_L-12_H-768_A-12bert_base_chinese.pt
نعم ، أصدرنا التضمينات المشتركة المسبقة عبر MTL والتي تتم محاذاة Bert Base/Garge Models: mt_dnn_base.pt و mt_dnn_large.pt .
للحصول على النماذج المماثلة:
>sh scriptsrun_mt_dnn.sh ، ثم اختر أفضل نقطة تفتيش بناءً على متوسط Dev Preformance لـ Mnli/RTE.scritpsstrip_model.py .بالنسبة لمهام Scitail/SNLI ، فإن الغرض من ذلك هو اختبار تعميم التضمين المستفاد ومدى سهولة تكييفه مع مجال جديد بدلاً من هياكل النماذج المعقدة للمقارنة المباشرة مع BERT. وبالتالي ، فإننا نستخدم الإسقاط الخطي على إعدادات التكيف مع جميع.
الفرق في مجموعة بيانات QNLI. يرجى الحكم إلى الصفحة الرئيسية الرسمية الغراء لمزيد من التفاصيل. إذا كنت ترغب في صياغة QNLI كمهمة ترتيب للزوج كورقة ، فتأكد من استخدام بيانات QNLI القديمة.
ثم قم بتشغيل البرنامج النصي prepro مع الأعلام: > sh experiments/glue/prepro.sh --old_glue
إذا كانت لديك مشكلات للوصول إلى الإصدار القديم من البيانات ، فيرجى الاتصال بفريق الغراء.
يمكننا استخدام نموذج التحسين متعدد المهام لتشغيل التنبؤ وإنتاج نتيجة معقولة. ولكن لتحقيق نتيجة أفضل ، فإنه يتطلب ضبطًا جيدًا على كل مهمة. من الذي يلاحظ أن الورق في Arxiv عبارة عن مجموعة بيانات غراء قديمة. سنقوم بتحديث الورقة كما ذكرنا أدناه.
Bert Pytorch هو من: https://github.com/huggingface/pytorch-retribed-bert
Bert: https://github.com/google-research/bert
استخدمنا أيضًا بعض التعليمات البرمجية من: https://github.com/kevinduh/san_mrc
@inproceedings{liu2019mt-dnn,
title = "Multi-Task Deep Neural Networks for Natural Language Understanding",
author = "Liu, Xiaodong and He, Pengcheng and Chen, Weizhu and Gao, Jianfeng",
booktitle = "Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/P19-1441",
pages = "4487--4496"
}
@article{liu2019mt-dnn-kd,
title={Improving Multi-Task Deep Neural Networks via Knowledge Distillation for Natural Language Understanding},
author={Liu, Xiaodong and He, Pengcheng and Chen, Weizhu and Gao, Jianfeng},
journal={arXiv preprint arXiv:1904.09482},
year={2019}
}
@inproceedings{liu2019radam,
title={On the Variance of the Adaptive Learning Rate and Beyond},
author={Liu, Liyuan and Jiang, Haoming and He, Pengcheng and Chen, Weizhu and Liu, Xiaodong and Gao, Jianfeng and Han, Jiawei},
booktitle={International Conference on Learning Representations},
year={2020}
}
@inproceedings{jiang2019smart,
title={SMART: Robust and Efficient Fine-Tuning for Pre-trained Natural Language Models through Principled Regularized Optimization},
author={Jiang, Haoming and He, Pengcheng and Chen, Weizhu and Liu, Xiaodong and Gao, Jianfeng and Zhao, Tuo},
booktitle = "Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics",
year={2020}
}
@article{liu2020mtmtdnn,
title={The Microsoft Toolkit of Multi-Task Deep Neural Networks for Natural Language Understanding},
author={Liu, Xiaodong and Wang, Yu and Ji, Jianshu and Cheng, Hao and Zhu, Xueyun and Awa, Emmanuel and He, Pengcheng and Chen, Weizhu and Poon, Hoifung and Cao, Guihong and Jianfeng Gao},
journal={arXiv preprint arXiv:2002.07972},
year={2020}
}
@inproceedings{liu2020mtmtdnn,
title = "The {M}icrosoft Toolkit of Multi-Task Deep Neural Networks for Natural Language Understanding",
author={Liu, Xiaodong and Wang, Yu and Ji, Jianshu and Cheng, Hao and Zhu, Xueyun and Awa, Emmanuel and He, Pengcheng and Chen, Weizhu and Poon, Hoifung and Cao, Guihong and Jianfeng Gao},
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2020.acl-demos.16",
year = "2020"
}
@article{cheng2020posterior,
title={Posterior Differential Regularization with f-divergence for Improving Model Robustness},
author={Cheng, Hao and Liu, Xiaodong and Pereira, Lis and Yu, Yaoliang and Gao, Jianfeng},
booktitle = "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies",
year = "2021",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2021.naacl-main.85",
doi = "10.18653/v1/2021.naacl-main.85",
}
للحصول على المساعدة أو المشكلات التي تستخدم MT-DNN ، يرجى تقديم مشكلة github.
للاتصال الشخصي المتعلق بهذه الحزمة [email protected] يرجى الاتصال بـ Xiaodong Liu ( [email protected] ) ، Yu Wang ( [email protected] ) ، Pengcheng HE ( [email protected] ) ، Weizhu Chen ( [email protected] ) ، jianshu ji ( [email protected] ) أو Jianfeng Gao ( [email protected] ).