Новый релиз
Мы выпустили состязательные тренировки как для тренировок, так и F-дивергенции LM.
Крупномасштабное состязательное обучение для LMS: код выпускников.
Модель гибридной нейронной сети для здравого смысла рассуждения: код HNN
Если вы хотите использовать старую версию, используйте следующее CMD для клонирования кода:
git clone -b v0.1 https://github.com/namisan/mt-dnn.git
Обновлять
Мы сожалеем о том, что из -за изменения политики, она больше не предоставляет общественное хранилище для обмена моделями. Мы усердно работаем, чтобы найти решение.
Этот пакет Pytorch реализует многозадачные глубокие нейронные сети (MT-DNN) для понимания естественного языка, как описано в:
Сяодонг Лю*, Пенгчэн Хе*, Вейху Чен и Цзянфенг Гао
Глубокие нейронные сети с несколькими задачами для понимания естественного языка
ACL 2019
*: Равный вклад
Сяодонг Лю, Пенгчэн Хе, Вайуху Чен и Цзянфенг Гао
Улучшение многозадачных глубоких нейронных сетей посредством перегонки знаний для понимания естественного языка
версия Arxiv
Liyuan Liu, Haming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao и Jiawei Han
О дисперсии адаптивного уровня обучения и за его пределами
ICLR 2020
Гаминг Цзян, Пенгчэн Х. Х., Вейху Чен, Сяодон Лю, Цзянфенг Гао и Туо Чжао
Smart: надежная и эффективная тонкая настройка для моделей с предварительно обученным естественным языком посредством принципиальной регуляризованной оптимизации
ACL 2020
Сяодонг Лю, Ю Ванг, Цзяньшу Джи, Хао Ченг, Сюэюн Чжу, Эммануэль Ава, Пенгчэн Х. Х. Х., Вайуху Чен, Хойфунг Пун, Гухонг Цао, Цзянфенг Гао
Microsoft Toolkit of Multi-Task Deep Neural Networks для понимания естественного языка
ACL 2020
Хао Ченг и Сяодон Лю и Лис Перейра и Яолиан Ю и Цзянфэн Гао
Задняя дифференциальная регуляризация с F-Divergence для повышения модели устойчивости
NAACL 2021
Python3.6
Ссылка на загрузку и установку: https://www.python.org/downloads/release/python-360/
установить требования
> pip install -r requirements.txt
Потянуть докер
> 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
Пожалуйста, обратитесь к набору данных скачать Glue: https://gluebenchmark.com/
Предварительные данные
> sh experiments/glue/prepro.sh
Обучение
> python train.py
Обратите внимание, что мы провели эксперименты на 4 V100 графических процессоров для базовых моделей MT-DNN. Вам может потребоваться уменьшить размер партии для других графических процессоров.
Уточнение MTL: уточнить MT-DNN (общие слои), инициализированные с предварительно обученной моделью BERT, через MTL, используя все задачи клея, за исключением WNLI, чтобы узнать новое общее представление.
Обратите внимание, что мы запустили этот эксперимент на 8 V100 графических процессоров (32 г) с размером партии 32.
>scriptsrun_mt_dnn.sh PeneTuning: Finetune MT-DNN для каждой из задач клея, чтобы получить специфичные для задачи модели.
Здесь мы предоставляем два примера, STS-B и RTE. Вы можете использовать подобные сценарии, чтобы исправить все задачи клей.
> scriptsrun_stsb.sh> scriptsrun_rte.sh Доменная адаптация на Scitail
>scriptsscitail_domain_adaptation_bash.sh
Доменная адаптация на SNLI
>scriptssnli_domain_adaptation_bash.sh
Предварительные данные
а) Загрузите данные NER в Data/NER, включая: {Train/Valid/test} .txt
б) преобразовать данные NER в канонический формат: > python experimentsnerprepro.py --data dataner --output_dir datacanonical_data
c) Предварительно обрабатывать канонические данные к формату 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, а затем измените имя файла на: {quad_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 Training на стадиях тонкой настройки: > 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
Здесь мы переживаем, как преобразовать китайскую модель Tensorflow Bert в формат MT-DNN.
Скачать модель Bert из Google Bert Web: 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/BAGIN MODEL: mt_dnn_base.pt и mt_dnn_large.pt .
Чтобы получить аналогичные модели:
>sh scriptsrun_mt_dnn.sh , а затем выберите лучшую контрольную точку на основе средней преформы DEV MNLI/RTE.scritpsstrip_model.py .Для задач Scitail/SNLI цель состоит в том, чтобы проверить обобщение изученного встраивания и насколько легко оно адаптировано к новому домену вместо сложных модельных структур для прямого сравнения с BERT. Таким образом, мы используем линейную проекцию в настройках адаптации All Domain .
Разница в наборе данных QNLI. Пожалуйста, ответьте на официальную домашнюю страницу Glue для получения более подробной информации. Если вы хотите сформулировать QNLI в качестве парного ранжирования в качестве нашей статьи, убедитесь, что вы используете старые данные QNLI.
Затем запустите сценарий Predro с флагами: > sh experiments/glue/prepro.sh --old_glue
Если у вас есть проблемы для доступа к старой версии данных, пожалуйста, свяжитесь с командой Glue.
Мы можем использовать модель уточнения с несколькими задачами, чтобы запустить прогноз и получить разумный результат. Но для достижения лучшего результата это требует точной подготовки к каждой задаче. Уортинг, отмечая, что бумага в Arxiv-это маленький набор данных о старом клей. Мы обновим статью, как мы упоминали ниже.
Bert Pytorch от: https://github.com/huggingface/pytorch-pretraind-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.
Для личного общения, связанного с этим пакетом, пожалуйста, свяжитесь с xiaodong liu ( [email protected] ), Ю Ван ( [email protected] ), Pengcheng He ( [email protected] ), weizhu Chen ( [email protected] ), jianshu ji ji ( [email protected] ), jianshu ji ji [email protected] ) или Jianfeng Gao ( [email protected] ).