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通過贊助用於培訓的資源來實現這一目標。