Kode untuk kertas "Bert-of-theSeus: Compressing Bert dengan mengganti modul progresif".
Bert-of-Theseus adalah Bert terkompresi baru dengan secara progresif mengganti komponen Bert asli.

Jika Anda menggunakan kode ini dalam riset Anda, silakan kutip makalah kami:
@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 "
}BARU: Kami telah mengunggah skrip untuk membuat prediksi tentang tugas lem dan mempersiapkan penyerahan papan peringkat. Lihat di sini!
Kode kami dibangun di atas permukaan pelukan/transformator. Untuk menggunakan kode kami, Anda harus mengkloning dan menginstal 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 Untuk deskripsi argumen yang terperinci, silakan merujuk ke kode sumber.
Kami memberikan model pretrained 6-lapis pada MNLI sebagai model tujuan umum, yang dapat ditransfer ke tugas klasifikasi kalimat lain, mengungguli distillbert (dengan struktur 6-lapis yang sama) pada enam tugas lem (set dev).
| Metode | Mnli | Mrpc | Qnli | QQP | Rte | SST-2 | STS-B |
|---|---|---|---|---|---|---|---|
| Bert-base | 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 |
| Bert-of-theSeus | 82.1 | 87.5 | 88.8 | 88.8 | 70.1 | 91.8 | 87.8 |
Anda dapat dengan mudah memuat model tujuan umum kami menggunakan 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" )Jika Anda ingin berkontribusi dan menambahkan lebih banyak tugas (hanya lem yang tersedia saat ini), silakan kirim permintaan tarik dan hubungi saya. Juga, jika Anda menemukan masalah atau bug, silakan laporkan dengan masalah. Terima kasih!
Kami mencantumkan beberapa implementasi pihak ketiga dari komunitas di sini. Harap tambahkan implementasi Anda ke daftar ini:
Tensorflow Implementation (tested on NER) : https://github.com/qiufengyuyi/bert-of-theeseus-tfKeras Implementation (tested on text classification) : https://github.com/bojone/bert-of-oftheseus