อังกฤษ |中文
การฝึกอบรมล่วงหน้ากลายเป็นส่วนสำคัญสำหรับงาน NLP UER-py (Universal Encoder Representations) เป็นชุดเครื่องมือสำหรับการฝึกอบรมล่วงหน้าเกี่ยวกับคลังโดเมนทั่วไปและปรับแต่งงานดาวน์สตรีมอย่างละเอียด UER-py รักษาโมเดลโมดูลาร์และสนับสนุนการขยายการวิจัย ช่วยอำนวยความสะดวกในการใช้โมเดลก่อนการฝึกอบรมที่มีอยู่ และจัดเตรียมอินเทอร์เฟซสำหรับผู้ใช้เพื่อขยายเพิ่มเติม ด้วย UER-py เราสร้างสวนสัตว์จำลองซึ่งมีโมเดลที่ผ่านการฝึกอบรมมาแล้วซึ่งมีคุณสมบัติต่างๆ กัน ดู Wiki โครงการ UER-py สำหรับเอกสารฉบับเต็ม
เราได้โอเพ่นซอร์ส TencentPretrain ซึ่งเป็น UER-py เวอร์ชันใหม่ที่ปรับโครงสร้างใหม่ TencentPretrain รองรับโมเดลหลายรูปแบบและช่วยให้สามารถฝึกฝนโมเดลขนาดใหญ่ได้ หากคุณสนใจโมเดลข้อความขนาดกลาง (ที่มีขนาดพารามิเตอร์น้อยกว่าหนึ่งพันล้าน) เราขอแนะนำให้ใช้โปรเจ็กต์ UER-py ต่อไป
UER-py มีคุณสมบัติดังต่อไปนี้:
ส่วนนี้ใช้ตัวอย่างที่ใช้กันทั่วไปหลายตัวอย่างเพื่อสาธิตวิธีใช้ UER-py รายละเอียดเพิ่มเติมมีการกล่าวถึงในส่วนคำแนะนำ ประการแรก เราใช้ BERT (โมเดลการฝึกอบรมข้อความล่วงหน้า) ในชุดข้อมูลการจำแนกประเภทความรู้สึกในการวิจารณ์หนังสือ เราฝึกอบรมโมเดลล่วงหน้าเกี่ยวกับคลังข้อมูลการวิจารณ์หนังสือ จากนั้นปรับแต่งชุดข้อมูลการจำแนกประเภทความรู้สึกในการวิจารณ์หนังสือ ไฟล์อินพุตมีสามไฟล์: คลังข้อมูลการวิจารณ์หนังสือ ชุดข้อมูลการจำแนกประเภทความรู้สึกของการวิจารณ์หนังสือ และคำศัพท์ ไฟล์ทั้งหมดได้รับการเข้ารหัสในรูปแบบ UTF-8 และรวมอยู่ในโปรเจ็กต์นี้
รูปแบบของคลังข้อมูลสำหรับ BERT เป็นดังนี้ (หนึ่งประโยคต่อบรรทัดและเอกสารคั่นด้วยบรรทัดว่าง):
doc1-sent1
doc1-sent2
doc1-sent3
doc2-sent1
doc3-sent1
doc3-sent2
คลังบทวิจารณ์หนังสือได้มาจากชุดข้อมูลการจำแนกประเภทบทวิจารณ์หนังสือ เราลบป้ายกำกับและแยกบทวิจารณ์ออกเป็นสองส่วนจากตรงกลางเพื่อสร้างเอกสารที่มีสองประโยค (ดู book_review_bert.txt ในโฟลเดอร์ corpora )
รูปแบบของชุดข้อมูลการจำแนกประเภทเป็นดังนี้:
label text_a
1 instance1
0 instance2
1 instance3
ป้ายกำกับและอินสแตนซ์ถูกคั่นด้วย t แถวแรกเป็นรายการชื่อคอลัมน์ รหัสป้ายกำกับควรเป็นจำนวนเต็มระหว่าง (และรวมถึง) 0 ถึง n-1 สำหรับการจำแนกประเภทแบบ n-way
เราใช้ไฟล์คำศัพท์ภาษาจีนของ Google model/google_zh_vocab.txt ซึ่งมีตัวอักษรจีน 21,128 ตัว
อันดับแรก เราจะประมวลผลคลังบทวิจารณ์หนังสือล่วงหน้า ในขั้นตอนก่อนการประมวลผล คลังข้อมูลจะต้องได้รับการประมวลผลเป็นรูปแบบที่กำหนดโดยโมเดลการฝึกอบรมล่วงหน้าที่ระบุ ( --data_processor ):
python3 preprocess.py --corpus_path corpora/book_review_bert.txt --vocab_path models/google_zh_vocab.txt
--dataset_path dataset.pt --processes_num 8 --data_processor bert
โปรดสังเกตว่าต้องใช้ หก>=1.12.0
การประมวลผลล่วงหน้าใช้เวลานาน การใช้หลายกระบวนการสามารถเร่งความเร็วก่อนการประมวลผลได้อย่างมาก ( --processes_num ) BERT tokenizer ถูกใช้เป็นค่าเริ่มต้น ( --tokenizer bert ) หลังจากประมวลผลล่วงหน้า ข้อความดิบจะถูกแปลงเป็น dataset.pt ซึ่งเป็นอินพุตของ pretrain.py จากนั้นเราจะดาวน์โหลดโมเดล BERT ภาษาจีนที่ผ่านการฝึกอบรมล่วงหน้าของ Google google_zh_model.bin (ในรูปแบบ UER และโมเดลดั้งเดิมมาจากที่นี่) และวางไว้ในโฟลเดอร์ models เราโหลดโมเดล BERT ภาษาจีนที่ผ่านการฝึกอบรมมาแล้ว และฝึกอบรมล่วงหน้าเพิ่มเติมในคลังข้อมูลการวิจารณ์หนังสือ แบบจำลองก่อนการฝึกอบรมมักประกอบด้วยเลเยอร์การฝัง ตัวเข้ารหัส และเลเยอร์เป้าหมาย ในการสร้างโมเดลก่อนการฝึกอบรม เราควรให้ข้อมูลที่เกี่ยวข้อง ไฟล์การกำหนดค่า ( --config_path ) ระบุโมดูลและไฮเปอร์พารามิเตอร์ที่ใช้โดยโมเดลการฝึกอบรมล่วงหน้า รายละเอียดเพิ่มเติมสามารถพบได้ใน models/bert/base_config.json สมมติว่าเรามีเครื่องที่มี 8 GPU:
python3 pretrain.py --dataset_path dataset.pt --vocab_path models/google_zh_vocab.txt
--pretrained_model_path models/google_zh_model.bin
--config_path models/bert/base_config.json
--output_model_path models/book_review_model.bin
--world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7
--total_steps 5000 --save_checkpoint_steps 1000 --batch_size 32
mv models/book_review_model.bin-5000 models/book_review_model.bin
โปรดสังเกตว่าโมเดลที่ได้รับการฝึกโดย pretrain.py จะติดกับส่วนต่อท้ายซึ่งบันทึกขั้นตอนการฝึก ( --total_steps ) เราสามารถลบส่วนต่อท้ายออกได้เพื่อความสะดวกในการใช้งาน
จากนั้นเราจะปรับแต่งโมเดลที่ได้รับการฝึกอบรมล่วงหน้าในชุดข้อมูลการจำแนกประเภทดาวน์สตรีม เราใช้เลเยอร์การฝังและตัวเข้ารหัสของ book_review_model.bin ซึ่งเป็นเอาต์พุตของ pretrain.py :
python3 finetune/run_classifier.py --pretrained_model_path models/book_review_model.bin
--vocab_path models/google_zh_vocab.txt
--config_path models/bert/base_config.json
--train_path datasets/book_review/train.tsv
--dev_path datasets/book_review/dev.tsv
--test_path datasets/book_review/test.tsv
--epochs_num 3 --batch_size 32
พาธดีฟอลต์ของโมเดลลักษณนามที่ปรับแต่งอย่างละเอียดคือ models/finetuned_model.bin จะสังเกตได้ว่าขนาดแบตช์จริงของการฝึกล่วงหน้าคือ --batch_size คูณ --world_size ; ขนาดแบทช์ที่แท้จริงของงานดาวน์สตรีม (เช่น การจำแนกประเภท) คือ --batch_size จากนั้นเราจะอนุมานด้วยโมเดลที่ได้รับการปรับแต่งอย่างละเอียด
python3 inference/run_classifier_infer.py --load_model_path models/finetuned_model.bin
--vocab_path models/google_zh_vocab.txt
--config_path models/bert/base_config.json
--test_path datasets/book_review/test_nolabel.tsv
--prediction_path datasets/book_review/prediction.tsv
--labels_num 2
--test_path ระบุเส้นทางของไฟล์ที่จะคาดการณ์ ไฟล์ควรมีคอลัมน์ text_a --prediction_path ระบุเส้นทางของไฟล์พร้อมผลการทำนาย เราจำเป็นต้องระบุจำนวนป้ายกำกับอย่างชัดเจนโดย --labels_num ชุดข้อมูลข้างต้นเป็นชุดข้อมูลการจำแนกประเภทแบบสองทาง
เนื้อหาข้างต้นเป็นวิธีพื้นฐานในการใช้ UER-py เพื่อประมวลผลล่วงหน้า ฝึกล่วงหน้า ปรับแต่ง และทำการอนุมาน สามารถดูกรณีการใช้งานเพิ่มเติมได้ครบถ้วน ➡️ QuickStart ⬅️ . การเริ่มต้นอย่างรวดเร็วฉบับสมบูรณ์ประกอบด้วยกรณีการใช้งานมากมาย ครอบคลุมสถานการณ์การใช้งานที่เกี่ยวข้องกับก่อนการฝึกอบรมส่วนใหญ่ ขอแนะนำให้ผู้ใช้อ่านการเริ่มต้นอย่างรวดเร็วฉบับสมบูรณ์เพื่อใช้โปรเจ็กต์อย่างสมเหตุสมผล
ส่วนนี้มีลิงก์ไปยัง ➡️ ข้อมูลก่อนการฝึกอบรม ⬅️ UER สามารถโหลดข้อมูลก่อนการฝึกอบรมเหล่านี้ได้โดยตรง
ส่วนนี้มีลิงก์ไปยังชุดข้อมูล ➡️ ชุด ข้อมูลดาวน์สตรีม ⬅️ UER สามารถโหลดชุดข้อมูลเหล่านี้ได้โดยตรง
ด้วยความช่วยเหลือของ UER เราได้ฝึกอบรมโมเดลคุณสมบัติต่างๆ ไว้ล่วงหน้า (เช่น โมเดลที่อิงตามคอร์ปอรา ตัวเข้ารหัส และเป้าหมายที่แตกต่างกัน) คุณสามารถดูการแนะนำโดยละเอียดของโมเดลที่ได้รับการฝึกล่วงหน้าและลิงก์ดาวน์โหลดได้ใน ➡️ modelzoo ⬅️ โมเดลที่ได้รับการฝึกล่วงหน้าทั้งหมดสามารถโหลดโดย UER ได้โดยตรง
UER-py มีการจัดระเบียบดังนี้:
UER-py/
|--uer/
| |--embeddings/ # contains modules of embedding component
| |--encoders/ # contains modules of encoder component such as RNN, CNN, Transformer
| |--decoders/ # contains modules of decoder component
| |--targets/ # contains modules of target component such as language modeling, masked language modeling
| |--layers/ # contains frequently-used NN layers
| |--models/ # contains model.py, which combines modules of different components
| |--utils/ # contains frequently-used utilities
| |--model_builder.py
| |--model_loader.py
| |--model_saver.py
| |--opts.py
| |--trainer.py
|
|--corpora/ # contains pre-training data
|--datasets/ # contains downstream tasks
|--models/ # contains pre-trained models, vocabularies, and configuration files
|--scripts/ # contains useful scripts for pre-training models
|--finetune/ # contains fine-tuning scripts for downstream tasks
|--inference/ # contains inference scripts for downstream tasks
|
|--preprocess.py
|--pretrain.py
|--README.md
|--README_ZH.md
|--requirements.txt
|--LICENSE
โค้ดถูกจัดระเบียบตามส่วนประกอบ (เช่น การฝัง ตัวเข้ารหัส) ผู้ใช้สามารถใช้และขยายออกไปได้โดยใช้ความพยายามเพียงเล็กน้อย
ตัวอย่างการใช้งาน UER ที่ครอบคลุมสามารถพบได้ใน ➡️ คำแนะนำ ⬅️ ซึ่งช่วยให้ผู้ใช้นำโมเดลการฝึกอบรมล่วงหน้าไปใช้ได้อย่างรวดเร็ว เช่น BERT, GPT-2, ELMo, T5 และปรับแต่งโมเดลที่ได้รับการฝึกอบรมล่วงหน้าในงานดาวน์สตรีมต่างๆ
UER-py ถูกนำมาใช้ในการชนะการแข่งขัน NLP หลายรายการ ในส่วนนี้ เราจะให้ตัวอย่างการใช้ UER-py เพื่อให้ได้ผลลัพธ์ SOTA ในการแข่งขัน NLP เช่น CLUE ดู ➡️ โซลูชั่นการแข่งขัน ⬅️ สำหรับข้อมูลโดยละเอียดเพิ่มเติม
@article{zhao2019uer,
title={UER: An Open-Source Toolkit for Pre-training Models},
author={Zhao, Zhe and Chen, Hui and Zhang, Jinbin and Zhao, Xin and Liu, Tao and Lu, Wei and Chen, Xi and Deng, Haotang and Ju, Qi and Du, Xiaoyong},
journal={EMNLP-IJCNLP 2019},
pages={241},
year={2019}
}
สำหรับการสื่อสารที่เกี่ยวข้องกับโครงการนี้ โปรดติดต่อ Zhe Zhao ([email protected]; [email protected]) หรือ Yudong Li ([email protected]) หรือ Cheng Hou ([email protected]) หรือเหวินหางชื่อ ([email protected])
งานนี้ได้รับคำแนะนำจากที่ปรึกษาด้านองค์กรของฉัน Qi Ju , Xuefeng Yang , Haotang Deng และที่ปรึกษาของโรงเรียน Tao Liu , Xiaoyong Du
นอกจากนี้เรายังได้รับความช่วยเหลือมากมายจาก Weijie Liu, Lusheng Zhang, Jianwei Cui, Xiayu Li, Weiquan Mao, Xin Zhao, Hui Chen, Jinbin Zhang, Zhiruo Wang, Peng Zhou, Haixiao Liu และ Weijian Wu