ubuntu18.4(后改为20.4)部署chatglm2并进行基于 P-Tuning v2 的微调
下载驱动
NVIDIA显卡驱动官方下载地址
下载好对应驱动并放在某个目录下,
在Linux系统中安装NVIDIA显卡驱动前,建议先卸载Linux系统自带的显卡驱动nouveau。
禁用nouveau
首先,编辑黑名单配置。
vim /etc/modprobe.d/blacklist.conf
在文件的最后添加下面两行。
blacklist nouveau
options nouveau modeset=0
然后,输入下面的命令更新并重启。
update-initramfs -u
reboot
重启后输入下面的命令验证是否禁用成功,成功的话这行命令不会有输出。
lsmod | grep nouveau
驱动安装
首先,使用apt卸载已有的驱动,命令如下。
apt-get purge nvidia*

缺少gcc

J解决办法:
sudo apt install build-essential
然后gcc -v看是否安装成功
我的系统是ubuntu18.04
要装cuda12.0,需要升级系统至至少Ubuntu20.04,升级后apt-get upgrade有问题,还是卸载后重新安装了系统。
Ubuntu操作系统的版本号。命令如下
lsb_release -a
可以看到Ubuntu的系统版本号码为18.04
在终端的命令窗口输入下面的命令,进行软件源列表的更新。
sudo apt-get update
完成上面的软件列表更新之后,使用下面的命令 进行更新包的安装。
sudo apt-get upgrade
重启
reboot
apt install update-manager-core
sudo apt dist-upgrade
sudo do-release-upgrade
cuda10.1及以上的卸载:
-
cd /usr/local/cuda-xx.x/bin/ -
sudo ./cuda-uninstaller -
sudo rm -rf /usr/local/cuda-xx.x
升级后apt-get upgrade有问题,还是卸载后重新安装了系统。

官网下载并安装对应版本CUDA
- 根据系统支持版本下载对应版本的CUDA Toolkit,为了后续的torch安装作者此处选择CUDA12.1。官网链接

- 没有用,还是从bin文件夹中卸载cuda-uninstaller

- 选择所需版本,通过对应命令进行下载安装(注意此处需要记住下载文件的目录,之后需要找到)
sh cuda_12.0**.run

配置环境变量
编辑 /etc/profile 结尾添加如下
export CUDA_HOME=/usr/local/cuda-12.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
PATH="$CUDA_HOME/bin:$PATH"
使生效
source /etc/profile
4.测试CUDA安装是否成功
nvcc -V

重装cuda12.1的时候,注意不要选driver,因为之前安装过了

安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
安装Git LFS
1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
2. sudo apt-get install git-lfs
3. 验证安装成功:
输入: git lfs install
如果出现: Git LFS initialized. 则说明成功
从Hugging Face Hub 下载模型
git clone https://huggingface.co/THUDM/chatglm2-6b
模型量化
默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:
# 按需在web_demo.py中修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(4).cuda()
其中"THUDM/chatglm2-6b"需修改为你本地部署的路径
注:如果内存只有8G,模型量化选择int4

安装transformers和gradio和mdtex2html,pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple
如果没有报错,输入信息后没有输出,有可能是gradio的版本问题。
需要降低版本 gradio==3.39.0
启动web_demo.py
python web_demo.py
API部署
首先需要安装额外的依赖
pip install fastapi uvicorn
将api.py中的"THUDM/chatglm2-6b"修改为本地模型路径
tokenizer = AutoTokenizer.from_pretrained("D:\ChatGLM2-6B", trust_remote_code=True)
model = AutoModel.from_pretrained("D:\ChatGLM2-6B", trust_remote_code=True).quantize(4).cuda()
运行仓库中的 api.py
python api.py
基于 P-Tuning v2 的微调
软件依赖
运行微调除 ChatGLM2-6B 的依赖之外,还需要安装以下依赖
pip install rouge_chinese nltk jieba datasets -i https://pypi.tuna.tsinghua.edu.cn/simple
cd ptuning
vi train_chat.sh,修改模型地址,数据集地址,输出模型地址

