GPT2のドイツの大小のバージョン:
制限とバイアスに関する考慮事項については、GPT2モデルカードを参照してください。 GPT2の詳細については、GPT2ドキュメントを参照してください。
CC-100データセットとドイツのウィキペディアで、Gerpt2-Largeと他のドイツGPT2、DBMDZ/German-GPT2の両方を評価しました。
| CC-100(ppl) | ウィキペディア(ppl) | |
|---|---|---|
| dbmdz/german-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" ])また、2つのトリックが生成されたテキストを改善する可能性があります。
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コーパスからのドイツデータ全体で訓練されており、Weightsは英語GPT2モデルから初期化されました。 gerpt2-largeは次のように訓練されました。
トレーニングには8つのTPUV3コアで約12日かかりました。
gerpt2-largeをトレーニングするには、次の手順に従ってください。スクリプトはGitHubリポジトリにあります。
prepare/train_tokenizer.pyを使用してトークネイザーを訓練します。トークン剤のトレーニングデータとして、CC-100データの5%のランダムサブセットを使用しました。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は、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に感謝します。