Versi besar dan kecil Jerman dari GPT2:
Lihat kartu model GPT2 untuk pertimbangan tentang keterbatasan dan bias. Lihat dokumentasi GPT2 untuk detail tentang GPT2.
Saya mengevaluasi GERPT2-Large dan GPT2 Jerman lainnya, DBMDZ/Jerman-GPT2 pada dataset CC-100 dan di Wikipedia Jerman:
| CC-100 (ppl) | Wikipedia (ppl) | |
|---|---|---|
| DBMDZ/Jerman-GPT2 | 49.47 | 62.92 |
| GERPT2 | 24.78 | 35.33 |
| GERPT2-Large | 16.08 | 23.26 |
Lihat skrip evaluate.py di repositori gitub GERPT2 untuk kode.
from transformers import AutoModelForCausalLM , AutoTokenizer , pipeline
tokenizer = AutoTokenizer . from_pretrained ( "benjamin/gerpt2-large" )
model = AutoModelForCausalLM . from_pretrained ( "benjamin/gerpt2-large" )
prompt = "<your prompt>"
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( prompt )[ 0 ][ "generated_text" ])Juga, dua trik mungkin meningkatkan teks yang dihasilkan:
output = model . generate (
# during training an EOS token was used to mark the beginning of each text
# so it can help to insert it at the start
torch . tensor (
[ tokenizer . eos_token_id ] + tokenizer . encode ( prompt )
). unsqueeze ( 0 ),
do_sample = True ,
# try setting bad_words_ids=[[0]] to disallow generating an EOS token, without this the model is
# prone to ending generation early because a significant number of texts from the training corpus
# is quite short
bad_words_ids = [[ 0 ]],
max_length = max_length ,
)[ 0 ]
print ( tokenizer . decode ( output ))GERPT2-Large dilatih pada seluruh data Jerman dari corpus CC-100 dan bobot diinisialisasi dari model GPT2 Inggris. GERPT2-Large dilatih dengan:
Pelatihan memakan waktu sekitar 12 hari dengan 8 inti TPUV3.
Untuk melatih GERPT2-Large, ikuti langkah-langkah ini. Script terletak di repositori GitHub:
prepare/train_tokenizer.py . Sebagai data pelatihan untuk tokenizer saya menggunakan subset acak 5% dari data CC-100.prepare/generate_aligned_wte.py . Ini menggunakan trik yang rapi untuk secara semantik memetakan token dari tokenizer Inggris ke token dari tokenizer Jerman menggunakan embeddings kata yang selaras. E. G.: ĠMinde -> Ġleast
Ġjed -> Ġwhatsoever
flughafen -> Air
vermittlung -> employment
teilung -> ignment
ĠInterpretation -> Ġinterpretation
Ġimport -> Ġimported
hansa -> irl
genehmigungen -> exempt
ĠAuflist -> Ġlists
Ġverschwunden -> Ġdisappeared
ĠFlyers -> ĠFlyers
Kanal -> Channel
Ġlehr -> Ġteachers
Ġnahelie -> Ġconvenient
gener -> Generally
mitarbeiter -> staff
Ini banyak membantu dalam uji coba yang saya lakukan, meskipun saya tidak dapat melakukan perbandingan penuh karena batasan anggaran dan waktu. Untuk menggunakan matriks wte ini dapat diteruskan melalui wte_path ke skrip pelatihan. Kredit ke posting blog ini untuk ide menginisialisasi GPT2 dari bobot bahasa Inggris.
prepare/tokenize_text.py . Ini menghasilkan file untuk token kereta dan validasi dalam format baris JSON.train.py ! run.sh menunjukkan bagaimana ini dieksekusi untuk menjalankan penuh dengan config configs/tpu_large.json . GERPT2 dilisensikan di bawah lisensi MIT.
Harap kutip GERPT2 sebagai berikut:
@misc{Minixhofer_GerPT2_German_large_2020,
author = {Minixhofer, Benjamin},
doi = {10.5281/zenodo.5509984},
month = {12},
title = {{GerPT2: German large and small versions of GPT2}},
url = {https://github.com/bminixhofer/gerpt2},
year = {2020}
}
Terima kasih untuk memeluk wajah untuk alat dan infrastruktur yang luar biasa. Terima kasih banyak kepada Artus Krohn-Grimberghe di Lytiq karena memungkinkan ini dengan mensponsori sumber daya yang digunakan untuk pelatihan.