gerpt2
1.0.0
德国大小版本的GPT2:
有关局限性和偏见的考虑,请参见GPT2型号卡。有关GPT2的详细信息,请参见GPT2文档。
我在CC-100数据集和德国Wikipedia上评估了GERPT2-LARGE和其他德国GPT2,DBMDZ/GPT2:
| CC-100(PPL) | 维基百科(PPL) | |
|---|---|---|
| DBMDZ/德国-GPT2 | 49.47 | 62.92 |
| gerpt2 | 24.78 | 35.33 |
| gerpt2-large | 16.08 | 23.26 |
有关代码,请参见gerpt2 github存储库中的脚本evaluate.py 。
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接受了培训:
培训大约需要8个TPUV3核心。
要训练gerpt2-large,请按照以下步骤操作。脚本位于GitHub存储库中:
prepare/train_tokenizer.py训练令牌。作为令牌仪的训练数据,我使用了5%CC-100数据的随机子集。prepare/generate_aligned_wte.py生成德语输入嵌入矩阵。这使用一个整洁的技巧将语义上的令牌从英语令牌映射到使用Aligned Word Embeddings的德语令牌的令牌。 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将其传递到训练脚本。归功于此Blogpost,以便将英语重量初始化GPT2初始化的想法。
prepare/tokenize_text.py tokenize语料库。这将以JSON线格式生成用于火车和验证令牌的文件。train.py ! run.sh显示了如何使用config configs/tpu_large.json为完整运行执行此操作。 GERPT2已获得MIT许可证的许可。
请引用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}
}
多亏了拥抱脸部的出色工具和基础设施。非常感谢Lytiq的Artus Krohn-Grimberghe通过赞助用于培训的资源来实现这一目标。