训练自己的GPT2-Chinese模型
文章目录
- 效果抢先看
- 准备工作
- 环境搭建
- 创建虚拟环境
- 训练&预测
- 项目结构
- 模型预测续写
- 训练模型
- 遇到的问题及解决办法
- 显存不足
- 生成的内容一样
- 文末
效果抢先看




准备工作
从GitHub上拉去项目到本地,准备已训练好的模型百度网盘:提取码【9dvu】。
- gpt2对联训练模型
- gpt2古诗词训练模型
- gpt2通用中文模型
- gpt2通用中文小模型
- gpt2文学散文训练模型
- gpt2中文歌词模型
环境搭建
- 配置好GPU的pytorch环境
a. 安装Anaconda环境
b. NIVIDA配置流程
桌面右键鼠标,找到NVIDIA控制面板,在左边找到开发者下管理GPU性能计数器,导航栏点击桌面选择启用开发者设置,弹出的系统信息中找到组件,找到产品名前缀为NVIDIA CUDA的那一条,记住其后面的版本号。
c. 进入NVIDIA官网下载CUDA,找到上一步记录的NVIDIA CUDA后的版本号相对应的链接。如版本信息为11.4就选择11.4


d. 下载完点击安装就行了
e. 安装cuDNN,选择相应的版本。这个地方要登录账号,没有账号可以注册,也可以选择QQ或微信登录,选择刚才的CUDA版本,下载压缩包

f. 下载完成后解压缩,并修改根目录名为cudnn


g. 将整个文件复制到xxx\NVIDIA GPU Computing Toolkit\CUDA\v11.4目录下

h. 设置变量环境,添加两个环境变量路径,根据自己的实际情况目录修改

-
pytorch配置
a. 去pytorch官网找到相应的gpu版本或cpu版本,找到后安装命令会出现在command栏

找不到自己的版本点击previous version链接

b. 使用管理员身份执行cmd,否则会安装失败conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch安装完成之后执行命令
conda list查看是否安装成功打开终端输入
python,使用以下代码查看torch显示GPU不可用状态>>>import torch >>>torch.cuda.is_available() Falsec. 标准查看torch版本
>>>import torch >>>torch.__version__ 1.10.2 -
pytorch轮子配置
a. whl轮子配置,根据CUDA版本选择相应的版本。其中cu表示GPU版本,cpu表示CPU版本


b. 下载完成之后本地使用pip install安装pip install .\torchvision-0.13.1+cpu-cp39-cp39-win_amd64.whl pip install .\torch-1.10.2+cu113-cp39-cp39-win_amd64.whlc. 安装完成之后验证
torch>>>import torch >>>torch.cuda.is_available() True
创建虚拟环境
- 为了能够顺利使用环境,推荐使用
python3.7.1版本conda create -n venv_name python=3.7.1 - 激活 虚拟环境
conda activate venv_name - pip安装所需库
pip install transformers==2.1.1 pip install tensorflow==2.0.0 pip install numpy pip install tqdm pip install sklearn pip install keras pip install tb-nightly pip install future pip install thulac pip install setuptools==59.5.0pip install torch==1.10.2+cu113 torchvision==0.3.0 --extra-index-url
训练&预测
项目结构
- config: 存放模型的配置文件
- data: 存放训练数据
- model: 存放模型
- cache: 用于模型训练之前的数据预处理
- sample: 用于存放生成样本的目录
- generate.py: 生成代码
- train.py: 训练多文本启动代码
- train_single.py: 训练但文本启动代码
- tokenizations: 用于文本数据转换tokenizations的脚本
模型预测续写
参数说明:
- length: 生成的最长长度
- prefix: 文章开头
- fast_pattern: 快速生成模式
- save_samples: 保存生成文本结果的位置
- temperature: 越小越遵循训练样本,续写的内容的思维越发散
# 通用模型预测文本 python ./generate.py --length=100 --nsamples=4 --prefix=天津是一座美丽的城市。 --fast_pattern --save_samples ----model_path=model/use_model --model_config=config/model_config_small.json --topk=8 --temperature=0.8 --batch_size=2# 制定模型输出 python ./generate.py --length=300 --nsamples=4 --prefix=萧炎,斗之力。 --fast_pattern --save_samples --model_path=model/model_epoch18 --model_config=model/model_epoch18/config.json --topk=8 --temperature=1 --batch_size=1
其他参数参考:

