ChatGLM-6B 部署与 P-Tuning 微调实战-使用Pycharm实战

国产大模型ChatGLM-6B微调+部署入门-使用Pycharm实战

1.ChatGLM模型介绍

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。
ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。详细信息请参考: 链接.

2. 大模型参数微调

因为大模型参数比较多,不论是重新预训练还是微调,相应的硬件成本和人工成本也比较高,为了解决这一问题,网上主要涌现了基于Lora 和 基于 P-Tuning v2 的高效参数微调方法,两者的原理如下:

  • P-Tuning v2:相当于在模型每层的embedding层和Self-Attention部分拼接可训练的参数,在微调时只更新这部分参数为主
    在这里插入图片描述
    上图中黄色部分即为每层新增的可训练参数

  • LoRA:相当于对原始全量参数矩阵做低秩分解,在微调时整体参数不动,只更新新增的参数,然后再训练完成之后,将其和原始全量参数合并,从而达到微调的目的
    在这里插入图片描述
    途中橙色的梯形为新增参数,在训练完之后,会和原始模型参数作合并形成h
    在这个过程中参数优化两从dd下降到 2r*d,这部分涉及到举证的低秩分解,感兴趣的同学可以去学习一下相关的矩阵论知识;
    那么这两种微调方法有哪些异同点呢:

  • 相同点:都是固定原始大模型参数不动,通过新增可训练参数微调然后与原始模型参数共同作用,从而起到微调大模型参数的效果

  • 异同点:新增加参数的方式不同,其次LoRA的方式不会增加推理时间,因为参数在推理时,整体的还是d*d,对于这里感兴趣的同学可以了解这篇 文章.

3. P-Tuning 微调实战ChatGLM-6B模型

3.1 chatglm-6b训练环境构建

官网微调链接,其中给的微调环境配置如下:

protobuf
transformers==4.27.1
cpm_kernels
torch>=1.10
gradio
mdtex2html
sentencepiece
accelerate

但是在实际搭建环境的过程中要考虑到自己的硬件设备,主要GPU驱动这块。我的硬件设备信息如下:

  • 系统: Windows 10
  • GPU算力:3060 12G
  • CPU型号:16核 32G
    因为主要是显卡驱动这块需要适配,所以我把我的驱动信息附图显示
    在这里插入图片描述
    显卡驱动为512.29,CUDA版本为11.6,因此在配torch环境时需要适配,我的anaconda环境版本安装如下:
