前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Github】GPT2-Chinese:中文的GPT2训练代码

【Github】GPT2-Chinese:中文的GPT2训练代码

作者头像
代码医生工作室
发布2019-09-02 16:31:03
4K0
发布2019-09-02 16:31:03
举报
文章被收录于专栏:相约机器人相约机器人

推荐一个Github项目:Morizeyao/GPT2-Chinese

Chinese version of GPT2 training code, using BERT tokenizer.

作者是AINLP交流群里的杜则尧同学,提供了一份中文的GPT2训练代码,使用BERT的Tokenizer。可以写诗,新闻,小说,或是训练通用语言模型。支持字为单位或是分词模式。支持大语料训练。推荐Star,项目链接,点击阅读原文可以直达:

https://github.com/Morizeyao/GPT2-Chinese

以下来在该项目主页描述。


GPT2-Chinese

Description

  • Chinese version of GPT2 training code, using BERT tokenizer. It is based on the extremely awesome repository from HuggingFace team Pytorch-Transformers. Can write poems, news, novels, or train general language models. Support char level and word level. Support large training corpus.
  • 中文的GPT2训练代码,使用BERT的Tokenizer。可以写诗,新闻,小说,或是训练通用语言模型。支持字为单位或是分词模式。支持大语料训练。

项目状态

  • 目前项目主要架构已经稳定。如发现任何bug或是有功能意见与改进欢迎提交Issue,PR或是联系作者。

使用方法

  • 在项目根目录建立data文件夹。将训练语料以train.json为名放入data目录中。train.json里是一个json列表,列表的每个元素都分别是一篇要训练的文章。
  • 运行train.py文件,勾选 --raw ,会自动预处理数据。
  • 预处理完成之后,直接运行train.py文件,即可开始训练。

文件结构

  • 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 是小词表, no_word_piece的是没有word piece的词表。
  • tokenizations 文件夹内是可以选用的三种tokenizer,包括默认的Bert Tokenizer,分词版Bert Tokenizer以及没有word piece的Bert Tokenizer。

注意

  • 本项目使用Bert的tokenizer处理中文字符。
  • 如果使用分词版的tokenizer,不需要自己事先分词,tokenizer会帮你分。
  • 如果使用分词版的tokenizer,最好先使用cache文件夹内的make_vocab.py文件建立针对你的语料的词表。
  • 模型需自行运算。各位如果完成了预训练的话欢迎进行交流。
  • 如果你的内存非常大或者语料较小的话,可以改掉train.py内build files内的对应代码,不做拆分直接预处理语料。

语料

  • 可以从这里与这里下载。
  • 斗破苍穹语料可以从这里下载。

FP16与Gradient Accumulation支持

  • 我在train.py文件中加入了fp16与gradient accumulation支持,如果你安装了apex并且知道fp16是什么的话,可以修改变量fp16=True来启用。但是目前fp16不收敛,原因不明。

联系作者

  • QQ:330501241
  • Mail:ned1991@gmail.com

Citing

代码语言:javascript
复制
@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}},
}

生成样例可以在Github页面查看

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GPT2-Chinese
    • Description
      • 项目状态
        • 使用方法
          • 文件结构
            • 注意
              • 语料
                • FP16与Gradient Accumulation支持
                  • 联系作者
                    • Citing
                    相关产品与服务
                    NLP 服务
                    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档