训练自己的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是基于"密钥"来实现的,客户端将发送的数据用密钥进行加密,服务器将收到的数据用密钥解密.对称加密和非对称加密对称加密是指:交互双方共同使用同一个密钥进行加密 或 解密.如下(图中的客户端和服务器…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
