GPT2의 독일 크고 작은 버전 :
한계 및 바이어스에 대한 고려 사항은 GPT2 모델 카드를 참조하십시오. GPT2에 대한 자세한 내용은 GPT2 문서를 참조하십시오.
CC-100 데이터 세트 및 독일 Wikipedia에서 gerpt2-large와 다른 독일 GPT2, DBMDZ/GERMAN-GPT2를 모두 평가했습니다.
| CC-100 (PPL) | Wikipedia (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" ])또한 두 가지 트릭은 생성 된 텍스트를 향상시킬 수 있습니다.
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 코어에서 약 12 일이 걸렸습니다.
gerpt2-large를 훈련 시키려면 다음 단계를 따르십시오. 스크립트는 Github 저장소에 있습니다.
prepare/train_tokenizer.py 사용하여 토큰 화기를 훈련시킵니다. Tokenizer에 대한 교육 데이터로서 나는 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 덕분에 교육에 사용되는 자원을 후원함으로써이를 가능하게 해주었습니다.