名称: yuanzhoulvpi2017/zero_nlp
地址: https://github.com/yuanzhoulvpi2017/zero_nlp
fork: 73 star: 413 开发语言: Jupyter Notebook
简介: 中文 nlp 应用(数据、模型、训练、理)
最近网上很多的 nlp 项目都是基于英文的,无论是 chatGpt 还是 stable diffusion 图片生成,对中文的支持都不太友好,zero_nlp 注重中文 nlp 的建设,开源了多个中文 nlp 应用,包括中文文本分类,图片生成等,并且提供了训练数据,保证了从 0 训练出相应的模型。
特点
- 注重中文的 nlp 建设
- 基于 transformers 库
- 每一个项目,都具有数据、模型训练、部署等模块
- 提供公开的数据
- 开箱即用,保证代码都是可跑通,替换数据即可训练出自己的模型
- transformers 库的源码级介绍
- 基于 pytorch,不用 tensorflow
- 模型方面,只介绍大模型,不再介绍传统文本模型
- 每一个项目,都会给出相关的坑和注意事项
包含的项目
流程图解
数据流程通过图解的形式表达出来是最清楚的,因此作者尽可能地把每一个任务都图解出来。
文本分类数据图解
中文 clip
图像生成中文文本
vit 源码
接下来我们进入其中一个项目看下其中的具体的内容,以chinese_gpt2为例。
项目介绍
- 如何使用中文语料,训练一个 gpt2
- 可以使用你自己的数据训练,用来:写新闻、写古诗、写对联等
- 这里作者也训练了一个中文 gpt2 模型,使用了612 万个样本,每个样本有 512 个 tokens,总共相当于大约31 亿个 tokens
安装项目依赖
pip install -r requirements.txt
由于requirements.txt中没有添加pytorch,所以还需要单独安装。
数据
数据来源
- 获得数据:数据链接,关注公众号【统计学人】,然后回复【gpt2】即可获得。
- 获得作者训练好的模型(使用了 15GB 的数据(31 亿个 tokens),在一张 3090 上,训练了 60 多小时)
数据格式
-
数据其实就是一系列文件夹?,然后每一个文件夹里面有大量的文件,每一个文件都是.csv格式的文件。其中有一列数据是content每一行的content就代表一句话,截图如下
代码
⚙️训练代码
- 现在训练一个 gpt2 代码,其实很简单的。抛开处理数据问题,技术上就三点:tokenizer、gpt2_model、Trainer
- tokenizer使用的是bert-base-chinese ,然后再添加一下bos_token、eos_token、pad_token。
- gpt2_model使用的是gpt2,这里的 gpt2 是从 0 开始训练的。而不是使用别人的预训练的gpt2模型。
- Trainer训练器使用的就是transformers的Trainer模块。(支撑多卡并行,tensorboard 等,都写好的,直接调用就行了,非常好用)
⚙️模型
模型已经上传到huggingface了,可以通过以下链接访问
https://huggingface.co/yuanzhoulvpi/gpt2_chinese
?交互机器人界面chatbot.py
- 修改代码里面的第 4 行,这一行值为模型所在的位置,修改为作者分享的模型文件路径。
model_name_or_path = "checkpoint-36000"
- 运行
python chatbot.py
- 点击链接,即可在浏览器中打开机器人对话界面