
01
—
GPT2模型的预训练语料库为超过40G的近8000万的网页文本数据,GPT2的预训练语料库相较于GPT而言增大了将近10倍。
https://openai.com/blog/better-language-models/
-
http://jalammar.github.io/illustrated-gpt2/ -
https://github.com/openai/gpt-2
02
—
本地启动流程
conda(64位)下载地址:https://docs.conda.io/en/latest/miniconda.html
-
windows版本(64位):https://repo.anaconda.com/miniconda/Miniconda3-py38_23.1.0-1-Windows-x86_64.exe
protoc(3.19.0版本):https://github.com/protocolbuffers/protobuf/releases?page=4
windows版本(64位):https://github.com/protocolbuffers/protobuf/releases/download/v3.19.0/protoc-3.19.0-win64.zip
2、版本调整
-
python 3.8 -
tensorflow 2.6.0
3、代码调整
改动点1(版本兼容)
修改前:import tensorflow as tf修改后:import tensorflow._api.v2.compat.v1 as tftf.disable_v2_behavior()修改前:from tensorflow.contrib.training import HParams修改后:from easydict import EasyDict as edict
改动点2(版本调用方式)
src目录下所有文件
修改前:tf.修改后:tf.compat.v1.
改动点3(参数设置)
src目录下model.py文件
修改前:def default_hparams():return HParams(n_vocab=0,n_ctx=1024,n_embd=768,n_head=12,n_layer=12,)修改后:def default_hparams():return edict(n_vocab=50257,n_ctx=1024,n_embd=768,n_head=12,n_layer=12,)删除或进行注释:本段代码主要是通过读取json文件进行赋值,可直接将json文件的数值复制到default_hparamswith open(os.path.join(models_dir, model_name, 'hparams.json')) as f:hparams.override_from_dict(json.load(f))
https://www.tensorflow.org/guide/migrate/migrate_tf2?hl=zh-cn
https://www.tensorflow.org/guide/migrate/tf1_vs_tf2?hl=zh-cn
python环境设置
使用coda设置python版本3.8
安装python相关包
pip3 install tensorflow==2.6.0pip3 install fire>=0.1.3pip3 install regex==2022.3.15pip3 install requests==2.21.0pip3 install tqdm==4.31.1pip3 install numpy==1.19.5
下载数据
python download_model.py 124Mpython download_model.py 355Mpython download_model.py 774Mpython download_model.py 1558M
-
更改generate_unconditional_samples.py或者interactive_conditional_samples.py文件中interact_model参数,如下图所示:

-
更改model.py中的default_hparams参数配置,参照下载的数据集中的hparams.json文件

编码格式设置
通过下图的命令查看编码格式,如果不是utf-8则需要更改。
设置步骤可参照:https://blog.csdn.net/jian3x/article/details/89442748

5、Running
python src/generate_unconditional_samples.py | tee /tmp/samples或者python src/interactive_conditional_samples.py --top_k 40
启动结果如下图:

https://github.com/openai/gpt-2/blob/master/DEVELOPERS.md
6、本地测试
测试1:who are you?

测试2:1+1=

测试3:请用中文写个小故事

如上测试,本地部署GPT2的回复不尽如人意,主要原因有以下几个方面:
1.训练数据质量问题。1558M语料库其中的质量有可能不高,从而导致模型学习到的信息不充分或者存在噪声等问题,为模型的性能带来负面影响。
03
—
作者 | 孙景亮 资深服务端开发工程师