Package                       Version
----------------------------- ------------
aiofiles                      22.1.0
aiohttp                       3.8.4
aiosignal                     1.3.1
aiosqlite                     0.18.0
altair                        4.2.2
anaconda-client               1.11.1
anaconda-navigator            2.4.0
anaconda-project              0.11.1
anyio                         3.5.0
argon2-cffi                   21.3.0
argon2-cffi-bindings          21.2.0
asttokens                     2.0.5
async-timeout                 4.0.2
attrs                         22.1.0
Babel                         2.11.0
backcall                      0.2.0
backports.functools-lru-cache 1.6.4
backports.tempfile            1.0
backports.weakref             1.0.post1
beautifulsoup4                4.12.2
bleach                        4.1.0
boltons                       23.0.0
brotlipy                      0.7.0
certifi                       2023.5.7
cffi                          1.15.1
chardet                       4.0.0
charset-normalizer            2.0.4
click                         8.0.4
clyent                        1.2.2
colorama                      0.4.6
coloredlogs                   15.0.1
comm                          0.1.2
conda                         23.5.2
conda-build                   3.23.3
conda-content-trust           0.1.3
conda-pack                    0.6.0
conda-package-handling        2.0.2
conda_package_streaming       0.7.0
conda-repo-cli                1.0.41
conda-token                   0.4.0
conda-verify                  3.4.2
cpm-kernels                   1.0.11
cryptography                  39.0.1
datasets                      2.11.0
debugpy                       1.5.1
decorator                     5.1.1
defusedxml                    0.7.1
dill                          0.3.6
entrypoints                   0.4
executing                     0.8.3
fastapi                       0.95.0
fastjsonschema                2.16.2
ffmpy                         0.3.0
filelock                      3.9.0
flatbuffers                   23.5.26
frozenlist                    1.3.3
fsspec                        2023.6.0
fst-pso                       1.8.1
future                        0.18.3
FuzzyTM                       2.0.5
glob2                         0.7
gradio                        3.24.1
gradio_client                 0.0.8
h11                           0.14.0
httpcore                      0.16.3
httpx                         0.23.3
huggingface-hub               0.16.4
humanfriendly                 10.0
icetk                         0.0.4
idna                          3.4
ipykernel                     6.19.2
ipython                       8.12.0
ipython-genutils              0.2.0
ipywidgets                    8.0.4
jedi                          0.18.1
jieba                         0.42.1
Jinja2                        3.1.2
joblib                        1.3.1
json5                         0.9.6
jsonpatch                     1.32
jsonpointer                   2.1
jsonschema                    4.17.3
jupyter                       1.0.0
jupyter_client                8.1.0
jupyter-console               6.6.3
jupyter_core                  5.3.0
jupyter-events                0.6.3
jupyter_server                2.5.0
jupyter_server_fileid         0.9.0
jupyter_server_terminals      0.4.4
jupyter_server_ydoc           0.8.0
jupyter-ydoc                  0.2.4
jupyterlab                    3.6.3
jupyterlab-pygments           0.1.2
jupyterlab_server             2.22.0
jupyterlab-widgets            3.0.5
latex2mathml                  3.75.2
libarchive-c                  2.9
linkify-it-py                 2.0.0
loguru                        0.7.0
lxml                          4.9.2
markdown-it-py                2.2.0
MarkupSafe                    2.1.1
matplotlib-inline             0.1.6
mdit-py-plugins               0.3.3
mdtex2html                    1.2.0
mdurl                         0.1.2
menuinst                      1.4.19
miniful                       0.0.6
mistune                       0.8.4
mpmath                        1.3.0
multidict                     6.0.4
multiprocess                  0.70.14
navigator-updater             0.4.0
nbclassic                     0.5.5
nbclient                      0.5.13
nbconvert                     6.5.4
nbformat                      5.7.0
nest-asyncio                  1.5.6
nltk                          3.8.1
notebook                      6.5.4
notebook_shim                 0.2.2
numpy                         1.25.1
onnx                          1.14.0
onnxruntime-gpu               1.14.1
openai                        0.27.4
orjson                        3.8.10
packaging                     23.0
pandas                        2.0.3
pandocfilters                 1.5.0
parso                         0.8.3
pathlib                       1.0.1
pickleshare                   0.7.5
Pillow                        9.4.0
pip                           23.1.2
pkginfo                       1.9.6
platformdirs                  2.5.2
pluggy                        1.0.0
ply                           3.11
prometheus-client             0.14.1
prompt-toolkit                3.0.36
protobuf                      4.23.4
psutil                        5.9.0
pure-eval                     0.2.2
pyarrow                       11.0.0
pycosat                       0.6.4
pycparser                     2.21
pydantic                      1.10.7
pydub                         0.25.1
pyFUME                        0.2.25
Pygments                      2.15.1
PyJWT                         2.4.0
pyOpenSSL                     23.0.0
PyQt5                         5.15.7
PyQt5-sip                     12.11.0
pyreadline3                   3.4.1
pyrsistent                    0.18.0
PySocks                       1.7.1
python-dateutil               2.8.2
python-json-logger            2.0.7
python-multipart              0.0.6
pytz                          2022.7
pywin32                       305.1
pywinpty                      2.0.10
PyYAML                        6.0
pyzmq                         25.1.0
qtconsole                     5.4.2
QtPy                          2.2.0
regex                         2023.6.3
requests                      2.29.0
responses                     0.18.0
rfc3339-validator             0.1.4
rfc3986                       1.5.0
rfc3986-validator             0.1.1
rouge-chinese                 1.0.3
ruamel.yaml                   0.17.21
ruamel.yaml.clib              0.2.6
ruamel-yaml-conda             0.17.21
safetensors                   0.3.1
semantic-version              2.10.0
Send2Trash                    1.8.0
sentencepiece                 0.1.97
setuptools                    65.6.3
simpful                       2.10.0
sip                           6.6.2
six                           1.16.0
sklearn                       0.0.post7
sniffio                       1.2.0
soupsieve                     2.4
stack-data                    0.2.0
starlette                     0.26.1
sympy                         1.12
terminado                     0.17.1
text2vec                      1.1.7
textvec                       3.0
tinycss2                      1.2.1
tokenizers                    0.13.3
toml                          0.10.2
tomli                         2.0.1
toolz                         0.12.0
torch                         1.13.1+cu116
torchaudio                    0.13.1+cu116
torchvision                   0.14.1+cu116
tornado                       6.2
tqdm                          4.65.0
traitlets                     5.7.1
transformers                  4.27.1
typing_extensions             4.6.3
tzdata                        2023.3
uc-micro-py                   1.0.1
ujson                         5.4.0
urllib3                       1.26.16
uvicorn                       0.21.1
wcwidth                       0.2.5
webencodings                  0.5.1
websocket-client              0.58.0
websockets                    11.0.1
wheel                         0.38.4
widgetsnbextension            4.0.5
win-inet-pton                 1.1.0
win32-setctime                1.1.0
wincertstore                  0.2
xxhash                        3.2.0
y-py                          0.5.9
yarl                          1.8.2
ypy-websocket                 0.8.2
zstandard                     0.19.0

