Nuevo lanzamiento
Lanzamos entrenamiento adversario tanto para la capacitación/fineting de LM como para la divergencia F.
Entrenamiento adversario a gran escala para LMS: código de alumbre.
Modelo de red neuronal híbrida para razonamiento de sentido común: código HNN
Si desea usar la versión anterior, use el siguiente CMD para clonar el código:
git clone -b v0.1 https://github.com/namisan/mt-dnn.git
Actualizar
Lamentamos informarle que, debido a la política, ya no proporciona un almacenamiento público para compartir modelos. Estamos trabajando duro para encontrar una solución.
Este paquete Pytorch implementa las redes neuronales profundas de tareas múltiples (MT-DNN) para la comprensión del lenguaje natural, como se describe en:
Xiaodong Liu*, Pengcheng He*, Weizhu Chen y Jianfeng Gao
Redes neuronales profundas de varias tareas para la comprensión del lenguaje natural
ACL 2019
*: Contribución igual
Xiaodong Liu, Pengcheng He, Weizhu Chen y Jianfeng Gao
Mejora de redes neuronales profundas de varias tareas a través de la destilación de conocimiento para la comprensión del lenguaje natural
versión arxiv
Liyuan Liu, Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao y Jiawei Han
Sobre la varianza de la tasa de aprendizaje adaptativo y más allá
ICLR 2020
Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao y Tuo Zhao
Inteligente: ajuste fino robusto y eficiente para modelos de lenguaje natural previamente capacitado a través de la optimización regularizada de principios
ACL 2020
Xiaodong Liu, Yu Wang, JiAnshu Ji, Hao Cheng, Xueyun Zhu, Emmanuel Awa, Pengcheng He, Weizhu Chen, Hoifung Poon, Guihong Cao, Jianfeng Gao
El kit de herramientas de Microsoft de redes neuronales profundas de varias tareas para la comprensión del lenguaje natural
ACL 2020
Hao Cheng y Xiaodong Liu y Lis Pereira y Yaoliang Yu y Jianfeng Gao
Regularización diferencial posterior con divergencia F para mejorar la robustez del modelo
NAACL 2021
Python3.6
Referencia para descargar e instalar: https://www.python.org/downloads/release/python-360/
requisitos de instalación
> pip install -r requirements.txt
Tire de Docker
> docker pull allenlao/pytorch-mt-dnn:v1.3
Dock Docker
> docker run -it --rm --runtime nvidia allenlao/pytorch-mt-dnn:v1.3 bash
Consulte el siguiente enlace si primero usa Docker: https://docs.docker.com/
Descargar datos
> sh download.sh
Consulte el conjunto de datos de Glue: https://gluebenchmark.com/
Datos de preprocesamiento
> sh experiments/glue/prepro.sh
Capacitación
> python train.py
Tenga en cuenta que ejecutamos experimentos en 4 GPU V100 para modelos base MT-DNN. Es posible que deba reducir el tamaño de lotes para otras GPU.
Refinamiento de MTL: Refine MT-DNN (capas compartidas), inicializada con el modelo Bert pre-entrenado, a través de MTL utilizando todas las tareas de pegamento, excluyendo WNLI para aprender una nueva representación compartida.
Tenga en cuenta que ejecutamos este experimento en 8 GPU V100 (32 g) con un tamaño por lotes de 32.
>scriptsrun_mt_dnn.sh Finetuning: Finetune MT-DNN a cada una de las tareas de pegamento para obtener modelos específicos de tareas.
Aquí, proporcionamos dos ejemplos, STS-B y RTE. Puede usar scripts similares para Finetune todas las tareas de pegamento.
> scriptsrun_stsb.sh> scriptsrun_rte.sh Adaptación de dominio en Scitail
>scriptsscitail_domain_adaptation_bash.sh
Adaptación de dominio en SNLI
>scriptssnli_domain_adaptation_bash.sh
Datos de preprocesamiento
a) Descargue los datos ner a los datos/ner que incluyen: {trenes/válido/test} .txt
b) Convierta los datos NER en el formato canónico: > python experimentsnerprepro.py --data dataner --output_dir datacanonical_data
c) Preprocese los datos canónicos en el formato mt-dnn: > python prepro_std.py --root_dir datacanonical_data --task_def experimentsnerner_task_def.yml --model bert-base-uncased
Capacitación
> 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
Datos de preprocesamiento
a) Descargue los datos del escuadrón a datos/escuadrón que incluya: {trenes/válido} .txt y luego cambie el nombre del archivo a: {squad_train/squad_dev} .json
b) Convierta los datos en el formato MT-DNN: > python experimentssquadsquad_prepro.py --root_dir datacanonical_data --task_def experimentssquadsquad_task_def.yml --model bert-base-uncased
Capacitación
> python train.py --data_dir <data-path> --init_checkpoint <bert-model> --train_dataset ner --test_dataset ner --task_def experimentsnerner_task_def.yml
Entrenamiento ADV en las etapas de impulso: > 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
Extracción de incrustaciones de un ejemplo de texto
>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
Tenga en cuenta que el par de texto está dividido por un token especial ||| . Puede referir input_examplespair-output.json como ejemplo.
Extracción de incrustaciones de un solo ejemplo de oración
>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
Acumulación de gradiente
Si tiene GPU pequeñas, es posible que deba utilizar la acumulación de gradiente para hacer que la capacitación estable.
Por ejemplo, si usa la bandera: --grad_accumulation_step 4 Durante el entrenamiento, el tamaño de lotes real será batch_size * 4 .
FP16 La versión actual de MT-DNN también admite la capacitación FP16 e instala APEX.
Solo necesitas encender la bandera durante el entrenamiento: --fp16
Consulte el script: scriptsrun_mt_dnn_gc_fp16.sh
Aquí, pasamos por cómo convertir un modelo chino de TensorFlow Bert en formato MT-DNN.
Descargue el modelo Bert desde la web de Google Bert: https://github.com/google-research/bert
Ejecute el siguiente script para formato 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
Sí, lanzamos las incrustaciones compartidas previas a la aparición a través de MTL que están alineadas con Bert Base/Modelos grandes: mt_dnn_base.pt y mt_dnn_large.pt .
Para obtener los modelos similares:
>sh scriptsrun_mt_dnn.sh , y luego elija el mejor punto de control basado en el preformance promedio de desarrollo de mnli/rte.scritpsstrip_model.py .Para las tareas Scitail/SNLI, el propósito es probar la generalización de la incrustación aprendida y lo fácil que se adapta a un nuevo dominio en lugar de estructuras modelo complicadas para una comparación directa con Bert. Por lo tanto, utilizamos una proyección lineal en la configuración de adaptación de dominio .
La diferencia está en el conjunto de datos QNLI. Por favor, confirme a la página de inicio oficial del pegamento para obtener más detalles. Si desea formular Qnli como tarea de clasificación en pareja como nuestro documento, asegúrese de utilizar los datos antiguos de Qnli.
Luego ejecute el script Prepro con banderas: > sh experiments/glue/prepro.sh --old_glue
Si tiene problemas para acceder a la versión anterior de los datos, comuníquese con el equipo de pegamento.
Podemos usar el modelo de refinamiento de varias tareas para ejecutar la predicción y producir un resultado razonable. Pero para lograr un mejor resultado, requiere un ajuste fino en cada tarea. Es Worthing señalando que el papel en Arxiv es un poco de datos de datos de pegamento. Actualizaremos el documento como mencionamos a continuación.
Bert Pytorch es de: https://github.com/huggingface/pytorch-preetherened-bert
Bert: https://github.com/google-research/bert
También usamos algún código de: 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",
}
Para obtener ayuda o problemas con MT-DNN, envíe un problema de GitHub.
Para la comunicación personal relacionada con este paquete, comuníquese con Xiaodong Liu ( [email protected] ), Yu Wang ( [email protected] ), Pengcheng He ( [email protected] ), Weizhu Chen ( [email protected] ), jianshu ji ( [email protected] (hao cayg (), haoheng (hao, hao, Hao (hao CHeng (), Hao CHENG (hao CHeng (), Hao CHeng (), Hao CHENG (hao CHENG (), hao CHeng (), Hao CHeng (), Hao CHeng (), hao CHeng (). [email protected] ) o Jianfeng Gao ( [email protected] ).