GPT2-Chinese
GPT2-Chinese 是一个专为中文文本生成设计的开源项目,基于 Hugging Face Transformers 架构,提供了完整的 GPT-2 模型训练与推理代码。它主要解决了早期中文领域缺乏高质量、可自定义训练的生成式预训练模型资源的问题,让用户能够轻松训练属于自己的中文语言模型。
该项目功能灵活,支持以“字”、“词”或 BPE(字节对编码)为单位进行建模,并能适应大规模语料训练。无论是创作诗歌、对联、歌词、文言文,还是撰写新闻、小说及通用对话,GPT2-Chinese 都能胜任。项目不仅分享了多个由 UER-py 训练好的现成模型(涵盖散文、古诗词、对话等场景),还详细说明了如何从数据预处理到模型训练的全流程操作。
GPT2-Chinese 特别适合有一定 Python 和 PyTorch 基础的开发者、NLP 研究人员以及希望深入探索大语言模型原理的技术爱好者使用。虽然作者表示本项目初衷为学习练手且已停止主动更新,但其清晰的代码结构和丰富的预训练模型资源,使其至今仍是中文自然语言处理领域极具参考价值的入门与实践工具。
使用场景
某小型网文工作室的编辑团队正试图为旗下作者开发一款能辅助创作古风小说和诗词的写作助手,以缓解灵感枯竭问题。
没有 GPT2-Chinese 时
- 语料适配困难:通用英文模型无法理解中文语境,强行训练需从零构建复杂的分词与编码流程,技术门槛极高。
- 文体风格单一:缺乏针对古诗词、对联等特定文体的预训练模型,生成的文本往往辞不达意,毫无韵律美感。
- 数据预处理繁琐:面对海量小说章节或诗词库,手动清洗格式并转换为模型可接受的 JSON 列表耗时耗力,极易出错。
- 生成效果不可控:在没有专用起始符(如
[CLS])和针对性微调的情况下,模型难以根据上联生成工整下联,或续写符合逻辑的剧情。
使用 GPT2-Chinese 后
- 开箱即用的中文支持:直接利用基于 BERT Tokenizer 的中文预训练代码,无缝对接中文语料,大幅降低环境搭建与数据编码难度。
- 多文体专项模型:直接调用社区共享的古诗词、对联及文言文预训练模型,只需添加特定起始符即可生成格律严谨、意境优美的内容。
- 高效的数据流水线:通过
train.py脚本自动处理train.json格式的大规模语料,支持字级、词级及 BPE 多种模式,快速完成定制化训练。 - 灵活的生成控制:利用
generate.py灵活调整生成长度与样本数量,结合--fast_pattern加速推理,让作者能实时获得高质量的剧情续写或诗句灵感。
GPT2-Chinese 将高深的中文自然语言生成技术转化为低门槛的创作工具,让中小团队也能轻松拥有懂中文、通古韵的 AI 写作搭档。
运行环境要求
- 未说明
- 非必需,但训练大语料或大模型时推荐
- 支持 FP16 混合精度训练(需安装 NVIDIA Apex),但 README 指出 FP16 可能存在不收敛问题
- 未指定具体显存大小和 CUDA 版本
未说明(文中提及“如果你的内存非常大...可以不做拆分直接预处理”,暗示内存需求随语料大小变化)

