Rilis baru
Kami merilis pelatihan permusuhan untuk LM pra-pelatihan/finetuning dan f-divergensi.
Pelatihan permusuhan skala besar untuk LMS: Kode Alum.
Model jaringan saraf hibrida untuk penalaran akal sehat: kode HNN
Jika Anda ingin menggunakan versi lama, silakan gunakan CMD berikut untuk mengkloning kode:
git clone -b v0.1 https://github.com/namisan/mt-dnn.git
Memperbarui
Kami menyesal memberi tahu Anda bahwa karena perubahan kebijakan, itu tidak lagi menyediakan penyimpanan publik untuk berbagi model. Kami bekerja keras untuk menemukan solusi.
Paket Pytorch ini mengimplementasikan jaringan saraf dalam multi-tugas (MT-DNN) untuk pemahaman bahasa alami, seperti yang dijelaskan dalam:
Xiaodong Liu*, Pengcheng He*, Weizhu Chen dan Jianfeng Gao
Jaringan saraf dalam multi-tugas untuk pemahaman bahasa alami
ACL 2019
*: Kontribusi yang sama
Xiaodong Liu, Pengcheng He, Weizhu Chen dan Jianfeng Gao
Meningkatkan jaringan saraf dalam multi-tugas melalui distilasi pengetahuan untuk pemahaman bahasa alami
versi arxiv
Liyuan Liu, Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao dan Jiawei Han
Tentang varian tingkat pembelajaran adaptif dan seterusnya
ICLR 2020
Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao dan Tuo Zhao
Smart: Fine-tuning yang kuat dan efisien untuk model bahasa alami yang sudah terlatih melalui optimasi yang diatur secara terregusikan
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 Toolkit dari jaringan saraf dalam multi-tugas untuk pemahaman bahasa alami
ACL 2020
Hao Cheng dan Xiaodong Liu dan Lis Pereira dan Yaoliang Yu dan Jianfeng Gao
Regularisasi diferensial posterior dengan f-divergensi untuk meningkatkan ketahanan model
NAACL 2021
Python3.6
Referensi untuk mengunduh dan menginstal: https://www.python.org/downloads/release/python-360/
pasang persyaratan
> pip install -r requirements.txt
Tarik Docker
> docker pull allenlao/pytorch-mt-dnn:v1.3
Jalankan Docker
> docker run -it --rm --runtime nvidia allenlao/pytorch-mt-dnn:v1.3 bash
Silakan merujuk ke tautan berikut jika Anda pertama kali menggunakan Docker: https://docs.docker.com/
Unduh data
> sh download.sh
Silakan merujuk ke unduhan Glue Dataset: https://gluebenchmark.com/
Data preprocess
> sh experiments/glue/prepro.sh
Pelatihan
> python train.py
Perhatikan bahwa kami menjalankan eksperimen pada 4 V100 GPU untuk model MT-DNN dasar. Anda mungkin perlu mengurangi ukuran batch untuk GPU lainnya.
Penyempurnaan MTL: Perbaiki MT-DNN (Lapisan Bersama), diinisialisasi dengan model BERT pra-terlatih, melalui MTL menggunakan semua tugas lem tidak termasuk WNLI untuk mempelajari representasi bersama baru.
Perhatikan bahwa kami menjalankan percobaan ini pada 8 V100 GPU (32G) dengan ukuran batch 32.
>scriptsrun_mt_dnn.sh Finetuning: finetune mt-dnn untuk masing-masing tugas lem untuk mendapatkan model khusus tugas.
Di sini, kami memberikan dua contoh, STS-B dan RTE. Anda dapat menggunakan skrip serupa untuk memperbaiki semua tugas lem.
> scriptsrun_stsb.sh> scriptsrun_rte.sh Adaptasi domain di scitail
>scriptsscitail_domain_adaptation_bash.sh
Adaptasi domain di snli
>scriptssnli_domain_adaptation_bash.sh
Data preprocess
a) Unduh data ner ke data/ner termasuk: {train/valid/test} .txt
b) Konversi data NER ke format kanonik: > python experimentsnerprepro.py --data dataner --output_dir datacanonical_data
c) Preprocess Data kanonik ke format MT-DNN: > python prepro_std.py --root_dir datacanonical_data --task_def experimentsnerner_task_def.yml --model bert-base-uncased
Pelatihan
> 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
Data preprocess
a) Unduh data pasukan ke data/skuad termasuk: {train/valid} .txt dan kemudian ubah nama file ke: {squad_train/squad_dev} .json
b) Convert data to the MT-DNN format: > python experimentssquadsquad_prepro.py --root_dir datacanonical_data --task_def experimentssquadsquad_task_def.yml --model bert-base-uncased
Pelatihan
> python train.py --data_dir <data-path> --init_checkpoint <bert-model> --train_dataset ner --test_dataset ner --task_def experimentsnerner_task_def.yml
Pelatihan ADV pada tahap fine-tuning: > 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
Mengekstraksi embeddings dari contoh teks pasangan
>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
Perhatikan bahwa pasangan teks dibagi dengan token khusus ||| . Anda dapat merujuk input_examplespair-output.json sebagai contoh.
Mengekstraksi embeddings dari satu kalimat kalimat
>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
Akumulasi gradien
Jika Anda memiliki GPU kecil, Anda mungkin perlu menggunakan akumulasi gradien untuk membuat pelatihan stabil.
Misalnya, jika Anda menggunakan bendera: --grad_accumulation_step 4 selama pelatihan, ukuran batch yang sebenarnya akan menjadi batch_size * 4 .
FP16 Versi MT-DNN saat ini juga mendukung pelatihan FP16, dan silakan instal Apex.
Anda hanya perlu menyalakan bendera selama pelatihan: --fp16
Silakan merujuk skrip: scriptsrun_mt_dnn_gc_fp16.sh
Di sini, kami melalui cara mengubah model TensorFlow Tensorflow Cina menjadi format MT-DNN.
Unduh Model Bert dari Google Bert Web: https://github.com/google-research/bert
Jalankan skrip berikut untuk format 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
Ya, kami merilis embedings bersama pretrained melalui MTL yang disejajarkan dengan Model Base/Besar: mt_dnn_base.pt dan mt_dnn_large.pt .
Untuk mendapatkan model yang serupa:
>sh scriptsrun_mt_dnn.sh , dan kemudian pilih pos pemeriksaan terbaik berdasarkan preformansi dev rata -rata MNLI/RTE.scritpsstrip_model.py .Untuk tugas scitail/snli, tujuannya adalah untuk menguji generalisasi embedding yang dipelajari dan betapa mudahnya disesuaikan dengan domain baru alih -alih struktur model yang rumit untuk perbandingan langsung dengan Bert. Dengan demikian, kami menggunakan proyeksi linier pada semua pengaturan adaptasi domain .
Perbedaannya ada dalam dataset QNLI. Harap wasit ke beranda resmi lem untuk lebih jelasnya. Jika Anda ingin merumuskan QNLI sebagai tugas peringkat pasangan sebagai kertas kami, pastikan Anda menggunakan data QNLI lama.
Kemudian jalankan skrip prepro dengan bendera: > sh experiments/glue/prepro.sh --old_glue
Jika Anda memiliki masalah untuk mengakses versi lama dari data, silakan hubungi tim lem.
Kita dapat menggunakan model penyempurnaan multi-tugas untuk menjalankan prediksi dan menghasilkan hasil yang masuk akal. Tetapi untuk mencapai hasil yang lebih baik, itu membutuhkan penyempurnaan pada setiap tugas. Worthing mencatat kertas di Arxiv adalah littled out-tanggal dan pada dataset lem lama. Kami akan memperbarui kertas seperti yang kami sebutkan di bawah ini.
Bert Pytorch berasal dari: https://github.com/huggingface/pytorch-pretrained-bert
Bert: https://github.com/google-research/bert
Kami juga menggunakan beberapa kode dari: 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",
}
Untuk bantuan atau masalah menggunakan MT-DNN, silakan kirimkan masalah GitHub.
Untuk komunikasi pribadi yang terkait dengan paket ini, silakan hubungi Xiaodong Liu ( [email protected] ), yu wang ( [email protected] ), Pengcheng He ( [email protected] ), weizhu chen ( [email protected] ), Jianshu Ji (Jianshu ( [email protected] ), Jianshu (Jianshu. [email protected] ) atau Jianfeng Gao ( [email protected] ).