Neue Veröffentlichung
Wir haben das kontroverse Training sowohl für LM-Voraussetzungen/Finetunen als auch für F-Divergenz veröffentlicht.
Großes kontroverses Training für LMS: Alauncode.
Hybrid neuronales Netzwerkmodell für Commonsense -Argumentation: HNN -Code
Wenn Sie die alte Version verwenden möchten, verwenden Sie bitte CMD, um den Code zu klonen:
git clone -b v0.1 https://github.com/namisan/mt-dnn.git
Aktualisieren
Wir bedauern, dass wir Ihnen darüber informieren, dass die Änderung der Richtlinien keine öffentliche Speicherung für die Modellfreigabe mehr bietet. Wir arbeiten hart daran, eine Lösung zu finden.
Dieses Pytorch-Paket implementiert die Multi-Task-Deep Neural Networks (MT-DNN) für das Verständnis der natürlichen Sprache, wie in:
Xiaodong liu*, Pengcheng He*, Weizhu Chen und Jianfeng Gao
Multi-Task-tiefe neuronale Netzwerke für das Verständnis der natürlichen Sprache
ACL 2019
*: Gleicher Beitrag
Xiaodong Liu, Pengcheng He, Weishu Chen und Jianfeng Gao
Verbesserung von tiefen neuronalen Netzwerken mit mehreren Aufgaben durch Wissensdestillation für das Verständnis der natürlichen Sprache
Arxiv -Version
Liyuan Liu, Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao und Jiawei Han
Über die Varianz der adaptiven Lernrate und darüber hinaus
ICLR 2020
Haoming Jiang, Pengcheng He, Weishu Chen, Xiaodong Liu, Jianfeng Gao und Tuo Zhao
Smart: Robuste und effiziente Feinabstimmung für vorgebrachte natürliche Sprachmodelle durch prinzipielle regulierte Optimierung
ACL 2020
Xiaodong Liu, Yu Wang, Jianshu Ji, Hao Cheng, Xueyun Zhu, Emmanuel Awa, Pengcheng He, Weishu Chen, Hoifung Poon, Guihong Cao, Jianfeng Gao
Das Microsoft-Toolkit von Multitasking Deep Neural Networks für das Verständnis für natürliche Sprache
ACL 2020
Hao Cheng und Xiaodong Liu und Lis Pereira sowie Yaoliang Yu und Jianfeng Gao
Hintere differentielle Regularisierung mit F-Divergenz zur Verbesserung der Modell Robustheit
NAACl 2021
Python3.6
Verweis auf Download und Installation: https://www.python.org/downloads/release/python-360/
Anforderungen installieren
> pip install -r requirements.txt
Docker ziehen
> docker pull allenlao/pytorch-mt-dnn:v1.3
Führen Sie Docker aus
> docker run -it --rm --runtime nvidia allenlao/pytorch-mt-dnn:v1.3 bash
Weitere Informationen finden Sie im folgenden Link, wenn Sie Docker zum ersten Mal verwenden: https://docs.docker.com/
Daten herunterladen
> sh download.sh
Weitere Informationen finden Sie im Download LLUE Dataset: https://gluebenchmark.com/
Vorverarbeitungsdaten
> sh experiments/glue/prepro.sh
Ausbildung
> python train.py
Beachten Sie, dass wir Experimente mit 4 V100-GPUs für Basis-MT-DNN-Modelle durchgeführt haben. Möglicherweise müssen Sie die Chargengröße für andere GPUs reduzieren.
MTL-Verfeinerung: MT-DNN (Shared Layers) verfeinern, initialisiert mit dem vorgebildeten Bert-Modell über MTL unter Verwendung aller Kleberaufgaben ohne WNLI, um eine neue gemeinsame Darstellung zu erlernen.
Beachten Sie, dass wir dieses Experiment mit 8 V100 GPUs (32 g) mit einer Chargengröße von 32 durchgeführt haben.
>scriptsrun_mt_dnn.sh Finetuning: Finetune MT-DNN für jede der Kleberaufgaben, um aufgabenspezifische Modelle zu erhalten.
Hier liefern wir zwei Beispiele, STS-B und RTE. Sie können ähnliche Skripte verwenden, um alle Kleberaufgaben zu beenden.
> scriptsrun_stsb.sh> scriptsrun_rte.sh Domänenanpassung auf Scitail
>scriptsscitail_domain_adaptation_bash.sh
Domänenanpassung an SNLI
>scriptssnli_domain_adaptation_bash.sh
Vorverarbeitungsdaten
a) Laden Sie NER -Daten in Daten/NER herunter, einschließlich: {Train/valid/test} .txt
b) NER -Daten in das kanonische Format konvertieren: > python experimentsnerprepro.py --data dataner --output_dir datacanonical_data
c) Die kanonischen Daten in das MT-DNN-Format vorbereiten: > python prepro_std.py --root_dir datacanonical_data --task_def experimentsnerner_task_def.yml --model bert-base-uncased
Ausbildung
> 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
Vorverarbeitungsdaten
a) Download Squad -Daten in Daten/Kader, einschließlich: {Train/valid} .txt und dann den Dateinamen in: {squad_train/squad_dev} .json ändern
b) Daten in das MT-DNN-Format konvertieren: > python experimentssquadsquad_prepro.py --root_dir datacanonical_data --task_def experimentssquadsquad_task_def.yml --model bert-base-uncased
Ausbildung
> python train.py --data_dir <data-path> --init_checkpoint <bert-model> --train_dataset ner --test_dataset ner --task_def experimentsnerner_task_def.yml
ADV-Training in den Feinabstimmungsstadien: > 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
Extrahieren von Einbettungen eines Paares Text -Beispiel
>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
Beachten Sie, dass das Textpaar durch ein spezielles Token ||| geteilt wird . Sie können input_examplespair-output.json als Beispiel bezeichnen.
Extrahieren von Einbettungen eines einzelnen Satzbeispiels
>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
Gradientenakkumulation
Wenn Sie kleine GPUs haben, müssen Sie möglicherweise die Gradientenakkumulation verwenden, um das Training stabil zu machen.
Wenn Sie beispielsweise das Flag verwenden: --grad_accumulation_step 4 während des Trainings, wird die tatsächliche Stapelgröße batch_size * 4 sein.
FP16 Die aktuelle Version von MT-DNN unterstützt auch das FP16-Training und installieren Sie bitte Apex.
Sie müssen nur während des Trainings die Flagge einschalten: --fp16
Bitte beachten Sie das Skript: scriptsrun_mt_dnn_gc_fp16.sh
Hier gehen wir durch, wie ein chinesisches Tensorflow Bert-Modell in das MT-DNN-Format umgewandelt wird.
Laden Sie das Bert-Modell aus dem Google Bert-Web herunter: https://github.com/google-research/bert
Führen Sie das folgende Skript für das MT-DNN-Format aus
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
Ja, wir haben die vorbereiteten gemeinsam genutzten Einbettungen über MTL veröffentlicht, die an Bert Base/Large Models ausgerichtet sind: mt_dnn_base.pt und mt_dnn_large.pt .
Um die ähnlichen Modelle zu erhalten:
>sh scriptsrun_mt_dnn.sh aus und wählen Sie dann den besten Checkpoint basierend auf der durchschnittlichen Entwicklungsvorformung von MNLI/RTE.scritpsstrip_model.py .Bei Scitail/SNLI -Aufgaben besteht der Zweck darin, die Verallgemeinerung der erlernten Einbettung zu testen und wie einfach sie an eine neue Domäne anstelle komplizierter Modellstrukturen für einen direkten Vergleich mit Bert angepasst ist. Somit verwenden wir eine lineare Projektion auf die Einstellungen für alle Domänenanpassungen .
Der Unterschied liegt im QNLI -Datensatz. Bitte leiten Sie die offizielle Homepage des Klebers für weitere Informationen. Wenn Sie QNLI als eine paarweise Ranking-Aufgabe als unser Papier formulieren möchten, stellen Sie sicher, dass Sie die alten QNLI-Daten verwenden.
Führen Sie dann das Prepro -Skript mit Flags aus: > sh experiments/glue/prepro.sh --old_glue
Wenn Sie Probleme haben, um auf die alte Version der Daten zuzugreifen, wenden Sie sich bitte an das Kleberteam.
Wir können das Multitask-Verfeinerungsmodell verwenden, um die Vorhersage auszuführen und ein vernünftiges Ergebnis zu erzielen. Um jedoch ein besseres Ergebnis zu erzielen, erfordert es eine feinstimmige für jede Aufgabe. Es ist Worthing, dass das Papier in Arxiv ein kleines veraltetes und auf dem alten Kleber-Datensatz ist. Wir werden das Papier wie unten erwähnt aktualisieren.
Bert Pytorch stammt von: https://github.com/huggingface/pytorch-prisine-tbert
Bert: https://github.com/google-research/bert
Wir haben auch einen Code verwendet: 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",
}
Für Hilfe oder Probleme mit MT-DNN senden Sie bitte ein GitHub-Problem.
For personal communication related to this package, please contact Xiaodong Liu ( [email protected] ), Yu Wang ( [email protected] ), Pengcheng He ( [email protected] ), Weizhu Chen ( [email protected] ), Jianshu Ji ( [email protected] ), Hao Cheng ( [email protected] ) oder Jianfeng Gao ( [email protected] ).