🚀 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 赞助训练所需的资源,使本项目得以实现。