参数解释:
PRE_SEQ_LEN=128: 定义了一个名为PRE_SEQ_LEN的变量,并将其设置为128。这个变量的作用在后续的代码中会用到。
LR=2e-2: 定义了一个名为LR的变量,并将其设置为2e-2,即0.02。这个变量表示学习率,在后续的代码中会用到。
–train_file /root/train.json : 指定训练数据文件的路径和文件名为"/root/train.json"。
–validation_file /root/verify.json : 指定验证数据文件的路径和文件名为"/root/verify.json"。
–prompt_column content : 指定输入数据中作为提示的列名为"content"。
–response_column summary : 指定输入数据中作为响应的列名为"summary"。
–overwrite_cache : 一个命令行参数,指示在缓存存在的情况下覆盖缓存。
–model_name_or_path THUDM/chatglm-6b : 指定使用的模型的名称或路径为"THUDM/chatglm-6b"。
–output_dir output/adgen-chatglm-6b-pt : 指定输出目录的路径和名称为"output/adgen-chatglm-6b-pt
–overwrite_output_dir : 一个命令行参数,指示在输出目录存在的情况下覆盖输出目录。
–max_source_length 512 : 指定输入序列的最大长度为512。
–max_target_length 512 : 指定输出序列的最大长度为512。
–per_device_train_batch_size 1 : 指定每个训练设备的训练批次大小为1。
–per_device_eval_batch_size 1 : 指定每个评估设备的评估批次大小为1。
–gradient_accumulation_steps 16 : 指定梯度累积的步数为16。在每个更新步骤之前,将计算并累积一定数量的梯度。
–predict_with_generate : 一个命令行参数,指示在生成模型的预测时使用生成模式。
–max_steps 3000 : 指定训练的最大步数为3000。
–logging_steps 10 : 指定每隔10个步骤记录一次日志。
–save_steps 1000 : 指定每隔1000个步骤保存一次模型。
–learning_rate $LR : 指定学习率为之前定义的LR变量的值。
–pre_seq_len $PRE_SEQ_LEN : 指定预设序列长度为之前定义的PRE_SEQ_LEN变量的值。
–quantization_bit 4 : 指定量化位数为4。这个参数可能是与模型相关的特定设置。
执行训练命令
sh train_chat.sh
在p-tuning文件夹下执行 sh web_demo.py可以运行微调后的模型。
web_demo.py中注意模型地址和微调模型地址
相关文章:
ubuntu18.4(后改为20.4)部署chatglm2并进行基于 P-Tuning v2 的微调
下载驱动 NVIDIA显卡驱动官方下载地址 下载好对应驱动并放在某个目录下, 在Linux系统中安装NVIDIA显卡驱动前,建议先卸载Linux系统自带的显卡驱动nouveau。 禁用nouveau 首先,编辑黑名单配置。 vim /etc/modprobe.d/blacklist.conf 在文件的最后添加…...
爬虫-获取数据xpath
安装lxml pip3 install lxml基本用法 import reauests from lxml import etree url = xxx res = reuests.get(url).text html = etree.HTML(res) # 获取所有div标签 xpath = //div print(html.xpath(xpath)) #获取id=xx的div标签下的class=yy的span标签 xpath = //div[@id=&quo…...
SpringBoot中使用JdbcTemplate访问Oracle数据库
Oracle相信大家都不陌生吧,一个大型的数据库,至于数据库,我相信各位都比较熟悉了,一个软件系统,不论是我们常做的App、小程序、还是传统的web站点,我们都有用户的信息,相关业务的数据࿰…...
【Linux】权限完结
个人主页点击直达:小白不是程序媛 系列专栏:Linux被操作记 目录 前言 chown指令 chgrp指令 文件类型 file指令 目录的权限 粘滞位 umask指令 权限总结 前言 上篇文章我们说到对于一个文件所属者和所属组都是同一个人时,使用所属者身…...
计算机网络-应用层(3)
一、FTP 文件传输协议 (File Transfer Protocol,FTP) 简称为“文传协 议”,用于在Internet上控制文件的双向传输。 FTP 客户上传文 件时,通过服务器20号端口建立的连接是建立在TCP 之上的数 据连接,通过服务器21号端口建立的连接是建立在TCP 之上的控制连…...
虎去兔来(C++)
系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...
docker基础镜像定制
docker基础镜像定制 1 简言2.准备软件源文件sources.list3.制作基础镜像3.1 编写Dockerfile命令3.2 制作基础镜像k8sbase1.03.3 测试基础镜像1 简言 官方基础镜像一般自带的linux命令是比较少,tcpdump、telnet登等命令是没有的,这时,定制一套适合自己的基础镜像是必要的,在…...
解决git action定时任务执行失败的方法
为了测试git action定时任务是否有效,你可能选择一个最近的时间测试, 但是发现怎么也触发不了,是不是觉得很苦恼。但是同样的时间,在第二天的定时任务又能成功运行。 这是什么原因? 原因就在上图,git act…...
Node编写重置用户密码接口
目录 前言 定义路由和处理函数 验证表单数据 实现重置密码功能 前言 接前面文章,本文介绍如何编写重置用户密码接口 定义路由和处理函数 路由 // 重置密码的路由 router.post(/updatepwd, userinfo_handler.updatePassword) 处理函数 exports.updatePasswo…...
Day13力扣打卡
打卡记录 奖励最顶尖的 k 名学生(哈希表排序) 用哈希表对所有的positive与negative词条进行映射,然后遍历求解。tip:常用的分割字符串的操作:1.stringstream配合getline() [格式buf, string, char]2.string.find()[find未找到目标会返回npos…...
独立开发者知识贴
有一个github仓库,叫做独立开发变现周刊,很不错,作者能从21年能坚持更新到现在,我很佩服。 它里边有很多独立开发者成功的作品案例,我对这些很感兴趣。 在阅读时,我会问自己以下几个问题: 解…...
软考系列(系统架构师)- 2009年系统架构师软考案例分析考点
试题一 软件架构设计 【问题1】(9分) 软件质量属性是影响软件架构设计的重要因素。请用200字以内的文字列举六种不同的软件质量属性名称并解释其含义。 常见的软件质量属性有多种,例如性能(Performance)、可用性(Ava…...
C语言每日一题(21)删除排序数组中的重复项
力扣 26.删除排序数组中的重复项 题目描述 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考…...
如何快速解决d3dcompiler_43.dll缺失问题?五种方法快速解决
在计算机使用过程中,我们常常会遇到一些错误提示,其中之一就是“D3DCompiler_43.dll缺失”。这个错误通常会导致游戏、应用程序或系统无法正常运行。为了解决这个问题,我们需要采取一些修复方案来恢复缺失的文件。本文将介绍五个修复D3DCompi…...
mongodb数据迁移的方法
这个方法只能将数据从一个mongo数据库转移到另一个mongo数据库 这个命令可以备份mongo数据(mongo数据库中的数据备份转换为文件) mongodump --host HOST --port PORT --username USERNAME --password PASSWORD --db DB -c COLLECTION --out OUT这个命令…...
Spring MVC 中文文档
1. Spring Web MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC” 来自其源模块的名称( spring-webmvc),但它更常被称为 “Spring MVC”。 与Spring Web MVC并…...
RedissonCach的源码流程
上: https://blog.csdn.net/Michelle_Zhong/article/details/126384566 中: https://blog.csdn.net/michelle_zhong/category_11874153.html 下: https://blog.csdn.net/Michelle_Zhong/article/details/126391915?ops_request_misc%257B%…...
spring-基于注解管理bean
基于注解管理bean 一、标记与扫描1、引入依赖2、创建spring配置文件3、创建组件4、扫描组件4.1、基本扫描:4.2、指定要排除的组件4.3、仅扫描指定组件 二、基于注解的自动装配 一、标记与扫描 1、引入依赖 <dependencies> <!-- 基于Maven依赖传递性&…...
数据挖掘(7.1)--数据仓库
目录 引言 一、数据库 1.简介 2.数据库管理系统(DBMS) 二、数据仓库 数据仓库特征 数据仓库作用 数据仓库和DBMS对比 分离数据仓库和数据库 引言 数据仓库的历史可以追溯到20世纪60年代,当时计算机领域的主要工作是创建运行在主文件上的单个应用࿰…...
Vue3问题:如何实现密码加密登录?前后端!
前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约3400字,整篇阅读大约需要6分钟。 本文主要内容分三部分,第一部分是需求分析,第二部分是实现步骤,第三部分是问题详解。 …...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
【Qt】控件 QWidget
控件 QWidget 一. 控件概述二. QWidget 的核心属性可用状态:enabled几何:geometrywindows frame 窗口框架的影响 窗口标题:windowTitle窗口图标:windowIconqrc 机制 窗口不透明度:windowOpacity光标:cursor…...
作为点的对象CenterNet论文阅读
摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...
华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手
华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...
