Repo ini berisi resep ujung ke ujung untuk pretrain dan finetune Model representasi bahasa Bert (dua arah dari transformator) menggunakan layanan pembelajaran mesin Azure.
Pembaruan pada 7/7/2020 :? Implementasi yang lebih baru untuk pretraining Bert yang tersedia di https://github.com/microsoft/onnxruntime-training-examples/tree/master/nvidia-bert secara signifikan lebih cepat daripada implementasi dalam repo ini. Implementasi itu menggunakan runtime ONNX untuk mempercepat pelatihan dan dapat digunakan di lingkungan dengan GPU termasuk Azure Machine Learning Service. Rincian tentang penggunaan ONNX Runtime untuk pelatihan dan mempercepat pelatihan model transformator seperti Bert dan GPT-2 tersedia di blog di Onnx Runtime Training Technical Dive Deep.
Bert adalah model representasi bahasa yang dibedakan dengan kapasitasnya untuk secara efektif menangkap hubungan tekstual yang dalam dan halus dalam suatu korpus. Dalam makalah asli, penulis menunjukkan bahwa model BerT dapat dengan mudah diadaptasi untuk membangun model canggih untuk sejumlah tugas NLP, termasuk klasifikasi teks, pengenalan entitas yang disebutkan dan menjawab pertanyaan. Dalam repo ini, kami menyediakan buku catatan yang memungkinkan pengembang untuk pretrain model Bert dari awal pada corpus, serta untuk menyempurnakan model BerT yang ada untuk menyelesaikan tugas khusus. Pengantar singkat untuk Bert tersedia dalam repo ini untuk awal yang cepat di Bert.
Pretraining model representasi bahasa Bert ke tingkat akurasi yang diinginkan cukup menantang; Akibatnya, sebagian besar pengembang mulai dari model Bert yang terlatih pada corpus standar (seperti Wikipedia), alih-alih melatihnya dari awal. Strategi ini bekerja dengan baik jika model akhir sedang dilatih pada korpus yang mirip dengan korpus yang digunakan pada langkah pra-kereta; Namun, jika masalahnya melibatkan korpus khusus yang sangat berbeda dari corpus standar, hasilnya tidak akan optimal. Selain itu, untuk memajukan representasi bahasa di luar akurasi Bert, pengguna perlu mengubah arsitektur model, data pelatihan, fungsi biaya, tugas, dan rutinitas optimisasi. Semua perubahan ini perlu dieksplorasi pada parameter besar dan ukuran data pelatihan. Dalam kasus Bert-Large, ini bisa sangat substansial karena memiliki 340 juta parameter dan dilatih di atas korpus dokumen yang sangat besar. Untuk mendukung ini dengan GPU, insinyur pembelajaran mesin akan membutuhkan dukungan pelatihan terdistribusi untuk melatih model -model besar ini. Namun, karena kompleksitas dan kerapuhan mengkonfigurasi lingkungan terdistribusi ini, bahkan penyesuaian ahli dapat berakhir dengan hasil yang lebih rendah dari model yang terlatih.
Untuk mengatasi masalah ini, repo ini sedang menerbitkan alur kerja untuk pretraining model Bert-Large. Pengembang sekarang dapat membangun model representasi bahasa mereka sendiri seperti Bert menggunakan data khusus domain mereka di GPU, baik dengan perangkat keras mereka sendiri atau menggunakan layanan pembelajaran mesin Azure. Resep pretrain dalam repo ini mencakup dataset dan skrip preprocessing sehingga siapa pun dapat bereksperimen dengan membangun model representasi bahasa tujuan umum mereka sendiri di luar Bert. Secara keseluruhan ini adalah resep yang stabil dan dapat diprediksi yang menyatu dengan optimal yang baik bagi para peneliti untuk mencoba eksplorasi sendiri.
Resep pretraining dalam repo ini didasarkan pada paket Pytorch Pretrained Bert V0.6.2 dari memeluk wajah. Implementasi dalam resep pretraining ini mencakup teknik optimasi seperti gradient accumulation (gradien diakumulasikan untuk mini-batch yang lebih kecil sebelum memperbarui bobot model) dan mixed precision training . Modul notebook dan python untuk pretraining tersedia di Direktori Pretrain.
Persiapan data adalah salah satu langkah penting dalam proyek pembelajaran mesin apa pun. Untuk pretraining Bert, diperlukan korpus tingkat dokumen. Kualitas data yang digunakan untuk pretraining secara langsung berdampak pada kualitas model yang terlatih. Untuk membuat preprocessing data lebih mudah dan untuk pengulangan hasil, kode preprocessing data termasuk dalam repo. Ini dapat digunakan untuk pra-proses Wikipedia corpus atau kumpulan data lainnya untuk pretraining. Lihat informasi tambahan pada persiapan data untuk pretraining untuk detail tentang itu.
Resep finetuning dalam repo ini menunjukkan cara melakukan finetune model representasi bahasa Bert menggunakan layanan pembelajaran mesin Azure. Modul notebook dan python untuk finetuning tersedia di Finetune Directory. Kami finetune dan mengevaluasi pos pemeriksaan pretrained kami terhadap hal -hal berikut:
Benchmark evaluasi pemahaman bahasa umum (lem) adalah kumpulan sembilan kalimat atau tugas pemahaman bahasa pasangan kalimat untuk mengevaluasi dan menganalisis sistem pemahaman bahasa alami. Notebook Jupyter Bert_eval_Glue.ipynb memungkinkan pengguna untuk menjalankan salah satu pos pemeriksaan pretrain terhadap tugas -tugas ini di Azure ML.
Azure Machine Learning Service menyediakan lingkungan berbasis cloud untuk menyiapkan data, melatih, menguji, menggunakan, mengelola, dan melacak model pembelajaran mesin. Layanan ini sepenuhnya mendukung teknologi open-source seperti Pytorch, TensorFlow, dan scikit-learn dan dapat digunakan untuk segala jenis pembelajaran mesin, dari ML klasik hingga pembelajaran yang mendalam, pembelajaran yang diawasi dan tanpa pengawasan.
Jupyter Notebooks dapat digunakan untuk menggunakan Azureml Python SDK dan mengirimkan pekerjaan pretrain dan finetune. Repo ini berisi buku catatan berikut untuk berbagai kegiatan.
| Aktivitas | Buku catatan |
|---|---|
| Pretrain | BERT_PRRAIN.IPYNB |
| Lem finetune/evaluasi | Bert_eval_glue.ipynb |
| Aktivitas | Buku catatan |
|---|---|
| Lem finetune/evaluasi | TensorFlow-eri-Azureml.ipynb |
Proyek ini telah mengadopsi kode perilaku open source Microsoft. Untuk informasi lebih lanjut, lihat FAQ Kode Perilaku atau hubungi [email protected] dengan pertanyaan atau komentar tambahan.