Bahasa Inggris |中文
Pra-pelatihan telah menjadi bagian penting dari teknologi AI. TencentPretrain adalah perangkat untuk pra-pelatihan dan penyesuaian data dari berbagai modalitas (misalnya teks dan visi). TencentPretrain dicirikan oleh desain modular. Ini memfasilitasi penggunaan model pra-pelatihan yang ada, dan menyediakan antarmuka bagi pengguna untuk memperluasnya lebih lanjut. Dengan TencentPretrain, kami membangun kebun binatang model yang berisi model terlatih dari berbagai properti. TencentPretrain mewarisi toolkit UER open source (https://github.com/dbiir/UER-py/) dan memperluasnya ke kerangka pra-pelatihan multimodal.
TencentPretrain memiliki beberapa fitur berikut:
Bagian ini menggunakan beberapa contoh yang umum digunakan untuk menunjukkan cara menggunakan TencentPretrain. Rincian lebih lanjut dibahas di bagian Petunjuk. Kami pertama-tama menggunakan BERT (model pra-pelatihan teks) pada kumpulan data klasifikasi sentimen resensi buku. Kami melakukan pra-pelatihan model pada korpus resensi buku dan kemudian menyempurnakannya pada kumpulan data klasifikasi sentimen resensi buku. Ada tiga file masukan: korpus resensi buku, kumpulan data klasifikasi sentimen resensi buku, dan kosakata. Semua file dikodekan dalam UTF-8 dan disertakan dalam proyek ini.
Format korpus BERT adalah sebagai berikut (satu kalimat per baris dan dokumen dibatasi oleh baris kosong):
doc1-sent1
doc1-sent2
doc1-sent3
doc2-sent1
doc3-sent1
doc3-sent2
Korpus resensi buku diperoleh dari dataset klasifikasi sentimen resensi buku. Kami menghapus label dan membagi ulasan menjadi dua bagian dari tengah untuk membuat dokumen dengan dua kalimat (lihat book_review_bert.txt di folder corpora ).
Format dataset klasifikasi adalah sebagai berikut:
label text_a
1 instance1
0 instance2
1 instance3
Label dan instance dipisahkan oleh t . Baris pertama adalah daftar nama kolom. ID label harus berupa bilangan bulat antara (dan termasuk) 0 dan n-1 untuk klasifikasi n-arah.
Kami menggunakan file kosakata bahasa Mandarin Google models/google_zh_vocab.txt , yang berisi 21.128 karakter bahasa Mandarin.
Kami terlebih dahulu memproses korpus resensi buku. Pada tahap pra-pemrosesan, korpus perlu diproses ke dalam format yang diperlukan oleh model pra-pelatihan yang ditentukan ( --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
Perhatikan bahwa six>=1.12.0 diperlukan.
Pra-pemrosesan memakan waktu. Menggunakan banyak proses dapat mempercepat kecepatan pra-pemrosesan ( --processes_num ). Tokenizer BERT digunakan secara default ( --tokenizer bert ). Setelah pra-pemrosesan, teks mentah diubah menjadi dataset.pt , yang merupakan masukan dari pretrain.py . Kemudian kami mengunduh model BERT Cina terlatih Google google_zh_model.bin (dalam format TencentPretrain dan model aslinya dari sini), dan menaruhnya di folder model . Kami memuat model BERT Cina yang telah dilatih sebelumnya dan selanjutnya melatihnya terlebih dahulu di korpus resensi buku. Model pra-pelatihan biasanya terdiri dari lapisan embedding, encoder, dan target. Untuk membangun model pra-pelatihan, kita harus memberikan informasi terkait. File konfigurasi ( --config_path ) menentukan modul dan hyper-parameter yang digunakan oleh model pra-pelatihan. Detail lebih lanjut dapat ditemukan di models/bert/base_config.json . Misalkan kita memiliki mesin dengan 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
Perhatikan bahwa model yang dilatih oleh pretrain.py diserang dengan akhiran yang mencatat langkah pelatihan ( --total_steps ). Kami dapat menghapus akhiran untuk kemudahan penggunaan.
Kemudian kami menyempurnakan model terlatih pada kumpulan data klasifikasi hilir. Kami menggunakan lapisan penyematan dan encoder book_review_model.bin , yang merupakan output dari 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
Jalur default model pengklasifikasi yang disempurnakan adalah models/finetuned_model.bin . Terlihat bahwa ukuran batch pra-pelatihan yang sebenarnya adalah --batch_size kali --world_size ; Ukuran batch sebenarnya dari tugas hilir (misalnya klasifikasi) adalah --batch_size . Kemudian kami melakukan inferensi dengan model yang telah disesuaikan.
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 menentukan jalur file yang akan diprediksi. File harus berisi kolom text_a. --prediction_path menentukan jalur file dengan hasil prediksi. Kita perlu secara eksplisit menentukan jumlah label dengan --labels_num . Dataset di atas merupakan dataset klasifikasi dua arah.
Konten di atas memberikan cara dasar menggunakan TencentPretrain untuk melakukan pra-proses, pra-pelatihan, menyempurnakan, dan melakukan inferensi. Kasus penggunaan lainnya dapat ditemukan secara lengkap ➡️ mulai cepat ⬅️ . Mulai cepat lengkap berisi banyak kasus penggunaan, yang mencakup sebagian besar skenario aplikasi terkait pra-pelatihan. Disarankan agar pengguna membaca panduan mulai lengkap agar dapat menggunakan proyek secara wajar.
Bagian ini menyediakan tautan ke berbagai ➡️ data pra-pelatihan ⬅️ . TencentPretrain dapat memuat data pra-pelatihan ini secara langsung.
Bagian ini menyediakan tautan ke berbagai ➡️ kumpulan data hilir ⬅️ . TencentPretrain dapat memuat kumpulan data ini secara langsung.
Dengan bantuan TencentPretrain, kami melatih model dari properti yang berbeda (misalnya model berdasarkan modalitas, encoder, dan target yang berbeda). Pengenalan mendetail tentang model terlatih dan tautan unduhannya dapat ditemukan di ➡️ modelzoo ⬅️ . Semua model terlatih dapat dimuat langsung oleh TencentPretrain.
TencentPretrain diselenggarakan sebagai berikut:
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
Kode disusun berdasarkan komponen (misalnya embeddings, encoder). Pengguna dapat menggunakan dan memperluasnya dengan sedikit usaha.
Contoh lengkap penggunaan TencentPretrain dapat ditemukan di ➡️ petunjuk ⬅️ , yang membantu pengguna dengan cepat mengimplementasikan model pra-pelatihan seperti BERT, GPT-2, ELMo, T5, CLIP, dan menyempurnakan model pra-pelatihan pada berbagai tugas hilir.
TencentPretrain telah digunakan dalam solusi pemenang di banyak kompetisi. Di bagian ini, kami memberikan beberapa contoh penggunaan TencentPretrain untuk mencapai hasil SOTA pada kompetisi, seperti CLUE. Lihat ➡️ solusi kompetisi ⬅️ untuk informasi lebih detail.
@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}
}