3.2 代码构建

3.2.1 拉取数据和代码

在搭建好代码运行环境后,我们需要从官方拉取代码,下载相应数据
代码拉取地址链接
数据拉取地址链接

3.2.2 使用pycharm配置参数

整个代码框架如下图所示,将数据集加压拷贝到ptuning即可
在这里插入图片描述
点击main.py的参数配置界面,配置初始化参数:
在这里插入图片描述
参数配置如下:

--do_train
--train_file
AdvertiseGen/train.json
--validation_file
AdvertiseGen/dev.json
--prompt_column
content
--response_column
summary
--overwrite_cache
--model_name_or_path
THUDM/chatglm-6b
--output_dir
output/adver_out
--overwrite_output_dir
--max_source_length
64
--max_target_length
64
--per_device_train_batch_size
1
--per_device_eval_batch_size
1
--gradient_accumulation_steps
16
--predict_with_generate
--max_steps
3000
--logging_steps
10
--save_steps
1000
--learning_rate
2e-2
--pre_seq_len
128
--quantization_bit
4

3.3 执行训练

点击运行按钮,即可看到执行日志
在这里插入图片描述
在这里插入图片描述
在微调过程中,内存占用7G左右,耗时10小时+
后续等模型训练完毕之后,再更新相关效果,大家如果在微调的过程中遇到什么问题或者有想法可以一起留言交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(14)-Fiddler断点(breakpoints)实战,篡改或伪造数据

1.简介 上一篇主要就讲解和分享Fiddler断点的理论和操作,今天宏哥就用具体例子,将上一篇中的理论知识实践一下。而且在实际测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以使用fiddler进行…

容斥原理 训练笔记

​ 容斥原理 设S是一个有限集&#xff0c;A_1,A_2…A_n是S的n个子集&#xff0c;则 ∣ S − ⋃ i 1 n A i ∣ ∑ i 0 n ( − 1 ) i ∑ 1 ≤ j 1 < j 2 . . . < j i ≤ n ∣ ⋂ k 1 i A j k ∣ |S-\bigcup_{i1}^{n}A_i|\sum_{i0}^{n}(-1)^i\sum_{1\leq j_1< j_2.…

okvis

论文 Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization 摘要 由于两种感知模式的互补性&#xff0c;视觉和惯性线索的融合在机器人中变得很流行。虽然迄今为止大多数融合策略都依赖于过滤方案&#xff0c;但视觉机器人界最近转向了非线性优化方法&#x…

【React Native】学习记录(二)——路由搭建和常见的开发技巧

模拟器设置成中文 在开发过程中发现&#xff0c;两个模拟器都不能输入中文&#xff0c;所以需要配置一下。 先说一下安卓&#xff0c;在弹出的输入框中查看设置&#xff0c;设置一下对应的languages即可&#xff1a; 在苹果模拟器中&#xff0c;跟苹果手机一样&#xff0c;打…

树莓派本地快速搭建web服务器,并发布公网访问

文章目录 树莓派本地快速搭建web服务器&#xff0c;并发布公网访问 树莓派本地快速搭建web服务器&#xff0c;并发布公网访问 随着科技的发展&#xff0c;电子工业也在不断进步&#xff0c;我们身边的电子设备也在朝着小型化和多功能化演进&#xff0c;以往体积庞大的电脑也在…

Selenium多浏览器处理

Python 版本 #导入依赖 import os from selenium import webdriverdef test_browser():#使用os模块的getenv方法来获取声明环境变量browserbrowser os.getenv("browser").lower()#判断browser的值if browser "headless":driver webdriver.PhantomJS()e…

为Android构建现代应用——应用架构

选择风格(Choosing a style) 我们将依照Google在《应用架构指南》中推荐的最佳实践和架构指南来构建OrderNow的架构。 这些定义包括通过各层定义组件的一些Clean Architecture原则。 层次的定义(Definition of the layers) 在应用程序中&#xff0c;我们将定义以下主要层次…

小程序创建

