BERT of Theseus
1.0.0
紙のコード「Bert-of-Sheseus:Progressiveモジュールの交換によるBertの圧縮」。
Bert-of-of-Sheseusは、元の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 引数の詳細な説明については、ソースコードを参照してください。
MNLIの6層の前処理モデルを汎用モデルとして提供します。これは、他の文分類タスクに転送でき、6つの接着剤(DEVセット)の6つのタスクでDistillbert(同じ6層構造)を上回ることができます。
| 方法 | mnli | MRPC | Qnli | QQP | rte | SST-2 | sts-b |
|---|---|---|---|---|---|---|---|
| バートベース | 83.5 | 89.5 | 91.2 | 89.8 | 71.1 | 91.5 | 88.9 |
| Distillbert | 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-of-theseus-tfKeras Implementation (tested on text classification) :https://github.com/bojone/bert-of-theseus