# GPT2-Chinese
## Description
- Chinese version of GPT2 training code, using BERT tokenizer or BPE tokenizer. It is based on the extremely awesome repository from HuggingFace team [Transformers](https://github.com/huggingface/transformers). Can write poems, news, novels, or train general language models. Support char level, word level and BPE level. Support large training corpus.
- 中文的GPT2训练代码,使用BERT的Tokenizer或Sentencepiece的BPE model(感谢[kangzhonghua](https://github.com/kangzhonghua)的贡献,实现BPE模式需要略微修改train.py的代码)。可以写诗,新闻,小说,或是训练通用语言模型。支持字为单位或是分词模式或是BPE模式(需要略微修改train.py的代码)。支持大语料训练。
## UPDATE 11.03.2020
- 本项目新增了古诗词GPT-2预训练模型和对联GPT-2预训练模型。模型由[UER-py](https://github.com/dbiir/UER-py)项目训练得到。欢迎大家使用。
在使用古诗词模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“梅山如积翠,”,正确的格式为“[CLS]梅山如积翠,”。
对联模型训练时使用的语料格式为“上联-下联”,在使用对联模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“丹枫江冷人初去-”,正确的格式为“[CLS]丹枫江冷人初去-”。
## NEWS 08.11.2020
- [CDial-GPT](https://github.com/thu-coai/CDial-GPT)(可用本代码载入)已发布。本项目包含一个经过严格清洗的大规模放开域中文对话数据集,本项目还包含在此数据集上训练的GPT对话预训练模型,以及生成样例,欢迎大家参观。
## NEWS 12.9.2019
- 新项目[GPT2-chitchat](https://github.com/yangjianxin1/GPT2-chitchat)已发布,部分基于本项目代码。包含训练GPT2对话模型的代码与与训练模型,以及生成样例,欢迎大家参观。
## NEWS 12.7.2019
- 新项目[Decoders-Chinese-TF2.0](https://github.com/Morizeyao/Decoders-Chinese-TF2.0)同样支持GPT2的中文训练,在使用上更加简单,不易产生各种问题。目前还在测试阶段,欢迎大家提出意见。
## NEWS 11.9
- [GPT2-ML](https://github.com/imcaspar/gpt2-ml)(与本项目无任何直接关联)已发布,包含1.5B中文GPT2模型。大家如有兴趣或需要可将其转换为本项目支持的Pytorch格式进行进一步训练或生成测试。
## UPDATE 10.25
- 本项目第一个预训练模型已公布,为散文生成模型,具体可查看README模型分享部分。
## 项目状态
- 在本项目公布时,中文的GPT2资源几乎为零,而现在情况已有所不同。其次项目功能已经基本稳定,因此目前本项目暂已停止更新。我写下这些代码的初衷是练习Pytorch的使用,即使后期做了一些填坑工作,难免还是有很多不成熟的地方,也请谅解。
## 使用方法
- 在项目根目录建立data文件夹。将训练语料以train.json为名放入data目录中。**train.json里是一个json列表,列表的每个元素都分别是一篇要训练的文章的文本内容(而不是文件链接)**。
- 运行train.py文件,勾选 --raw ,会自动预处理数据。
- 预处理完成之后,会自动执行训练。
### 生成文本
``` bash
python ./generate.py --length=50 --nsamples=4 --prefix=xxx --fast_pattern --save_samples --save_samples_path=/mnt/xx
```
- **--fast_pattern** (由[LeeCP8](https://github.com/LeeCP8)贡献):如果生成的length参数比较小,速度基本无差别,我个人测试length=250时,快了2秒,所以如果不添加--fast_pattern,那么默认不采用fast_pattern方式。
- **--save_samples**:默认将输出样本直接打印到控制台,传递此参数,将保存在根目录下的**samples.txt**。
- **--save_samples_path**:可自行指定保存的目录,默认可递归创建多级目录,不可以传递文件名称,文件名称默认为**samples.txt**。
## 文件结构
- generate.py 与 train.py 分别是生成与训练的脚本。
- train_single.py 是 train.py的延伸,可以用于一个很大的单独元素列表(如训练一本斗破苍穹书)。
- eval.py 用于评估生成模型的ppl分值。
- generate_texts.py 是 generate.py 的延伸,可以以一个列表的起始关键词分别生成若干个句子并输出到文件中。
- train.json 是训练样本的格式范例,可供参考。
- cache 文件夹内包含若干BERT词表,make_vocab.py 是一个协助在一个train.json语料文件上建立词表的脚本。 vocab.txt 是原始BERT词表, vocab_all.txt 额外添加了古文词, vocab_small.txt 是小词表。
- tokenizations 文件夹内是可以选用的三种tokenizer,包括默认的Bert Tokenizer,分词版Bert Tokenizer以及BPE Tokenizer。
- scripts 内包含了样例训练与生成脚本
## 注意
- 本项目使用Bert的tokenizer处理中文字符。
- 如果不使用分词版的tokenizer,不需要自己事先分词,tokenizer会帮你分。
- 如果使用分词版的tokenizer,最好先使用cache文件夹内的make_vocab.py文件建立针对你的语料的词表。
- 模型需自行运算。各位如果完成了预训练的话欢迎进行交流。
- 如果你的内存非常大或者语料较小的话,可以改掉train.py内build files内的对应代码,不做拆分直接预处理语料。
- 若使用BPE Tokenizer,需自己建立中文词表
## 语料
- 可以从[这里](https://github.com/brightmart/nlp_chinese_corpus)与[这里](http://thuctc.thunlp.org/#获取链接)下载。
- 斗破苍穹语料可以从[这里](https://github.com/GaoPeng97/transformer-xl-chinese/tree/master/data/doupo)下载。
## FP16与Gradient Accumulation支持
- 我在train.py文件中加入了fp16与gradient accumulation支持,如果你安装了apex并且知道fp16是什么的话,可以修改变量fp16=True来启用。但是目前fp16可能不收敛,原因不明。
## 联系作者
- Mail:ned1991@gmail.com
## Citing
```
@misc{GPT2-Chinese,
author = {Zeyao Du},
title = {GPT2-Chinese: Tools for training GPT2 model in Chinese language},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/Morizeyao/GPT2-Chinese}},
}
```
## 模型分享
| 模型名称 | 模型介绍| 分享者| 链接地址1 | 链接地址2 |
| ------------ | :----------- | :----------- | :----------- | ------------ |
| 散文模型 | 使用130MB的名家散文、情感散文和散文诗歌训练所得 。 | [hughqiu](https://github.com/hughqiu "hughqiu") | [百度网盘【fpyu】](https://pan.baidu.com/s/1nbrW5iw34GRhoTin8uU2tQ) | [GDrive](https://drive.google.com/drive/folders/1rJC4niJKMVwixUQkuL9k5teLRnEYTmUf?usp=sharing "GDrive") |
| 诗词模型 | 使用180MB的约80万首古诗词训练所得。 | [hhou435](https://github.com/hhou435) | [百度网盘【7fev】](https://pan.baidu.com/s/1Hy0OQ5xZcTLer9MQZW8o3g) | [GDrive](https://drive.google.com/drive/folders/1Z6nF1nrgTkrZcRLHedQHXb4_M9I7yQPN?usp=sharing) |
| 对联模型 | 使用40MB的约70万条对联训练所的。 | [hhou435](https://github.com/hhou435) | [百度网盘【i5n0】](https://pan.baidu.com/s/1j9yVQwjlXZq58wOyXK4lcg) | [GDrive](https://drive.google.com/drive/folders/1ZnsvS7oHRVueNKj_SeEhiQt86aze3ojj?usp=sharing) |
此处为热情大方的git友训练所得的模型文件,公开给所有朋友使用,同时也欢迎各位伙伴将自己训练完毕的模型公开于此处。
## Demo
- 由用户[JamesHujy](https://github.com/JamesHujy)根据本仓库改版代码训练得到的模型作为律诗与绝句后台,新版[九歌诗歌生成器](https://jiuge.thunlp.cn/lvshi.html)已经上线。
- 由[leemengtaiwan](https://github.com/leemengtaiwan)贡献,提供[文章直觀介紹 GPT-2 以及如何視覺化自注意力機制](https://leemeng.tw/gpt2-language-model-
没有合适的资源?快使用搜索试试~ 我知道了~
GPT2-Chinese 优化显示和权重保存
共155个文件
txt:109个
0:20个
py:9个
5星 · 超过95%的资源 需积分: 49 24 下载量 91 浏览量
2021-01-19
09:43:20
上传
评论 1
收藏 6.33MB ZIP 举报
温馨提示
GPT2-Chinese 附带科幻书籍语料 无权重
资源详情
资源评论
资源推荐
收起资源包目录
GPT2-Chinese 优化显示和权重保存 (155个子文件)
events.out.tfevents.1610698364.nvidia-AIab.5444.0 355KB
events.out.tfevents.1610696070.nvidia-AIab.10020.0 349KB
events.out.tfevents.1610699762.nvidia-AIab.9942.0 96KB
events.out.tfevents.1610699479.nvidia-AIab.2334.0 82KB
events.out.tfevents.1610704715.nvidia-AIab.3374.0 49KB
events.out.tfevents.1610699450.nvidia-AIab.1279.0 5KB
events.out.tfevents.1610699739.nvidia-AIab.9298.0 80B
events.out.tfevents.1610695738.nvidia-AIab.3758.0 40B
events.out.tfevents.1610700455.nvidia-AIab.29797.0 40B
events.out.tfevents.1610700336.nvidia-AIab.26638.0 40B
events.out.tfevents.1610695730.nvidia-AIab.3710.0 40B
events.out.tfevents.1610690598.nvidia-AIab.6198.0 40B
events.out.tfevents.1610695901.nvidia-AIab.5547.0 40B
events.out.tfevents.1610690692.nvidia-AIab.6301.0 40B
events.out.tfevents.1610695816.nvidia-AIab.3890.0 40B
events.out.tfevents.1610695700.nvidia-AIab.3649.0 40B
events.out.tfevents.1610695863.nvidia-AIab.4543.0 40B
events.out.tfevents.1610696043.nvidia-AIab.9271.0 40B
events.out.tfevents.1610695752.nvidia-AIab.3806.0 40B
events.out.tfevents.1610700376.nvidia-AIab.27712.0 40B
vocab.bpe 21B
.gitignore 154B
model_config.json 175B
model_config_small.json 175B
model_config_test.json 169B
train.json 84B
encoder.json 26B
LICENSE 1KB
README.md 12KB
README_EN.md 8KB
tokenization_bert_word_level.py 20KB
tokenization_bert.py 19KB
generate.py 12KB
train.py 12KB
train_single.py 11KB
generate_texts.py 9KB
eval.py 8KB
bpe_tokenizer.py 4KB
make_vocab.py 1KB
tokenization_bert.cpython-36.pyc 15KB
bpe_tokenizer.cpython-36.pyc 5KB
seg 30B
generated.sh 388B
train.sh 315B
generate.sh 191B
make_vocab.sh 114B
train.txt 6.26MB
vocab_seg.txt 374KB
vocab_guwen.txt 127KB
vocab.txt 107KB
tokenized_train_35.txt 104KB
tokenized_train_51.txt 103KB
tokenized_train_33.txt 103KB
tokenized_train_36.txt 103KB
tokenized_train_90.txt 103KB
tokenized_train_34.txt 103KB
tokenized_train_21.txt 103KB
tokenized_train_23.txt 103KB
tokenized_train_38.txt 103KB
tokenized_train_88.txt 103KB
tokenized_train_50.txt 103KB
tokenized_train_37.txt 103KB
tokenized_train_14.txt 103KB
tokenized_train_28.txt 103KB
tokenized_train_95.txt 103KB
tokenized_train_87.txt 103KB
tokenized_train_94.txt 103KB
tokenized_train_11.txt 102KB
tokenized_train_39.txt 102KB
tokenized_train_86.txt 102KB
tokenized_train_83.txt 102KB
tokenized_train_55.txt 102KB
tokenized_train_9.txt 102KB
tokenized_train_80.txt 102KB
tokenized_train_32.txt 102KB
tokenized_train_30.txt 102KB
tokenized_train_40.txt 102KB
tokenized_train_65.txt 102KB
tokenized_train_52.txt 102KB
tokenized_train_43.txt 102KB
tokenized_train_84.txt 102KB
tokenized_train_97.txt 102KB
tokenized_train_46.txt 102KB
tokenized_train_26.txt 102KB
tokenized_train_10.txt 102KB
tokenized_train_24.txt 102KB
tokenized_train_64.txt 102KB
tokenized_train_16.txt 102KB
tokenized_train_29.txt 102KB
tokenized_train_8.txt 102KB
tokenized_train_19.txt 102KB
tokenized_train_89.txt 102KB
tokenized_train_67.txt 101KB
tokenized_train_49.txt 101KB
tokenized_train_75.txt 101KB
tokenized_train_96.txt 101KB
tokenized_train_79.txt 101KB
tokenized_train_47.txt 101KB
tokenized_train_91.txt 101KB
tokenized_train_69.txt 101KB
共 155 条
- 1
- 2
訢詡
- 粉丝: 130
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1