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及以上的卸载:

  1. cd /usr/local/cuda-xx.x/bin/

  2. sudo ./cuda-uninstaller

  3. sudo rm -rf /usr/local/cuda-xx.x  

 升级后apt-get upgrade有问题,还是卸载后重新安装了系统。

官网下载并安装对应版本CUDA
  1. 根据系统支持版本下载对应版本的CUDA Toolkit,为了后续的torch安装作者此处选择CUDA12.1。官网链接
  2. 没有用,还是从bin文件夹中卸载cuda-uninstaller
  3. 选择所需版本,通过对应命令进行下载安装(注意此处需要记住下载文件的目录,之后需要找到)

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中注意模型地址和微调模型地址

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows客户端下pycharm配置跳板机连接内网服务器

问题:实验室服务器仅限内网访问,无法在宿舍(外网)访问实验室的所有内部服务器,但同时实验室又提供了一个外网可以访问的跳板机,虽然可以先ssh到跳板机再从跳板机ssh到内网服务器,但这种方式不方…

Unity DOTS系列之Filter Baking Output与Prefab In Baking核心分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Baking核心机制,方便大家上手学习掌握Unity DOTS开发。今天给大家分享的Baking机制中的Filter Baking Output与Prefab In Baking。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础…

Linux区分文件类型,file指令,目录权限,umask掩码,共享文件,Linux中的一些有趣指令

file指令,Linux区分文件类型,目录权限,umask掩码,共享文件,Linux中的一些有趣指令 1.Linux中是如何区分文件类型的2. file指令3.目录权限4.umask掩码5.粘滞位6.Linux中的一些有趣指令 所属专栏:Linux学习❤…

海外广告投放保姆级教程,如何使用Quora广告开拓新流量市场?

虽然在Quora 上学习广告相对容易,但需要大量的试验和错误才能找出最有效的方法。一些广告技巧可以让您的工作更有效率。这篇文章将介绍如何有效进行quora广告投放与有价值的 Quora 广告要点,这将为您节省数万美元的广告支出和工作时间!往下看…

中国技术的对外输出:Telegram也开始搞小程序应用了

Telegram 宣布为其开发者提供了一项“能够在其中运行迷你应用”的新功能( 迷你应用即 Mini App,下文中以“小程序”代替)。 在 Telegram 的博客中,开发人员介绍可以使用 JavaScript 构建自己的迷你应用 在一篇博客文章中&#xf…

原型制作的软件 Experience Design mac( XD ) 中文版软件特色

​XD是一个直观、功能强大的UI/UX开发工具,旨在设计、原型、用户之间共享材料以及通过数字技术进行设计交互。Adobe XD提供了开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。xd mac软件特色 体验设计的未来。 使用 Adobe XD 中快速直观、即取即…

Office技巧(持续更新)(Word、Excel、PPT、PowerPoint、连续引用、标题、模板、论文)

1. Word 1.1 标题设置为多级列表 选住一级标题,之后进行“定义新的多级列表” 1.2 图片和表的题注自动排序 正常插入题注后就可以了。如果一级标题是 “汉字序号”,那么需要对题注进行修改: 从原来的 图 { STYLEREF 1 \s }-{ SEQ 图 \* A…

Unity读取写入Excel

1.在Plugins中放入dll,118开头的dll在Unity安装目录下(C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity) 2.写Excel public void WriteExcel(){//文件地址FileInfo newFile new FileInfo(Application.dataPath "/test.xlsx…

【前段基础入门之】=>CSS3新增渐变颜色属性

导语: CSS3 新增了,渐变色 的解决方案,这使得我们可以绘制出更加生动的炫酷的的配色效果 线性渐变 多个颜色之间的渐变, 默认从上到下渐变 background-image: linear-gradient(red,yellow,green); /*默认从上到下渐变*/默认从上…

uniapp实现webview页面关闭功能

实现思路: 1.关闭按钮是使用原生button添加的close属性。(见page.json页面) 2.监听关闭按钮的方法。(onNavigationBarButtonTap) 3.写实现关闭webview所有页面的逻辑。 废话不多说,直接上代码 1.page.…

SpringBoot集成Redis主从架构实现读写分离(哨兵模式)

一、前言 这里会使用到spring-boot-starter-data-redis包,spring boot 2的spring-boot-starter-data-redis中,默认使用的是lettuce作为redis客户端,也推荐使用lettuce,Redis使用哨兵集群,这里会通过lettuce连接到哨兵…

C++之Linux syscall实例总结(二百四十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

2023年清洁电器行业数据分析:洗地机市场规模持续倍增,进入赛点

洗地机作为清洁电器领域的明星品类,正在成为继扫地机器人之后拉动清洁电器市场大盘的又一核心动力。 在清洁电器领域,扫地机器人、洗地机和吸尘器是三大热门品类。截至今年9月份,根据鲸参谋平台的数据显示,吸尘器的规模继续大幅下…

2023年香水行业数据分析:国人用香需求升级,高端香水高速增长

在人口结构变迁的背景下,“Z世代”作为当下我国的消费主力,正在将“悦己”消费推动成为新潮流。具备经济基础的“Z世代”倡导“高颜值”、“个性化”、“精致主义”,这和香水、香氛为代表的“嗅觉经济”的特性充分契合,因此&#…

初始Redis 分布式结构的发展演变

目录 Redis的特点和使用场景 分布式系统的引入 单机系统 分布式系统 应用服务器的增多(处理更多的请求) 数据库读写分离(数据服务器的增多) 引入缓存 应对更大的数据量 业务拆分:微服务 Redis的特点和使用场景 我们先来…

vue重修之Vuex【下部】

文章目录 版权声明Vuex的模块化获取Vuex模块内state数据获取Vuex模块内getters数据获取Vuex模块内mutations方法获取模块内的actions方法总结 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利…

浮动面试题

浮动元素特点:

B-3:Web安全之综合渗透测试

B-3:Web安全之综合渗透测试 任务环境说明: 服务器场景:Server2104(关闭链接) 服务器场景用户名、密码:未知 1.通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为FLAG值提交; 通过访问IP/1,查看源代码发现flagishere,访问后发现什么也没…

Kafka - 异步/同步发送API

文章目录 异步发送普通异步发送异步发送流程Code 带回调函数的异步发送带回调函数的异步发送流程Code 同步发送API 异步发送 普通异步发送 需求&#xff1a;创建Kafka生产者&#xff0c;采用异步的方式发送到Kafka broker 异步发送流程 Code <!-- https://mvnrepository…

【STM32】HAL库ADC多通道精准测量(采用VREFINT内部参考电压)

【STM32】HAL库ADC多通道精准测量&#xff08;采用VREFINT内部参考电压&#xff09; 文章目录 多通道测量VREFINTADC采样周期多通道配置 附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作…