1&#xff0c;下载HBuilder X ;(3.8.7) HBuilderX-高效极客技巧 2,下载模板&#xff08;不选云服务的&#xff09;&#xff1b; 3&#xff0c;运行-运行到小程序模拟器&#xff1b; 4&#xff0c;安装小程序开发工具&#xff1b; 5&#xff0c;选择稳定版-windows64版&…

SpringBoot 统⼀功能处理

目录 前言 1.⽤户登录权限效验 1.1、最初⽤户登录效验 1.2、Spring AOP ⽤户统⼀登录验证的问题 1.3、Spring 拦截器 了解 创建一个 Spring 拦截器 的流程 1、 创建自定义拦截器&#xff0c;实现 HandlerInterceptor 接⼝的preHandle&#xff08;执⾏具体⽅法之前的预处理…

win10日程怎么同步到安卓手机?电脑日程同步到手机方法

在如今快节奏的生活中&#xff0c;高效地管理时间变得至关重要。而对于那些经常在电脑上安排日程的人来说&#xff0c;将这些重要的事务同步到手机上成为了一个迫切的需求。因为目前国内使用win10系统电脑、安卓手机的用户较多&#xff0c;所以越来越多的职场人士想要知道&…

Jenkins 安装构建

一、CentOS 安装 1. 使用该存储库 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key 2. 安装 Java yum install fontconfig java-11-openjdk配…

解决eclipse 打开报错 An error has occurred. See the log file null.

解决eclipse 打开报错an error has ocurred. See the log file null 出现原因&#xff1a;安装了高版本的jdk,更换 jdk 版本&#xff0c;版本太高了。 解决方案&#xff1a;更改环境变量 改成 jkd 1.8

【深度学习实践】垃圾检测

简介 本项目使用深度学习目标检测开源框架PaddleDetection中的yolox算法实现了垃圾检测&#xff0c;本文包含了从头训练yolox模型和直接使用训练好的模型进行推理的代码及相关权重。 一、数据集准备 本次训练的数据集为coco格式&#xff0c;共包含150张垃圾的照片&#xff0…

利用小波分解信号,再重构

function [ output_args ] example4_5( input_args ) %EXAMPLE4_5 Summary of this function goes here % Detailed explanation goes here clc; clear; load leleccum; s leleccum(1:3920); % 进行3层小波分解&#xff0c;小波基函数为db2 [c,l] wavedec(s,3,db2); %进行…

hcip——路由策略

要求&#xff1a; 基础配置 AR1 [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip add 12.0.0.1 24[R1-GigabitEthernet0/0/0]int g 0/0/1 [R1-GigabitEthernet0/0/1]ip add 14.0.0.1 24[R1]int loop0 [R1-LoopBack0]ip add 1.1.1.1 24[R1]rip 1 [R1-rip-1]vers 2 [R1-rip-1]net…

Unity 性能优化五:渲染模块压力

CPU压力 Batching 在GPU渲染前&#xff0c;CPU会把数据按batch发送给GPU&#xff0c;每发送一次&#xff0c;都是一个drawcall&#xff0c;GPU在渲染每个batch的时候&#xff0c;会切换渲染状态&#xff0c;这里的渲染状态指的是&#xff1a;影响对象在屏幕上的外观的渲染属性…

深入学习java虚拟机||JVM内存结构五大模型

目录 程序计数器 栈 虚拟机栈 垃圾回收是否涉及栈内存&#xff1f; 栈内存分配越大越好吗&#xff1f; 方法内的局部变量是否线程安全&#xff1f; 栈内存溢出 本地方法栈 堆 方法区 先看内存图总览 程序计数器 定义&#xff1a;全称P r o g r a m C o u n t e r R e …

windows下配置vue开发环境

安装nodejs&#xff0c;配置npm 1.下载安装包&#xff1a;下载地址&#xff1a;https://nodejs.org/en/download 2.安装node&#xff1a;下载完成后进行安装&#xff0c;记住安装的文件夹。本人安装路径为 D:\Program Files\nodejs 3.配置环境变量&#xff1a; ①安装完成后…

基于传统检测算法hog+svm实现图像多分类

直接上效果图&#xff1a; 代码仓库和视频演示b站视频005期&#xff1a; 到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频 代码展示&#xff1a; 数据集在datasets文件夹下 运行01train.py即可训练 训练结束后会保存模型在本地 运行02pyqt.py会有一个可视化…

某信用中心之加速乐实战分析

某信用中心之加速乐实战分析 某信用中心之加速乐实战分析声明逆向目标逆向分析第一层cookie获取第二层cookie获取调试分析JS文件 模拟执行致谢 某信用中心之加速乐实战分析 声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#x…