Pelatihan Model Bahasa Transformer GPT-2 pada korpora Anda sendiri dengan Tokenisasi Kalimat.
Repo ini berisi implementasi Pytorch dari GPT-2, yang mendukung pelatihan multi-GPU. Ini juga berisi implementasi TensorFlow di lm/gpt_2_tf , tetapi tidak dikembangkan lagi. Mereka berbagi skrip persiapan data yang sama. Perintah pelatihan TF adalah gpt-2-tf-train dan membutuhkan TensorFlow 1.13. Dokumentasi di bawah ini adalah untuk versi Pytorch.
Isi
Python 3.6+ diperlukan dengan obor malam atau 1.6.0+. Bekerja di VirtualEnv diasumsikan di bawah ini. Instal versi Pytorch yang sesuai terlebih dahulu, lalu:
Pip instal -r persyaratan.txt python setup.py kembangkan
Instruksi di bawah ini. Lihat juga test/test_shakespeare.sh untuk demo pipa lengkap pada corpus kecil (membutuhkan waktu satu menit pada CPU).
Format Corpus: Direktori dengan train tingkat atas, folder valid dan test . Setiap folder tingkat atas dapat berisi sub-folder. Di dalamnya, harus ada file teks yang dikodekan UTF-8 dengan ekstensi .txt .
Perintah untuk melatih model kalimat dan menyandikan corpus mendukung beberapa korpora, dalam contoh di bawah ini kami menganggap mereka dapat terdaftar sebagai data/corpora-* .
Model Latih kalimat ( sp-text.txt dapat dihapus setelah berjalan). Ini dapat mengkonsumsi sejumlah besar memori, menyesuaikan argumen kalimat seperti yang disarankan jika diperlukan (ini tidak didukung dalam perintah sp-train secara langsung):
Data SP-Train/Korpora-* SP-Text.txt SP-Model
Encode Corpora, Memproduksi File Numpy:
data sp-encode/korpora-* SP-MODEL.Model Data/dikodekan
Contoh Perintah:
GPT-2 Data Run-Root/SP-Model.Model yang dikodekan
run-root akan berisi pos pemeriksaan model dan log JSON-lines, yang dapat diplot dalam buku catatan Jupyter dengan json_log_plots.plot("run-root") , dengan jumlah token yang terlihat pada sumbu x.
Hyperparameter default sesuai dengan model GPT-2 "kecil yang dirilis.
Ketika beberapa GPU tersedia, mereka akan digunakan untuk pelatihan dengan bantuan torch.distributed .
Jika jalan itu ada dan -Kunci --clean tidak dilewati, pelatihan akan dilanjutkan. Perhatikan bahwa semua parameter masih perlu ditentukan dan parameter model perlu dicocokkan.
Catatan tentang Parameter Pelatihan:
--batch-size adalah per-gpu, jadi Anda tidak perlu mencetak ulang saat mengubah jumlah GPU, cukup gunakan maks yang cocok dengan memori.--g-accum-gradients adalah jumlah global dari akumulasi gradien, itu harus dibagi dengan jumlah GPU. Ukuran batch global yang efektif selalu batch_size * g_accum_gradients .--lr tidak perlu diubah saat mengubah --batch-size atau --g-accum-gradients atau jumlah GPU atau --n-ctx : LOSS sudah diskalakan dengan tepat.Contoh Perintah:
GPT-2-Gen Run-Root "Kecerdasan Buatan"
run-root akan berisi model pos pemeriksaan "Artificial intelligence" adalah awalan teks yang digunakan sebagai titik awal untuk menghasilkan token
Catatan Parameter Inferensi:
--tokens-to-generate : Jumlah token untuk menghasilkan, default adalah 42--top-k : Jumlah kandidat token yang akan dihasilkan untuk setiap posisi (lebar balok), default adalah 8. Lisensi adalah MIT.
Tensorflow GPT-2 Model diambil dari https://github.com/openai/gpt-2/blob/master/src/model.py dan tensorflow gpt-2 kode pelatihan didasarkan pada https://github.com/nsepperd/gpt-2/blob/finetuning.py.py
Port Pytorch didasarkan pada kode OpenAI asli.
Tes Shakespeare Corpus di bawah tests/shakespeare berasal dari http://shakespeare.mit.edu di bawah domain publik.
Lihat juga kertas dan blog OpenAI GPT-2.