# 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 02.06.2021
- 本项目新增了[通用中文GPT-2预训练模型](https://github.com/Morizeyao/GPT2-Chinese#%E6%A8%A1%E5%9E%8B%E5%88%86%E4%BA%AB)、[通用中文GPT-2预训练小模型](https://github.com/Morizeyao/GPT2-Chinese#%E6%A8%A1%E5%9E%8B%E5%88%86%E4%BA%AB)、[中文歌词GPT-2预训练模型](https://github.com/Morizeyao/GPT2-Chinese#%E6%A8%A1%E5%9E%8B%E5%88%86%E4%BA%AB)和[文言文GPT-2预训练模型](https://github.com/Morizeyao/GPT2-Chinese#%E6%A8%A1%E5%9E%8B%E5%88%86%E4%BA%AB)。模型由UER-py项目训练得到,欢迎大家使用。
此外,模型上传到了Huggingface Model Hub中。更多模型的细节请参考[gpt2-chinese-cluecorpussmall](https://huggingface.co/uer/gpt2-chinese-cluecorpussmall)、[gpt2-distil-chinese-cluecorpussmall](https://huggingface.co/uer/gpt2-distil-chinese-cluecorpussmall)、[gpt2-chinese-lyric](https://huggingface.co/uer/gpt2-chinese-lyric)和[gpt2-chinese-ancient](https://huggingface.co/uer/gpt2-chinese-ancient)。
在使用所有模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“最美的不是下雨天,是曾与你躲过雨的屋檐”,正确的格式为“[CLS]最美的不是下雨天,是曾与你躲过雨的屋檐”。
## UPDATE 11.03.2020
- 本项目新增了[古诗词GPT-2预训练模型](https://github.com/Morizeyao/GPT2-Chinese#%E6%A8%A1%E5%9E%8B%E5%88%86%E4%BA%AB)和[对联GPT-2预训练模型](https://github.com/Morizeyao/GPT2-Chinese#%E6%A8%A1%E5%9E%8B%E5%88%86%E4%BA%AB)。模型由UER-py项目训练得到,欢迎大家使用。
此外,模型上传到了Huggingface Model Hub中。更多模型的细节请参考[gpt2-chinese-poem](https://huggingface.co/uer/gpt2-chinese-poem)和[gpt2-chinese-couplet](https://huggingface.co/uer/gpt2-chinese-couplet)。
在使用古诗词模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“梅山如积翠,”,正确的格式为“[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}},
}
```
## 模�
没有合适的资源?快使用搜索试试~ 我知道了~
基于PyTorch GPT-2的针对各种数据并行pretrain的研究代码..zip
共147个文件
py:45个
txt:29个
json:20个
需积分: 5 0 下载量 180 浏览量
2024-05-11
20:50:13
上传
评论
收藏 2.41MB ZIP 举报
温馨提示
GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。
资源推荐
资源详情
资源评论
收起资源包目录
基于PyTorch GPT-2的针对各种数据并行pretrain的研究代码..zip (147个子文件)
vocab.bpe 21B
vocab.bpe 21B
vocab.bpe 21B
vocab.bpe 21B
vocab.bpe 21B
.gitignore 154B
.gitignore 154B
.gitignore 154B
.gitignore 154B
.gitignore 154B
model_config_small.json 175B
model_config_small.json 175B
model_config_small.json 175B
model_config_small.json 175B
model_config_small.json 175B
model_config.json 174B
model_config.json 174B
model_config.json 174B
model_config.json 174B
model_config.json 174B
model_config_test.json 169B
model_config_test.json 169B
model_config_test.json 169B
model_config_test.json 169B
model_config_test.json 169B
encoder.json 26B
encoder.json 26B
encoder.json 26B
encoder.json 26B
encoder.json 26B
LICENSE 34KB
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
README.md 15KB
README.md 15KB
README.md 15KB
README.md 15KB
README.md 15KB
README.md 12KB
README_EN.md 8KB
README_EN.md 8KB
README_EN.md 8KB
README_EN.md 8KB
README_EN.md 8KB
tokenization_bert_word_level.py 20KB
tokenization_bert_word_level.py 20KB
tokenization_bert_word_level.py 20KB
tokenization_bert_word_level.py 20KB
tokenization_bert_word_level.py 20KB
tokenization_bert.py 19KB
tokenization_bert.py 19KB
tokenization_bert.py 19KB
tokenization_bert.py 19KB
tokenization_bert.py 19KB
train.py 14KB
train.py 14KB
train.py 14KB
train.py 14KB
train.py 12KB
train_single.py 10KB
train_single.py 10KB
train_single.py 10KB
train_single.py 10KB
train_single.py 10KB
generate.py 10KB
generate.py 10KB
generate.py 10KB
generate.py 10KB
generate.py 10KB
generate_texts.py 9KB
generate_texts.py 9KB
generate_texts.py 9KB
generate_texts.py 9KB
generate_texts.py 9KB
eval.py 8KB
eval.py 8KB
eval.py 8KB
eval.py 8KB
eval.py 8KB
bpe_tokenizer.py 4KB
bpe_tokenizer.py 4KB
bpe_tokenizer.py 4KB
bpe_tokenizer.py 4KB
bpe_tokenizer.py 4KB
make_vocab.py 1KB
make_vocab.py 1KB
make_vocab.py 1KB
make_vocab.py 1KB
make_vocab.py 1KB
seg 30B
seg 30B
seg 30B
seg 30B
seg 30B
train.sh 482B
train.sh 463B
train.sh 422B
共 147 条
- 1
- 2
资源评论
生瓜蛋子
- 粉丝: 3823
- 资源: 5216
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功