รหัสสำหรับกระดาษ "bert-of-thesus: บีบอัดเบิร์ตโดยการเปลี่ยนโมดูลแบบก้าวหน้า"
Bert-of-Theseus เป็นเบิร์ตที่บีบอัดใหม่โดยการแทนที่ส่วนประกอบของเบิร์ตดั้งเดิมอย่างต่อเนื่อง

หากคุณใช้รหัสนี้ในการวิจัยของคุณโปรดอ้างอิงบทความของเรา:
@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 สำหรับคำอธิบายโดยละเอียดของอาร์กิวเมนต์โปรดดูที่ซอร์สโค้ด
เราจัดทำโมเดล Pretraned 6 ชั้นบน MNLI เป็นแบบจำลองวัตถุประสงค์ทั่วไปซึ่งสามารถถ่ายโอนไปยังงานการจำแนกประโยคอื่น ๆ ที่มีประสิทธิภาพสูงกว่า distillbert (มีโครงสร้าง 6 ชั้นเดียวกัน) ในหกงานของกาว (ชุด Dev)
| วิธี | 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 |
| Bert-of-Theseus | 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