Bahasa Inggris |中文
Pra-pelatihan telah menjadi bagian penting untuk tugas-tugas NLP. UER-py (Representasi Encoder Universal) adalah perangkat untuk pra-pelatihan tentang korpus domain umum dan penyesuaian pada tugas hilir. UER-py mempertahankan modularitas model dan mendukung perluasan penelitian. Ini memfasilitasi penggunaan model pra-pelatihan yang ada, dan menyediakan antarmuka bagi pengguna untuk memperluasnya lebih lanjut. Dengan UER-py, kami membangun kebun binatang model yang berisi model terlatih dari berbagai properti. Lihat Wiki proyek UER-py untuk dokumentasi lengkap .
Kami telah membuat TencentPretrain menjadi sumber terbuka, versi baru UER-py yang telah difaktorkan ulang. TencentPretrain mendukung model multi-modal dan memungkinkan pelatihan model besar. Jika Anda tertarik dengan model teks berukuran sedang (dengan ukuran parameter kurang dari satu miliar), kami menyarankan untuk terus menggunakan proyek UER-py.
UER-py memiliki beberapa fitur berikut:
Bagian ini menggunakan beberapa contoh yang umum digunakan untuk menunjukkan cara menggunakan UER-py. 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 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 UER 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 times --world_size ; Ukuran batch sebenarnya dari tugas hilir (misalnya klasifikasi) adalah --batch_size . Kemudian kami melakukan inferensi dengan model yang telah disempurnakan.
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 UER-py 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 ⬅️ . UER dapat memuat data pra-pelatihan ini secara langsung.
Bagian ini menyediakan tautan ke berbagai ➡️ kumpulan data hilir ⬅️ . UER dapat memuat kumpulan data ini secara langsung.
Dengan bantuan UER, kami melatih model dengan properti berbeda (misalnya model berdasarkan korpora, pembuat enkode, dan target berbeda). Pengenalan mendetail tentang model terlatih dan tautan unduhannya dapat ditemukan di ➡️ modelzoo ⬅️ . Semua model terlatih dapat dimuat oleh UER secara langsung.
UER-py diatur sebagai berikut:
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
Kode disusun berdasarkan komponen (misalnya embeddings, encoder). Pengguna dapat menggunakan dan memperluasnya dengan sedikit usaha.
Contoh komprehensif penggunaan UER dapat ditemukan di ➡️ instruksi ⬅️ , yang membantu pengguna dengan cepat mengimplementasikan model pra-pelatihan seperti BERT, GPT-2, ELMo, T5 dan menyempurnakan model pra-pelatihan pada berbagai tugas hilir.
UER-py telah digunakan dalam solusi pemenang di banyak kompetisi NLP. Pada bagian ini, kami memberikan beberapa contoh penggunaan UER-py untuk mencapai hasil SOTA pada kompetisi NLP, seperti CLUE. Lihat ➡️ solusi kompetisi ⬅️ untuk informasi lebih detail.
@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}
}
Untuk komunikasi terkait proyek ini, silakan hubungi Zhe Zhao ([email protected]; [email protected]) atau Yudong Li ([email protected]) atau Cheng Hou ([email protected]) atau Wenhang Shi ([email protected]).
Pekerjaan ini diinstruksikan oleh mentor perusahaan saya Qi Ju , Xuefeng Yang , Haotang Deng dan mentor sekolah Tao Liu , Xiaoyong Du .
Kami juga mendapat banyak bantuan dari Weijie Liu, Lusheng Zhang, Jianwei Cui, Xiayu Li, Weiquan Mao, Xin Zhao, Hui Chen, Jinbin Zhang, Zhiruo Wang, Peng Zhou, Haixiao Liu, dan Weijian Wu.