Proyek ini adalah modul Python yang memfasilitasi pretraining Bert. Solusi open source yang ada saat ini untuk melatih model spesifik ini berbelit -belit. Kami telah menyederhanakan prosedur. Tujuan proyek ini adalah untuk membuka kode ke komunitas pembelajaran mesin yang lebih luas untuk membantu praktisi ML melatih model BerT mereka sendiri menggunakan data mereka. Kode ini dibuat untuk melatih iterasi terbaru dari Model Bert VMware (VBERT) untuk membantu pembelajaran mesin dan peneliti pemrosesan bahasa alami dalam VMware.
Notebook demo terletak di dalam folder demo
Siapkan python 3.7 atau 3.8 virtual env dan instal persyaratan menggunakan
pip install . dari dalam folder root
atau
pip install git+https://github.com/vmware-labs/bert-pretraining
Buat data pretraining menggunakan create_pretraining_data.py dari https://github.com/google-research/bert.
Anda dapat membuat file eval terpisah jika Anda ingin mengevaluasi akurasi MLM dan NSP model Anda pada set eval terpisah selama pelatihan.
Anda juga dapat membagi satu file menjadi pelatihan dan mengevaluasi vektor dengan menggunakan parameter split_ratio di objek konfigurasi.
Parameter pretraining ditangani melalui kelas pretraining_config. Silakan ikuti demo.ipynb untuk menjalankan sampel pretraining.
Pretraining_config params
| Parameter | Nilai default | Keterangan |
|---|---|---|
| model_name | Demobert | Nama model |
| is_base | BENAR | Boolean untuk memilih antara Bert-Base dan Bert-Large |
| max_seq_length | 128 | MSL, harus konsisten dengan file TFRECORD (menghasilkan 2 file terpisah jika Anda ingin pretrain Bert dengan MSL yang berbeda misalnya: 128, 512) |
| max_predictions_per_seq | 20 | Jumlah token bertopeng untuk MLM, harus konsisten dengan file TFRECORD |
| num_train_steps | 1000 | Jumlah langkah untuk melatih model untuk, berakhir jika kita mencapai akhir file tfrecord (pretraining bermakna akan membutuhkan lebih banyak langkah pelatihan) |
| num_warmup_steps | 10 | Jumlah langkah pemanasan, Bert menggunakan 1% langkah pelatihan sebagai langkah pemanasan |
| learning_rate | 1E-05 | Tingkat pembelajaran model |
| train_batch_size | 32 | Ukuran Batch Pelatihan (terpecah di seluruh GPU) |
| save_intermediate_checkpoints | BENAR | Simpan pos pemeriksaan untuk setiap langkah pelatihan 'X' yang diputuskan oleh save_checkpoint_steps. Pos Pemeriksaan akan selalu disimpan di akhir pelatihan |
| save_intermediate_checkpoint_steps | 25000 | Menyimpan pos pemeriksaan setelah setiap langkah pelatihan 'X' (tidak termasuk langkah pemanasan) |
| eval_batch_size | 32 | Ukuran Batch Evaluasi (terpecah di seluruh GPU) |
| max_eval_steps | 1000 | Jumlah langkah untuk melakukan evaluasi ketika tidak ada file eval terpisah. Jika file eval terpisah disediakan atau jika split_ratio disediakan, seluruh dataset eval digunakan untuk evaluasi |
| eval_point | 1000 | Melakukan evaluasi untuk setiap langkah pelatihan 'X' |
| split_ratio | Tidak ada | Persentase Dataset Pelatihan untuk digunakan untuk evaluasi jika Anda ingin membagi TFRECORD menjadi kereta, eval set data. Jika tidak ada rasio split yang disediakan, file pelatihan akan digunakan untuk evaulasi (jumlah langkah eval dikendalikan oleh parameter max_eval_steps) |
| init_checkpoint | Tidak ada | Jika Anda melanjutkan pelatihan, berikan jalur ke pos pemeriksaan sebelumnya. Jika Anda menginisialisasi pelatihan dari pos pemeriksaan non-default (Bert-Base, Bert-Large), berikan nama/jalur pos pemeriksaan model). |
| input_file | ./input/demo_msl128.tfrecord | Masukkan file tfrecord yang dibuat menggunakan create_pretraining_data.py dari https://github.com/google-research/bert |
| eval_file | Tidak ada | Jika Anda ingin menggunakan dataset eval terpisah, berikan input file tfrecord yang dibuat menggunakan create_pretraining_data.py dari https://github.com/google-research/bert |
| log_csv | ./eval_results.csv | File yang menyimpan hasil evaluasi ** |
| output_dir | ./ckpts | Direktori untuk menyimpan pos pemeriksaan |
| num_gpu | 3 | Jumlah GPU yang akan digunakan untuk pelatihan |
** File output log_csv mencatat hyperparameters dan hasil evaluasi
File demo.tfrecord dibuat dari dataset Wikicorpus.
Tim proyek pretraining Bert menyambut kontribusi dari masyarakat. Sebelum Anda mulai bekerja dengan proyek ini, silakan baca dan tanda tangani perjanjian lisensi kontributor kami (https://cla.vmware.com/cla/1/preview). Jika Anda ingin menyumbangkan kode dan Anda belum menandatangani Perjanjian Lisensi Kontributor kami (CLA), bot kami akan meminta Anda untuk melakukannya ketika Anda membuka permintaan tarik. Untuk pertanyaan tentang proses CLA, silakan merujuk ke kontribusi kami.
Apache-2.0