อังกฤษ |中文
การฝึกอบรมล่วงหน้ากลายเป็นส่วนสำคัญของเทคโนโลยี AI TencentPretrain เป็นชุดเครื่องมือสำหรับการฝึกอบรมล่วงหน้าและการปรับแต่งข้อมูลในรูปแบบต่างๆ (เช่น ข้อความและการมองเห็น) TencentPretrain โดดเด่นด้วยการออกแบบแบบโมดูลาร์ ช่วยอำนวยความสะดวกในการใช้โมเดลก่อนการฝึกอบรมที่มีอยู่ และจัดเตรียมอินเทอร์เฟซสำหรับผู้ใช้เพื่อขยายเพิ่มเติม ด้วย TencentPretrain เราสร้างสวนสัตว์จำลองซึ่งประกอบด้วยโมเดลที่ผ่านการฝึกอบรมมาแล้วซึ่งมีคุณสมบัติต่างๆ กัน TencentPretrain สืบทอดชุดเครื่องมือโอเพ่นซอร์ส UER (https://github.com/dbiir/UER-py/) และขยายไปยังเฟรมเวิร์กการฝึกอบรมล่วงหน้าหลายรูปแบบ
TencentPretrain มีคุณสมบัติดังต่อไปนี้:
ส่วนนี้ใช้ตัวอย่างที่ใช้กันทั่วไปหลายตัวอย่างเพื่อสาธิตวิธีใช้ TencentPretrain รายละเอียดเพิ่มเติมมีการกล่าวถึงในส่วนคำแนะนำ ประการแรก เราใช้ 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 (ในรูปแบบ TencentPretrain และโมเดลดั้งเดิมมาจากที่นี่) และวางไว้ในโฟลเดอร์ 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 ชุดข้อมูลข้างต้นเป็นชุดข้อมูลการจำแนกประเภทแบบสองทาง
เนื้อหาข้างต้นให้วิธีการพื้นฐานในการใช้ TencentPretrain เพื่อประมวลผลล่วงหน้า ฝึกฝนล่วงหน้า ปรับแต่ง และทำการอนุมาน สามารถดูกรณีการใช้งานเพิ่มเติมได้ครบถ้วน ➡️ QuickStart ⬅️ . การเริ่มต้นอย่างรวดเร็วฉบับสมบูรณ์ประกอบด้วยกรณีการใช้งานมากมาย ครอบคลุมสถานการณ์การใช้งานที่เกี่ยวข้องกับก่อนการฝึกอบรมส่วนใหญ่ ขอแนะนำให้ผู้ใช้อ่านการเริ่มต้นอย่างรวดเร็วฉบับสมบูรณ์เพื่อใช้โปรเจ็กต์อย่างสมเหตุสมผล
ส่วนนี้มีลิงก์ไปยัง ➡️ ข้อมูลก่อนการฝึกอบรม ⬅️ TencentPretrain สามารถโหลดข้อมูลก่อนการฝึกอบรมเหล่านี้ได้โดยตรง
ส่วนนี้มีลิงก์ไปยังชุดข้อมูล ➡️ ชุด ข้อมูลดาวน์สตรีม ⬅️ TencentPretrain สามารถโหลดชุดข้อมูลเหล่านี้ได้โดยตรง
ด้วยความช่วยเหลือของ TencentPretrain เราได้ฝึกอบรมโมเดลคุณสมบัติต่างๆ ไว้ล่วงหน้า (เช่น โมเดลที่อิงจากรูปแบบรังสี ตัวเข้ารหัส และเป้าหมายที่แตกต่างกัน) คุณสามารถดูการแนะนำโดยละเอียดของโมเดลที่ได้รับการฝึกล่วงหน้าและลิงก์ดาวน์โหลดได้ใน ➡️ modelzoo ⬅️ TencentPretrain สามารถโหลดโมเดลที่ผ่านการฝึกอบรมแล้วทั้งหมดได้โดยตรง
TencentPretrain มีการจัดดังนี้:
TencentPretrain/
|--tencentpretrain/
| |--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
โค้ดถูกจัดระเบียบตามส่วนประกอบ (เช่น การฝัง ตัวเข้ารหัส) ผู้ใช้สามารถใช้และขยายออกไปได้โดยใช้ความพยายามเพียงเล็กน้อย
ตัวอย่างที่ครอบคลุมของการใช้ TencentPretrain สามารถพบได้ใน ➡️ คำแนะนำ ⬅️ ซึ่งช่วยให้ผู้ใช้นำโมเดลการฝึกอบรมล่วงหน้าไปใช้ได้อย่างรวดเร็ว เช่น BERT, GPT-2, ELMo, T5, CLIP และปรับแต่งโมเดลที่ได้รับการฝึกอบรมล่วงหน้าในงานดาวน์สตรีมต่างๆ
TencentPretrain ถูกนำมาใช้ในการเอาชนะการแข่งขันหลายรายการ ในส่วนนี้ เราจะให้ตัวอย่างการใช้ TencentPretrain เพื่อให้บรรลุผล SOTA ในการแข่งขัน เช่น CLUE ดู ➡️ โซลูชั่นการแข่งขัน ⬅️ สำหรับข้อมูลโดยละเอียดเพิ่มเติม
@article{zhao2023tencentpretrain,
title={TencentPretrain: A Scalable and Flexible Toolkit for Pre-training Models of Different Modalities},
author={Zhao, Zhe and Li, Yudong and Hou, Cheng and Zhao, Jing and others},
journal={ACL 2023},
pages={217},
year={2023}
}