Код для бумаги «Берт-тазеуууса: сжатие BERT с заменой прогрессивного модуля».
Bert-of Thezeus-это новый сжатый Bert, постепенно заменяя компоненты оригинального Bert.

Если вы используете этот код в своем исследовании, пожалуйста, укажите нашу статью:
@inproceedings { xu-etal-2020-bert ,
title = " {BERT}-of-Theseus: Compressing {BERT} by Progressive Module Replacing " ,
author = " Xu, Canwen and
Zhou, Wangchunshu and
Ge, Tao and
Wei, Furu and
Zhou, Ming " ,
booktitle = " Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP) " ,
month = nov,
year = " 2020 " ,
address = " Online " ,
publisher = " Association for Computational Linguistics " ,
url = " https://www.aclweb.org/anthology/2020.emnlp-main.633 " ,
pages = " 7859--7869 "
}Новое: мы загрузили сценарий для выполнения прогнозов по задачам клея и подготовке к подчинению лидеров. Проверьте здесь!
Наш код построен на Huggingface/Transformers. Чтобы использовать наш код, вы должны клонировать и установить Huggingface/Transformers.
# For compression with a replacement scheduler
export GLUE_DIR=/path/to/glue_data
export TASK_NAME=MRPC
python ./run_glue.py
--model_name_or_path /path/to/saved_predecessor
--task_name $TASK_NAME
--do_train
--do_eval
--do_lower_case
--data_dir " $GLUE_DIR / $TASK_NAME "
--max_seq_length 128
--per_gpu_train_batch_size 32
--per_gpu_eval_batch_size 32
--learning_rate 2e-5
--save_steps 50
--num_train_epochs 15
--output_dir /path/to/save_successor/
--evaluate_during_training
--replacing_rate 0.3
--scheduler_type linear
--scheduler_linear_k 0.0006 # For compression with a constant replacing rate
export GLUE_DIR=/path/to/glue_data
export TASK_NAME=MRPC
python ./run_glue.py
--model_name_or_path /path/to/saved_predecessor
--task_name $TASK_NAME
--do_train
--do_eval
--do_lower_case
--data_dir " $GLUE_DIR / $TASK_NAME "
--max_seq_length 128
--per_gpu_train_batch_size 32
--per_gpu_eval_batch_size 32
--learning_rate 2e-5
--save_steps 50
--num_train_epochs 15
--output_dir /path/to/save_successor/
--evaluate_during_training
--replacing_rate 0.5
--steps_for_replacing 2500 Для получения подробного описания аргументов, пожалуйста, обратитесь к исходному коду.
Мы предоставляем 6-слойную предварительную модель на MNLI в качестве модели общего назначения, которая может перенести в другие задачи классификации предложений, превосходя дистилберт (с той же 6-слойной структурой) по шести задачам клея (Dev Set).
| Метод | Mnli | MRPC | Qnli | QQP | Rte | SST-2 | STS-B |
|---|---|---|---|---|---|---|---|
| Берт-баз | 83,5 | 89,5 | 91.2 | 89,8 | 71.1 | 91.5 | 88.9 |
| Дистилберт | 79,0 | 87.5 | 85,3 | 84,9 | 59,9 | 90.7 | 81.2 |
| Берт-это | 82.1 | 87.5 | 88.8 | 88.8 | 70.1 | 91.8 | 87.8 |
Вы можете легко загрузить нашу модель общего назначения, используя Huggingface/Transformers.
from transformers import AutoTokenizer , AutoModel
tokenizer = AutoTokenizer . from_pretrained ( "canwenxu/BERT-of-Theseus-MNLI" )
model = AutoModel . from_pretrained ( "canwenxu/BERT-of-Theseus-MNLI" )Если вы хотите внести свой вклад и добавить больше задач (в данный момент доступен только клей), пожалуйста, отправьте запрос на привлечение и свяжитесь со мной. Кроме того, если вы найдете какую -либо проблему или ошибку, пожалуйста, сообщите с проблемой. Спасибо!
Мы перечисляем некоторые сторонние реализации от сообщества здесь. Пожалуйста, добавьте свою реализацию в этот список:
Tensorflow Implementation (tested on NER) : https://github.com/qiufengyuyi/bert-theseus-tfKeras Implementation (tested on text classification) : https://github.com/bojone/bert-theseus