训练自己的GPT-2闲聊模型

该项目来自于GitHub上的开源项目

GitHub地址:https://github.com/yangjianxin1/GPT2-chitchat

一、环境搭建

该项目的虚拟环境创建在anaconda中,代码运行于pycharm

该项目的运行环境:python3.6、 transformers==4.2.0、pytorch==1.7.0

1.创建虚拟环境

打开命令窗口,输入conda create -n 环境名称 python=3.6,回车再输入y即可创建虚拟环境

在所有相关资源下载完毕之后,再输入命令conda activate 环境名称  即可激活所创建的虚拟环境

进入虚拟环境之后,便可以安装相对应的包

2.安装pytorch

所需的pytorch版本可在如下网址寻找:

https://pytorch.org/get-started/previous-versions/

对应的cuda版本可在命令窗口输入nvidia-smi命令即可查看

所使用的cuda版本只需要比自己的版本低即可使用

找到对应的版本之后,只需复制对应的命令输入命令窗口即可安装pytorch

如若没有GPU则使用下方CPU Only的命令

之后只需耐心等待安装完成即可

安装完成之后输入conda list即可查看该环境下安装过的所有包

由于之前安装过其他的包,所以以上有的包新安装的环境没有

之后找到pytorch查看版本是否对应

3.配置虚拟环境

之后即可进入pycharm打开GPT-2的代码文件,进入设置配置刚刚创建的虚拟环境,具体步骤如下:

当环境配置好之后进入主界面,打开命令窗口,输入命令pip install -r  requirements.txt,安装其他的包

此处需要注意sklearn包安装时需要用命令pip install scikit-learn

当全部包安装完毕之后,后续运行程序出现错误时再根据相应的提示安装对应的包

二、数据预处理

将所需要训练的语料以如下的格式保存在data文件夹中

之后在命令窗口中输入以下命令,即可开始数据的预处理

python preprocess.py --train_path data/train.txt --save_path data/train.pkl

注:1.train_path后面的是语料的地址,train.txt可改为自己语料库的名称

       2.save_path后面是处理好后的pkl文件

三、训练模型

命令窗口中输入以下命令,即可开始训练

python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl

注:1.epoch是训练的轮次,可以自己指定

        2.batch_size是每次取的长度,也可自己指定

        3.device是指定参与训练的GPU,一般用device 0

        4.train_path是训练集的地址

四、人机交互

命令窗口中输入以下命令,即可开始人机交互

python interact.py --no_cuda --model_path model/path_to_your_model(训练出来的模型,可在model文件夹中查看,一般为epoch40) --max_history_len 3

五、语料库

语料库参照如下GitHub项目,里面有详细的介绍,此处不过多赘述

https://github.com/codemayq/chinese-chatbot-corpus

由于该项目最终生成的语料为tsv格式,因此为了满足上面的语料库要求,需要对其进行处理,因此写了如下代码,但因本人水平有限,所写代码只能满足基本的要求

path = "clean_chat_corpus/xiaohuangji.tsv"  # 需要转换的tsv文件地址
out = 'data/small.txt'  # 输出地址
fw = open(out, 'w', encoding='utf-8')
for line in open(path, 'r', encoding='utf-8').readlines():
    # 将每一行按照'\t'进行分割
    parts = line.split('\t')
    # 对分割后的每个部分(从第二部分开始)进行处理
    for one_sent in parts[1:]:
        # 将每个部分中的空格去掉
        one_sent = ''.join(one_sent.strip().split(' '))
        two_sent = parts[:1]
        two_sent = ''.join(two_sent)
        # 将处理后的部分写入到输出文件中
        fw.write(two_sent + '\n' + one_sent + '\n')
        # 在每个部分后面添加一个换行符
        fw.write('\n')
print("finish")

到此该项目完成,此篇文章是本人的学习过程的一个记录,再次分享给需要的人。

PYTORCH GPT是指基于PyTorch框架实现的GPT(Generative Pre-trained Transformer)模型GPT模型是一种无监督训练方式的自然语言处理模型,通过预训练在大规模文本数据上,使得模型学习到语言的语法、语义和上下文信息,从而能够生成具有连贯性的文本。 GPT-2是GPT模型的改进版本,相较于GPTGPT-2使用了更多的训练数据并增加了模型参数,以提升模型的性能。在具体结构上,GPT-2与GPT并无较大差异。因此,一般情况下,我们更关注GPT-2模型的表现。 为了实际使用GPT-2模型,我们可以使用PyTorch-Transformers模型库中封装好的GPT2Tokenizer和GPT2LMHeadModel类。通过这些工具,我们可以评估GPT-2在预训练后对下一个词预测的能力。安装PyTorch-Transformers库后,我们可以开始使用GPT-2模型进行文本生成等任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [GPT模型介绍并且使用pytorch实现一个小型GPT中文闲聊系统](https://blog.csdn.net/weixin_44599230/article/details/124103879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Pytorch——GPT-2 预训练模型及文本生成](https://blog.csdn.net/javastart/article/details/120024755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值