语言: 德语
小部件:
- 文本: "在一项令人震惊的发现中,科学家们在安第斯山脉一个偏远且此前未被探索过的山谷里找到了一群栖息于此的独角兽。"
许可证: MIT
GerPT2
德语版GPT2的大规模与小规模版本:
- https://huggingface.co/benjamin/gerpt2
- https://huggingface.co/benjamin/gerpt2-large
关于模型局限性与偏见的考量,请参阅GPT2模型卡片。GPT2的详细说明参见GPT2文档。
我在CC-100数据集和德语维基百科上评估了GerPT2-large与另一款德语GPT2模型dbmdz/german-gpt2:
|
CC-100 (困惑度) |
维基百科 (困惑度) |
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 = "<您的提示文本>"
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语料库的全部德语数据训练,权重初始化自英文GPT2模型。训练参数如下:
- 批量大小:256
- 使用峰值5e-3的OneCycle学习率
- 采用权重衰减0.01的AdamW优化器
- 训练2个周期
在8个TPUv3核心上训练耗时约12天。完整训练步骤请参考GitHub仓库中的脚本:
- 从http://data.statmt.org/cc-100/下载并解压数据
- 使用
prepare/train_tokenizer.py
训练分词器(训练数据为CC-100随机5%的子集)
- (可选)通过
prepare/generate_aligned_wte.py
生成德语输入嵌入矩阵,利用对齐词向量将英文分词器标记映射到德语分词器
- 使用
prepare/tokenize_text.py
对语料进行分词,生成JSON Lines格式的训练/验证文件
- 运行
train.py
训练脚本,完整训练配置见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赞助训练所需资源。