GPT2-Chinese 快速上手指南:中文 GPT-2 文本生成训练工具
GPT2-Chinese 快速上手指南:中文 GPT-2 文本生成训练工具
【免费下载链接】GPT2-ChineseChinese version of GPT2 training code, using BERT tokenizer.项目地址: https://gitcode.com/gh_mirrors/gpt/GPT2-Chinese
GPT2-Chinese 要做的事,是让你用自己的中文语料训练出 GPT-2 架构的文本生成模型。它建立在 HuggingFace Transformers 之上,支持字级、词级、BPE 三种切分粒度,既适合想第一次动手训模型的 NLP 新手,也适合需要轻量中文语言模型基线的工程师。
30 秒定位:中文 GPT-2 训练为什么需要专门工具
OpenAI 原版 GPT-2 的分词方案为英文调优,中文文本直接喂进去效果很差。GPT2-Chinese 解决的核心问题就是"中文怎么在 GPT-2 上训"。
可以把它理解为买来了现成的房屋框架(GPT-2 结构),换掉中文不通的管道(换成 BERT 或 BPE 分词器),再搬进你自己的家具(训练语料)就能住。
- 支持字级、词级、BPE 三种粒度,用一个开关切换
- 内置大语料预处理流程:自动切块、tokenize,再进入训练
- 附带困惑度(ppl)评估和批量生成脚本
最短上手路径:一个 train.json 加两条命令
数据格式极简:把语料放进data/train.json,JSON 数组里每个元素就是一篇文章的正文(注意不是文件路径),仓库里的 train.json 就是现成模板。
训练入口是train.py,加上--raw参数会先做预处理再自动开始训练,官方样例scripts/train.sh给了一组完整参数参考:
git clone https://link.gitcode.com/i/3fcf5d3cc3959db9702275f8db531e77 pip install -r requirements.txt python train.py --raw --model_config config/model_config_small.json \ --raw_data_path data/train.json训练完跑generate.py,指定模型路径和开头前缀即可出文:
python generate.py --length 50 --nsamples 4 --prefix "[CLS]春" --fast_pattern提醒一下:requirements 锁定的是 transformers==2.1.1 这类老版本,装依赖报版本错误时优先检查这一点。🛠️
核心能力拆解:train.py、generate.py 与三种分词器如何配合
- train.py / train_single.py:主训练循环。
build_files把语料切成若干分片,每篇前插 [MASK] 表示开头、篇间插 [CLS] 分隔;train_single.py则专门用来训一整本超长文本(比如一本小说)。 - generate.py / generate_texts.py:生成端。temperature、top-k、top-p、重复惩罚都可调;
generate_texts.py接收一组前缀列表,逐个生成并落盘,适合批量出素材。 - tokenizations/ 目录:默认 BERT 字级分词器、分词版 BERT 分词器(需先用
make_vocab.py建语料专属词表)、BPE 分词器(配合仓库自带的encoder.json与vocab.bpe)。 - eval.py:算生成模型的 ppl 分,ppl 越低,输出通常越流畅。
技术底座解析:为什么选 GPT-2 + BERT 分词器做中文
底座用 Transformers 意味着不用手写 transformer,改一下 config JSON 就能换模型规格——model_config_small.json对应 10 层、768 维、约 50M 参数的小模型,单机就能跑。
用 BERT 分词器处理中文的妙处在于:每个汉字天然对应词表中的一个条目,不需要先分词、也不存在未登录词。对中文来说,"字级"基本就等于"词级",这是 GPT-2 能直接用于中文的关键。BPE 选项则适合长文本的子词压缩场景。
训练效率上支持 fp16 半精度与梯度累积,小显存也能模拟更大 batch;作者注明 fp16 可能不收敛,遇到训练发飘先关掉试试。
落地场景:从律诗绝句到武侠小说
- 如果你要做古诗词自动创作,可以用约 80 万首古诗词语料训练,并在输入里限定体裁(如"律诗首句"),生成整首合律的 poem_1.png 那类样例就是这么来的
- 如果你要写自己的小说,可以用一整本书的文本做训练(这正是
train_single.py的用途),再让它续写同风格章节 - 如果你想玩对联或歌词,可以把语料换成"上联-下联"格式或歌曲歌词,复用同一套训练流程
- 如果你需要一个中文通用生成基线,可以下载仓库分享的通用模型或通用小模型直接用
使用共享预训练模型:别忘了 [CLS] 起始符
仓库整理了一份社区训练模型清单:散文、古诗词、对联、中文歌词、文言文,以及通用中文模型和通用小模型,下载后改一下generate.py的模型路径即可生成。
有一个坑要记牢:这些预训练模型生成时,输入前必须加 [CLS] 起始符。比如想输入"梅山如积翠,",正确格式是"[CLS]梅山如积翠,",少了它生成风格会明显跑偏。
项目已停止更新但功能稳定,遇到报错最快的解法是单独建环境、严格按 requirements 锁版本。📌
GPT2-Chinese
欢迎上手试试,也欢迎把自己训好的模型补充进仓库的模型分享列表。
【免费下载链接】GPT2-ChineseChinese version of GPT2 training code, using BERT tokenizer.项目地址: https://gitcode.com/gh_mirrors/gpt/GPT2-Chinese
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
