使用句子令牌化培训GPT-2变压器语言模型。
该仓库包含GPT-2的Pytorch实施,该实施支持多GPU培训。它还在lm/gpt_2_tf中包含张量集实现,但不再开发。他们共享相同的数据准备脚本。 TF培训命令是gpt-2-tf-train ,需要TensorFlow 1.13。下面的文档适用于Pytorch版本。
内容
python 3.6+是每晚或1.6.0+的3.6+。下面假设在Virtualenv中工作。首先安装适当版本的Pytorch,然后:
pip install -r要求.txt python setup.py开发
说明如下。另请参阅test/test_shakespeare.sh以获取小型语料库上的完整管道演示(在CPU上需要一分钟)。
语料库格式:具有顶级train , valid和test文件夹的目录。每个顶级文件夹都可能包含子文件夹。在其中,必须带有.txt扩展名的UTF-8编码文本文件。
训练句子模型并编码语料库支持多个语料库的命令,在下面的示例中,我们假设它们可以列为data/corpora-* 。
火车句子模型(运行后可以删除sp-text.txt )。这可以消耗大量内存,如果需要,请按建议进行调整句子参数( sp-train命令中不支持这一点):
SP-Train Data/Corpora-* Sp-Text.txt Sp-Model
编码coldoa,生成numpy文件:
sp-consode数据/colda-* sp-model.model数据/编码
示例命令:
gpt-2 run-root数据/编码的SP-Model.model
run-root将包含模型检查点和JSON-LINES日志,可以在用json_log_plots.plot("run-root") Jupyter笔记本中绘制,并在X轴上看到数量的令牌。
默认的超参数对应于发布的“小” GPT-2模型。
当有多个GPU可用时,它们将在torch.distributed 。分布的帮助下用于培训。
如果存在路径并且未通过--clean钥匙,则将恢复培训。请注意,仍需要指定所有参数,并且需要匹配模型参数。
培训参数的注释:
--batch-size为每gpu,因此您无需在更改GPU数量时重新调整它,只需使用适合内存的Max即可。--g-accum-gradients是梯度积累的全球数量,必须由GPU的数量除外。有效的全局批次大小始终为batch_size * g_accum_gradients 。--lr在更改--batch-size或--g-accum-gradients或GPU的数量或--n-ctx :损失的数量)时不需要更改。示例命令:
GPT-2-gen Run-root“人工智能”
run-root将包含模型检查点"Artificial intelligence"是文本前缀,用作生成代币的起点
关于推理参数的注释:
--tokens-to-generate :生成的令牌数,默认值为42--top-k :为每个位置生成(梁宽度)生成的令牌候选数量,默认值为8。 许可证是麻省理工学院。
TensorFlow GPT-2模型取自https://github.com/openai/gpt-2/blob/master/master/src/src/model.py and tensorflow gpt-gpt-gpt-2训练代码基于https://github.com/nshepperperd/nsheperpperd/gpt/gpt/gpt-/gpt-2/blob/blob/finetuning/finetuning/finetuning/train.py.py.py.py.py.py.py.py.py.py
Pytorch端口基于原始OpenAI代码。
测试莎士比亚语料库tests/shakespeare来自公共领域的http://shakespeare.mit.edu。
另请参见OpenAI GPT-2纸和博客。