训练模型
将训练语料以train.json的格式放入data目录中
如果文件格式为train.json格式,那么将train.py文件中的读取方式为:lines = json.load(f)
如果文件格式为train.txt格式,即数据格式为[”正文1“, ”正文2“, ”正文3“],那么将train.py文件中的读取方式为:lines = f.readlines()
运行train.py文件并设定--raw参数,会自动预处理数据,预处理完成之后,会自动执行训练。
python train.py --raw
遇到的问题及解决办法
显存不足
- 语料太大:在
config文件中选择小一点的json文件 - batch_size过大:默认训练是8,可以改成4或者6尝试
生成的内容一样
- 修改
generate.py中的batch_size=1
文末
此训练结果生成比较简单的文章还可以,但是需要达到理想的效果,还需要更大的数据体系和语料以及长期的模型训练,基于原有的算法二次开发,门槛也比较高,而且这种业务比较吃硬件资源。
相关文章:
训练自己的GPT2-Chinese模型
文章目录效果抢先看准备工作环境搭建创建虚拟环境训练&预测项目结构模型预测续写训练模型遇到的问题及解决办法显存不足生成的内容一样文末效果抢先看 准备工作 从GitHub上拉去项目到本地,准备已训练好的模型百度网盘:提取码【9dvu】。 gpt2对联训…...
springcloud3 fegin服务超时的配置和日志级别的配置2
一 fegin的概述 1.1 fegin的默认超时时间 默认fegin客户端只等待1秒钟,超过1秒钟,直接会返回错误。 1.2 架构图 1.2.1 说明 1.2.2 启动操作 1.先启动9001,9002 eureka 2.启动9003 服务提供者 3.启动9006消费者 1.3 情况验证 1.3.1 正常默认情…...
华为机试 HJ48 从单向链表中删除指定值的节点
题目链接 描述 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。 链表的值不能重复。 构造过程,例如输入一行数据为: 6 2 1 2 3 2 5 1 4 5 7 2 2 则第一个参数6表示输入总共6个节点&a…...
华为机试 HJ1 字符串最后一个单词的长度
华为机试 HJ1 字符串最后一个单词的长度 文章目录华为机试 HJ1 字符串最后一个单词的长度一、题目描述二、方法一 Java lastIndexOf() 方法三、方法二 Java split()方法使用Java的lastIndexOf()和split()解决求取方法字符串最后一个单词的长度的问题 一、题目描述 计算字符串最…...
从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell
从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell 一、MongoDB基本概念二、文档三、集合1.动态模式2.命名四、数据库五、MongoDB shell1.运行shell2.连接远程MongoDB数据库3.shell中的基本操作六、数据类型1.基本数据类…...
前端实用技巧,JS压缩、美化、JS混淆加密
作为一名前端开发者,关注JavaScript代码的安全性和隐私性,或者需要对JavaScript代码进行美化、格式化、压缩等操作,帮助你提高开发效率和代码质量,利用一个好的工具非常重要。 如果不想让自己的代码被恶意篡改和盗用,作…...
synchronized轻量级锁优化
synchronized优化轻量级锁 使用场景 如果一个对象虽然有多个线程访问,但多线程访问时间是错开的,也就是没有竞争,那么可以使用轻量级锁优化; 原理 1、每个线程的栈帧中有锁记录 包括:记录锁对象的地址Object refer…...
python 日期转换 日期字符相关
python中时间日期格式化符号: import datetime # Fri, 24 Feb 2023 22:23:18 0000 ret datetime.datetime.strptime("Fri, 24 Feb 2023 22:23:18 0000", "%a, %d %b %Y %H:%M:%S %z").strftime("%Y-%m-%d %H:%M:%S") print(ret)%y …...
使用sm4js进行加密和国密sm4的总结
最近在开发过程中,用到了sm4国密加密,因为之前没有用过,所以就想总结一下。 先说一下怎么安装使用(vue项目) 1、先安装sm4js npm i sm4js在package.json中显示sm4js的版本如下: "dependencies&quo…...
c语言面试题目整理
1、static有什么用途? 在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数 限制变量的作用域,设置变量的存储域。 static 关键字主要有两种作用: 第一,为某特定数据类型或对…...
【嵌入式Bluetooth应用开发笔记】第三篇:初探BLUE ALSA应用开发
概述 BlueALSA(Bluetooth Audio ALSA)是一种将蓝牙音频设备连接到 ALSA 音频系统的桥接程序。它提供了一个蓝牙音频设备的 ALSA 插件,允许使用 ALSA API 直接从蓝牙音频设备读取和写入音频数据,从而使得蓝牙音频设备能够以与其他 ALSA 兼容设备相同的方式工作。 BlueALSA …...
C++基础了解-21-C++ 继承
C 继承 一、C 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,不需要重新编写新的…...
To_Heart—游记——NOI 春季测试
快点投降吧! Day 1 考试了。 10min T1 ,20min 打了 T2 的暴力,发现不会就跑了、 看到 T3 一眼计算几何,不会,去看 T4。看数据范围,感觉是网络流 。大概这个时候已经 1hour 了。 然后挣扎。觉得不能最大流…...
Laya小游戏开发,laya3D美术篇——1——关于laya自带的几个shader的基础运用讲解。
最近三年,基本上做的都是laya小游戏项目。也就是微信小程序,很多业内同行都觉得laya做小游戏不好用,去用了其他平台,甚至还有些做app游戏的,都不来趟laya这个坑。原因有那么以下几点。laya对于unity的辅助开发…...
brew 的安装与使用 (Apple Silicon CPU的Mac机型完成适配)
准备 ARM版Homebrew需要安装在/opt/homebrew路径下,早期的时候需要手动创建目录执行命令,目前使用最新脚本不需要手动操作。 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"然后还需设置环境…...
传输线的物理基础(四):传输线的特性阻抗
特性阻抗和控制阻抗对于一条均匀的线,无论我们选择看哪里,我们都会看到沿线传播时相同的瞬时阻抗。有一个表征传输线的瞬时阻抗,我们给它起了一个特殊的名字:特性阻抗。有一个瞬时阻抗是均匀传输线的特征。我们将这种恒定的瞬时阻…...
(六十九)以MySQL单表查询来举例,看看执行计划包含哪些内容(2)?
今天我们继续来说执行计划里包含的数据访问方式,上次说了const和ref,以及ref_or_null,想必大家都理解了,今天来说说其他的数据访问方式 先说说range这个东西,这个东西顾名思义,其实就是你SQL里有范围查询的…...
Linux发行版的backport
遇到一个问题,简要记录如下: base on ubuntu18.06 4.15内核,这版内核不支持一款intel的集成网卡,追踪内核代码的提交历史才发现,这款网卡是从linux-4.20才开始支持的,系统自带的这个Kernel版本不支持。 如果不允许升级内核,面对这种问题,社区的做法是把新内核的特性cher…...
GitLab 存储型XSS漏洞 (CVE-2023-0050)
漏洞描述 GitLab 是由GitLab公司开发的、基于Git的集成软件开发平台。kroki是一款集成在GitLab的基于文本的图表描述自动转为图片的开源工具,在GitLab 13.7引入。 由于Kroki中lib/banzai/filter/kroki_filter.rb对接收的image_src过滤不严,具有AsciiDo…...
HTTPS加密流程
什么是HTTPSHTTPS是加密后的HTTP,相当于:HTTPS HTTP SSL/TLSHTTPS是基于"密钥"来实现的,客户端将发送的数据用密钥进行加密,服务器将收到的数据用密钥解密.对称加密和非对称加密对称加密是指:交互双方共同使用同一个密钥进行加密 或 解密.如下(图中的客户端和服务器…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
