安装使用教程如下:
github地址:https://github.com/minimaxir/gpt-2-simple
操作系统:ubuntu16.04
tensorflow: gpu版本
第一步,使用anaconda创建虚拟环境,命名为gpt_2:
conda deactivate
conda create -n gpt_test python=3.6
conda activate gpt_test
第二步,安装tensorflow-gpu版本
pip install --upgrade pip
pip install tensorflow-gpu==1.15.0
pip install --upgrade setuptools wheel
pip install gpt-2-simple
gpt_2_simple --help
显示:
optional arguments:
-h, --help show this help message and exit
等等
(参数具体含义请往下看)
第三步,安装CUDA
百度吧
第四步,下载预训练模型
import gpt_2_simple as gpt2
import os
import requests
model_name = "124M"
if not os.path.isdir(os.path.join("models", model_name)):
print(f"Downloading {model_name} model...")
gpt2.download_gpt2(model_name=model_name)
model_name = "355M"
if not os.path.isdir(os.path.join("models", model_name)):
print(f"Downloading {model_name} model...")
gpt2.download_gpt2(model_name=model_name)
file_name = "shakespeare.txt"
if not os.path.isfile(file_name):
url = "https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt"
data = requests.get(url)
with open(file_name, 'w') as f:
f.write(data.text)
下载完成后,当前目录下会有一个models文件夹和shakespeare.txt文件,models文件下为预训练模型,shakespeare.txt为训练测试文件。(可能下载的会比较慢,百度云盘链接:https://pan.baidu.com/s/1gIX46MAAIpZYq-OlzxZdkw 提取码:rkaw )。
第五步,训练模型
训练命令
CUDA_VISIBLE_DEVICES=gpu_name gpt_2_simple finetune --dataset=shakespeare.txt --model_name=117M --sample_every=10000
说明:
gpu_name处设置你的第几块gpu,gpu信息可用nvidia-smi查看。
finetune表示微调。
dataset处设置你的训练语料库,一般为txt文件。
model_name为预训练模型,分为117M和345M。
其余参数可使用gpt_2_simple --help命令查看。
训练好的模型存放在checkpoint文件夹中,默认为run1。
第六步,生成数据
生成命令
CUDA_VISIBLE_DEVICES=gpu_name gpt_2_simple generate --run_name=model_path --folder=save_folder --nsamples=64000 --batch_size=16
说明:
常用参数介绍:
--model
:选择微调或者生成,finetune表示微调(即训练,因为gpt2的模型是预训练模型),generate表示生成。--run_name
:在训练时表示保存模型的位置,在生成时表示加载模型的位置。--model_name
:在训练时指定的预训练模型,此处为117M
或345M。
--dataset
:训练时使用的数据集。--steps
:指定训练的步数,从-1到无穷,我一般用无穷,然后手动停止。--restore_from
:应该是选择一个模型继续训练吧。--sample_every
:指定多少步之后生成一个样例。--save_every
:隔多少步保存一个模型。--print_every
:隔多少步打印训练情况。--overwrite
:是否重新训练当前路径的模型。--nfiles
:生成文件的个数。--nsamples
:生成时每个文件中的段落数。--folder
:指定存放的文件夹。--length
:指定生成的长度,一般使用默认值。--temperature
:一般使用默认值。--top_k
:一般使用默认值。--top_p
:一般使用默认值。--batch_size
:一般不能太大,否则加载不起来;使用2080ti的GPU,选择16,32或64。--prefix
:指定生成的前缀,如果训练数据中有的话,这里需要添加。--truncate
: 一般使用默认值。--truncate
:指定生成的内容是否包含前缀。--sample_delim
:一般使用默认值,即20个=
号。--muti_gpu
:多GPU训练,目前实现还不完善。