🚀 GerPT2
GerPT2 提供了德語版的 GPT2 模型,包含大、小兩種版本,可用於德語相關的自然語言處理任務,為德語語言處理提供了強大的支持。
🚀 快速開始
German large and small versions of GPT2:
- https://huggingface.co/benjamin/gerpt2
- https://huggingface.co/benjamin/gerpt2-large
查看 GPT2 model card 以瞭解其侷限性和偏差相關的注意事項。查看 GPT2 documentation 以獲取 GPT2 的詳細信息。
✨ 主要特性
性能對比
與 dbmdz/german-gpt2 相比,GerPT2 在 CC - 100 數據集和德語維基百科上表現更優,具體指標如下:
|
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 repository 中的 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(
torch.tensor(
[tokenizer.eos_token_id] + tokenizer.encode(prompt)
).unsqueeze(0),
do_sample=True,
bad_words_ids=[[0]],
max_length=max_length,
)[0]
print(tokenizer.decode(output))
🔧 技術細節
訓練數據與初始化
GerPT2 - large 在 CC - 100 Corpus 的全量德語數據上進行訓練,權重從 [English GPT2 model](https://huggingface.co/gpt2 - large) 初始化。
訓練參數
GerPT2 - large 的訓練參數如下:
- 批量大小:256
- 學習率:採用 OneCycle 學習率,最大值為 5e - 3
- 優化器:AdamW,權重衰減為 0.01
- 訓練輪數:2 輪
訓練時長
在 8 個 TPUv3 核心上訓練大約需要 12 天。
訓練步驟
要訓練 GerPT2 - large,請按照以下步驟操作,腳本位於 Github repository:
0. 從 http://data.statmt.org/cc - 100/ 下載並解壓訓練數據。
- 使用
prepare/train_tokenizer.py
訓練分詞器,分詞器的訓練數據使用 CC - 100 數據的 5% 隨機子集。
- (可選)使用
prepare/generate_aligned_wte.py
生成德語輸入嵌入矩陣,示例如下:
Ġ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_path
將此 WTE 矩陣傳遞給訓練腳本。該思路源自 [this blogpost](https://medium.com/@pierre_guillou/faster - than - training - from - scratch - fine - tuning - the - english - gpt - 2 - in - any - language - with - hugging - f2ec05c98787)。
3. 使用 prepare/tokenize_text.py
對語料庫進行分詞,生成 JSON Lines 格式的訓練和驗證分詞文件。
4. 運行訓練腳本 train.py
!run.sh
展示瞭如何使用配置文件 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}
}
致謝
感謝 Hugging Face 提供的優秀工具和基礎設施。
非常感謝 LYTiQ 的 Artus Krohn - Grimberghe 贊助訓練所需的資源,使本項目得以實現。