إصدارات الألمانية الكبيرة والصغيرة من GPT2:
انظر بطاقة نموذج GPT2 للحصول على اعتبارات حول القيود والتحيز. راجع وثائق GPT2 للحصول على تفاصيل على GPT2.
قمت بتقييم كل من Gerpt2-Large و GPT2 الألمانية الأخرى ، DBMDZ/German-GPT2 على مجموعة بيانات CC-100 وعلى ويكيبيديا الألمانية:
| CC-100 (PPL) | ويكيبيديا (PPL) | |
|---|---|---|
| DBMDZ/German-GPT2 | 49.47 | 62.92 |
| Gerpt2 | 24.78 | 35.33 |
| Gerpt2-large | 16.08 | 23.26 |
انظر البرنامج النصي evaluate.py في مستودع Gerpt2 github للرمز.
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" ])أيضا ، قد تحسن اثنين من الحيل النص الذي تم إنشاؤه:
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 على البيانات الألمانية بأكملها من مجموعة CC-100 وتم تهيئة الأوزان من نموذج GPT2 الإنجليزي. تم تدريب Gerpt2-Large مع:
استغرق التدريب ما يقرب من 12 يوما على 8 TPUV3 النوى.
لتدريب Gerpt2-large ، اتبع هذه الخطوات. توجد البرامج النصية في مستودع GitHub:
prepare/train_tokenizer.py . كبيانات تدريب لـ Tokenizer ، استخدمت مجموعة فرعية عشوائية من 5 ٪ من بيانات CC-100.prepare/generate_aligned_wte.py . يستخدم هذا خدعة أنيقة لتخطيط الرموز المميزة من رمز الرمز المميز الإنجليزي إلى الرموز من الرمز المميز الألماني باستخدام تضمينات الكلمات المحاذاة. 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
يساعد هذا كثيرًا في سباق تجريبي قمت به ، على الرغم من أنني لم أتمكن من إجراء مقارنة كاملة بسبب قيود الميزانية والوقت. لاستخدام مصفوفة WTE هذه ، يمكن تمريرها عبر wte_path إلى البرنامج النصي التدريبي. الفضل في هذا المدونة لفكرة تهيئة GPT2 من الأوزان الإنجليزية.
prepare/tokenize_text.py . هذا ينشئ ملفات لرموز القطار والتحقق من صحة بتنسيق خطوط JSON.train.py ! يوضح run.sh كيف تم تنفيذ ذلك للتشغيل الكامل مع config configs/tpu_large.json . تم ترخيص Gerpt2 بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
يرجى الاستشهاد بـ gerpt2 على النحو التالي:
@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}
}
بفضل الوجه المعانقة للأدوات الرائعة والبنية التحتية. شكر كبير لـ Artus Krohn-Grimberghe في Lytiq لجعل ذلك ممكنًا من خلال رعاية الموارد المستخدمة للتدريب.