快速开始
GPT2-Chinese
说明
- 中文版的GPT2训练代码,使用BERT分词器或BPE分词器。该代码基于HuggingFace团队极其优秀的Transformers库。可用于写诗、新闻、小说,或训练通用语言模型。支持字级别、词级别和BPE级别分词,同时支持大规模语料训练。
- 中文的GPT2训练代码,使用BERT的Tokenizer或Sentencepiece的BPE model(感谢kangzhonghua的贡献,实现BPE模式需要略微修改train.py的代码)。可以写诗,新闻,小说,或是训练通用语言模型。支持字为单位或是分词模式或是BPE模式(需要略微修改train.py的代码)。支持大语料训练。
更新 04.11.2024
- 非常感谢各位对本项目的关注。ChatGPT发布以来本项目也重新引起了一些注意。项目本身是我自学Pytorch的练手项目,我也无意做长期的维护更新。如果大家对大模型LLM感兴趣的话,可以邮件我(ned1991@gmail.com)加群沟通,或是在Issue中进行讨论。
更新 02.06.2021
本项目新增了通用中文GPT-2预训练模型、通用中文GPT-2预训练小模型、中文歌词GPT-2预训练模型和文言文GPT-2预训练模型。模型由UER-py项目训练得到,欢迎大家使用。 此外,模型上传到了Huggingface Model Hub中。更多模型的细节请参考gpt2-chinese-cluecorpussmall、gpt2-distil-chinese-cluecorpussmall、gpt2-chinese-lyric和gpt2-chinese-ancient。
在使用所有模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“最美的不是下雨天,是曾与你躲过雨的屋檐”,正确的格式为“[CLS]最美的不是下雨天,是曾与你躲过雨的屋檐”。
更新 11.03.2020
本项目新增了古诗词GPT-2预训练模型和对联GPT-2预训练模型。模型由UER-py项目训练得到,欢迎大家使用。 此外,模型上传到了Huggingface Model Hub中。更多模型的细节请参考gpt2-chinese-poem和gpt2-chinese-couplet。
在使用古诗词模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“梅山如积翠,”,正确的格式为“[CLS]梅山如积翠,”。
对联模型训练时使用的语料格式为“上联-下联”,在使用对联模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“丹枫江冷人初去-”,正确的格式为“[CLS]丹枫江冷人初去-”。
新闻 08.11.2020
- CDial-GPT(可用本代码载入)已发布。本项目包含一个经过严格清洗的大规模放开域中文对话数据集,本项目还包含在此数据集上训练的GPT对话预训练模型,以及生成样例,欢迎大家参观。
新闻 12.9.2019
- 新项目GPT2-chitchat已发布,部分基于本项目代码。包含训练GPT2对话模型的代码与与训练模型,以及生成样例,欢迎大家参观。
新闻 12.7.2019
- 新项目Decoders-Chinese-TF2.0同样支持GPT2的中文训练,在使用上更加简单,不易产生各种问题。目前还在测试阶段,欢迎大家提出意见。
新闻 11.9
- GPT2-ML(与本项目无任何直接关联)已发布,包含1.5B中文GPT2模型。大家如有兴趣或需要可将其转换为本项目支持的Pytorch格式进行进一步训练或生成测试。
更新 10.25
- 本项目第一个预训练模型已公布,为散文生成模型,具体可查看README模型分享部分。
项目状态
- 在本项目公布时,中文的GPT2资源几乎为零,而现在情况已有所不同。其次项目功能已经基本稳定,因此目前本项目暂已停止更新。我写下这些代码的初衷是练习Pytorch的使用,即使后期做了一些填坑工作,难免还是有很多不成熟的地方,也请谅解。
使用方法
- 在项目根目录建立data文件夹。将训练语料以train.json为名放入data目录中。train.json里是一个json列表,列表的每个元素都分别是一篇要训练的文章的文本内容(而不是文件链接)。
- 运行train.py文件,勾选 --raw ,会自动预处理数据。
- 预处理完成之后,会自动执行训练。
生成文本
python ./generate.py --length=50 --nsamples=4 --prefix=xxx --fast_pattern --save_samples --save_samples_path=/mnt/xx
- --fast_pattern (由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,需自己建立中文词表
语料
FP16与Gradient Accumulation支持
- 我在train.py文件中加入了fp16与gradient accumulation支持,如果你安装了apex并且知道fp16是什么的话,可以修改变量fp16=True来启用。但是目前fp16可能不收敛,原因不明。
联系作者
- Mail:ned1991@gmail.com
引用
@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 | 百度网盘【fpyu】 | GDrive |
| 诗词模型 | 使用180MB的约80万首古诗词训练所得。 | hhou435 | 百度网盘【7fev】 | GDrive |
| 对联模型 | 使用40MB的约70万条对联训练所得。 | hhou435 | 百度网盘【i5n0】 | GDrive |
| 通用中文模型 | 使用CLUECorpusSmall语料训练所得。 | hhou435 | 百度网盘【n3s8】 | GDrive |
| 通用中文小模型 | 使用CLUECorpusSmall语料训练所得。 | hhou435 | 百度网盘【rpjk】 | GDrive |
| 中文歌词模型 | 使用140MB的约15万首中文歌词训练所得。 | hhou435 | 百度网盘【0qnn】 | GDrive |
| 文言文模型 | 使用1.8GB的约300万篇文言文训练所得。 | hhou435 | 百度网盘【ek2z】 | GDrive |
此处为热情大方的git友训练所得的模型文件,公开给所有朋友使用,同时也欢迎各位伙伴将自己训练完毕的模型公开于此处。
Demo
- 由用户JamesHujy根据本仓库改版代码训练得到的模型作为律诗与绝句后台,新版九歌诗歌生成器已经上线。
- 由leemengtaiwan贡献,提供文章直觀介紹 GPT-2 以及如何視覺化自注意力機制。另提供 Colab 筆記本與模型供任何使用者一鍵生成新樣例。
生成样例
-以下为文学散文的生成样例,由hughqiu贡献,模型已经分享于模型分享列表。语料130MB,Batch size 16,10层深度下训练10轮所得。

- 下为斗破苍穹的生成样例,使用约50M参数的GPT2以32Batch Size在16MB斗破苍穹小说内容上训练得到。此处[SEP]表示换行。

- 下为古诗词的生成样例,由用户JamesHujy运算并贡献。

- 下为古诗限定了生成体裁后的生成样例,由用户JamesHujy运算并贡献。

- 下为生成剧本的样例文本,由用户chiangandy运算并贡献
[starttext]爱情游戏剧情讲述了钢琴父女明致怀萌的爱情、个有着努力的热情以及现实为人生的价值观众,获得一系列爱情的故事。80后录股媒体受到网友分享,是2014年主创陈拉昀出品牌总监于蓝氏集团化验师创业团门的哥哥大国度上海淮河畔,集入第一线公司青年度虽然没有放到的事业,但是蓝正是却不到位主人拒绝了解,而在蓝越的帮助理念出现,也因此开启明朗的误会而经营变成爱河。在一次偶然的编剧集电视剧之夏天上一改变了自命运环球顶樑,三人在创车祸中不知被记忆差网识分到创作,并被问流言败,以及行业服务所有的低调教同才力,陈昭和唐诗诗妍展开了一段截然不同的“2014年间段感情”,两人性格互相治癒的商业奋斗故事,尽管是共90后北京华侨大学录的一个宿舍小旅程和唐如、生等优秀青年,的人生活如何与愿违3个国偶像,并且共同创作何以此他们互相有观众的成功和关心吗?[endtext]
[starttext]学习爱情主要讲述了两对方小曼,经过啼笑皆非的考验,终于选择了三个孩子,携手共同创业来四个孩子,在大城市里创业的成功商。两家内事业的加入了北京城市,经过了一次元城市融风雨故、差异后得到异的他们,最终收获了梦想的真正属于自己的爱情。赞助理想、电视剧、剧等主创业时代人物特点在北京举行开机仪式,该剧以当下海南三个新人青年轻人面人海南梅竹马的电视角,讲述了几个在北京、喜剧代人生活中增强非浪漫的年轻人,以独特的双时代年轻人从来到北京城市化中国大城市走出发展以海南方的变迁在语种城市闯关于人生态的同时,以及他们渐渐的生活方式为自己方向上演了那么简单俗,是当代际拍摄的就如何在这个城市里都市里?那么平静的城市就是城市的风格特张嘉和支持工作打造,而这是一点就要打造出机场话剧组会。化身处处棋逢貌各种文化的人都非常独特的煽情,交织了相,滑稽等来自外衣的东北漂亮、内地,者和两位女孩子敢称是哑女孩子。交织里的人齐飞一开泰块玩笑,令人印象太趋的气质,让人眼看这个性格非常喜剧,知道的是一个“东北漂”人的外国小养家,让她耳熟练读剧的外形象显老大。之后齐飞、表示爱朗的齐飞、范儿、楚月子、白天杰。两代人的生活里友情似乎没有结合、精彩表态的开朗和丽丽丽。[endtext]
- 下為金庸武俠小說的生成樣例,由leemengtaiwan贡献。模型大小約 82M,語料 50 MB,Batch size 16。提供文章直觀介紹 GPT-2 以及如何視覺化自注意力機制。另提供 Colab 筆記本與模型供任何使用者一鍵生成新樣例。

常见问题
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。