Windows10下ChatGLM2-6B模型本地化安装部署教程图解

news2024/11/28 10:50:29

        随着人工智能技术的不断发展,自然语言处理模型在研究和应用领域备受瞩目。ChatGLM2-6B模型作为其中的一员,以其强大的聊天和问答能力备受关注,并且最突出的优点是性能出色且轻量化。然而,通过云GPU部署安装模型可能需要支付相应的费用,这对于一些开发者来说可能存在一定的压力。为了更灵活地使用该模型,掌握安装环境的知识并了解部署流程,以便快速尝鲜ChatGLM2-6B模型,将其本地化部署成为了许多开发者追求的目标。

        本文将为您提供一份详尽的教程,指导您在Windows 10操作系统下进行ChatGLM2-6B模型的本地化安装和部署,快速尝鲜ChatGLM2-6B模型。

目录

一、ChatGLM2-6B模型介绍

二、本地安装电脑配置要求

三、Cuda环境安装并检查是否安装成功

四、配置ChatGLM2-6B Conda虚拟环境

五、在虚拟环境中安装Pytorch

六、ChatGLM2-6B模型环境安装及模型下载

七、ChatGLM2-6B模型代码运行及本地大模型初体验

八、小结

一、ChatGLM2-6B模型介绍

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:

  1. 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
  2. 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
  3. 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
  4. 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用

链接源码地址:

GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型 - GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型https://github.com/THUDM/ChatGLM2-6B推理性能:

ChatGLM2-6B 使用了 Multi-Query Attention,提高了生成速度。生成 2000 个字符的平均速度对比如下:

Model推理速度 (字符/秒)
ChatGLM-6B31.49
ChatGLM2-6B44.62

使用官方实现,batch size = 1,max length = 2048,bf16 精度,测试硬件为 A100-SXM4-80G,软件环境为 PyTorch 2.0.1

        Multi-Query Attention 同时也降低了生成过程中 KV Cache 的显存占用,此外,ChatGLM2-6B 采用 Causal Mask 进行对话训练,连续对话时可复用前面轮次的 KV Cache,进一步优化了显存占用。因此,使用 6GB 显存的显卡进行 INT4 量化的推理时,初代的 ChatGLM-6B 模型最多能够生成 1119 个字符就会提示显存耗尽,而 ChatGLM2-6B 能够生成至少 8192 个字符。

量化等级编码 2048 长度的最小显存生成 8192 长度的最小显存
FP16 / BF1613.1 GB12.8 GB
INT88.2 GB8.1 GB
INT45.5 GB5.1 GB

二、本地安装电脑配置要求

python版本要求:3.8以上,可在Anaconda中安装Python虚拟环境。

windows系统:Windows 10及以上,推荐有NVIDIA显卡(最好NVIDIA显卡20系列以上)

显卡要求:显存必须6G以上GPU(可以看到上面表格中,量化等级INT4,也需要5.1G显存以上)

检查自己的电脑是否有GPU及显存大小:

        鼠标右击电脑最下方任务栏,选中“任务管理器”选项,即可打开任务管理器,再点击“性能”,如下图:

        我本地电脑的显卡是NVIDIA GTX 1060 6G显存GPU ,16G内存,处理器i7-8750H CPU,刚好满足要求。想想部署成功后的测试画面就很卡。。。。。。

三、Cuda环境安装并检查是否安装成功

        上面检查本地PC电脑配置,刚好满足部署ChatGLM2-6B的最低要求。所以,自己搭建本地模型,尝试体验一下,不需要拥有高端设备或庞大的计算能力来开始使用ChatGLM2-6B模型。只要你的本地PC电脑达到了ChatGLM2-6B模型的最低要求,就可以轻松安装和部署这一强大的聊天模型。

1、Cuda环境安装

cuda下载链接:

CUDA Toolkit Archive | NVIDIA DeveloperPrevious releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production drivers appropriate for your hardware configuration.https://developer.nvidia.com/cuda-toolkit-archive

点击链接,即可进入该界面(我本地安装的是CUDA Toolkit 11.7.0,因为我的显卡只支持我安装Cuda Version 12.0以下的):

 接着点击CUDA Toolkit 11.7.0,进入以下界面,选择windows10,exe(local)本地下载,然后点击Download即可。

 下载完成后进行安装cuda。

具体安装教程可上网查找,这里推荐一个:

CUDA安装教程(超详细)_Billie使劲学的博客-CSDN博客目录前言cuda的下载及安装cuda版本CUDA toolkit Downloadcuda安装cuDNN下载及安装cuDNN下载cuDNN配置参考自前言windows10 版本安装 CUDA ,首先需要下载两个安装包CUDA toolkit(toolkit就是指工具包)cuDNN注:cuDNN 是用于配置深度学习使用官方教程CUDA:Installation Guide Windows :: CUDA Toolkit Documentatio_cuda安装https://blog.csdn.net/m0_45447650/article/details/123704930

2、检查Cuda是否安装成功

按住win + R 调出命令终端,输出cmd:

 1)进入终端后,输入 nvidia-smi 查看是否已正确安装:

nvidia-smi

如果返回以下信息,则CUDA已正确安装并可以被系统识别: 

         如果返回类似“command not found”的信息,则CUDA没有成功安装或者没有正确添加环境变量。

        查看到本机可装CUDA版本最高为12.0,版本向下兼容,意思就是CUDA 12.0及以下版本的都可以安装,但一般不建议使用最新版本的,所以本地下载的是Cuda11.7版本。

2)或者输入 nvcc -V命令,测试CUDA是否安装成功

nvcc -V

 如果返回类似“command not found”的信息,则CUDA没有成功安装或者没有正确添加环境变量。

四、配置ChatGLM2-6B Conda虚拟环境

Python 环境:使用Anaconda创建虚拟环境mygpt,虚拟环境的Python版本是Python3.10.11,激活虚拟环境activate mygpt,进入之后安装相对应的工具包即可。

 (注:如果不会安装Anaconda,并在Anaconda中创建虚拟环境,百度找下教程,网上一大堆)

五、在虚拟环境中安装Pytorch

激活虚拟环境之后,首先在命令行输入下面命令即可:

注意这里的Pytorch需要和cuda版本一致,我上面下载的是cuda11.7;还有注意如果你的cuda版本和我不一致,以下命令也有差异。具体看官网命令,以对应版本官网命令为准。

Pytorch地址:

Start Locally | PyTorch An open source machine learning framework that accelerates the path from research prototyping to production deployment.https://pytorch.org/get-started/locally/#anaconda

 绿色方框中就是安装命令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

 安装完成后,检查一下:

import torch
print(torch.cuda.is_available())

 如果结果为True,则说明Pytorch安装成功。如果为False,则说明自己电脑上对应cuda版本和torch、torchvision版本文件不一致。

如何解决在cuda上安装torch后torch.cuda.is_available()返回False - 知乎

六、ChatGLM2-6B模型环境安装及模型下载

1、ChatGLM2-6B源码下载

1)方法一:源码下载链接:

GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型

注:Github网站不稳定,有时需要科学上网。

 如上图,点击下载Download ZIP即可下载ChatGLM2-6B源码,大概5-6M左右。

2)方法二:直接使用git命令clone (这个需要安装Git软件)

git clone https://github.com/THUDM/ChatGLM-6B.git

下载完成之后,将下载好的文件放到本地D盘或者其他盘,尽量不要放C盘。 

再在该路径下(ChatGLM2-6B-main文件夹下)新建一个model文件,用于放ChatGLM2-6B模型文件,大小11.6G。

2、ChatGLM2-6B模型下载

模型下载地址1:清华大学云盘

THUDM/chatglm-6b at main模型下载地址2:THUDM/chatglm-6b at main,(全部下载)

下载完成后,将下载后的模型文件放入到ChatGLM2-6B-main\model文件夹中:

 3、requirements.txt中相关库安装

进入到D:\Pycharmproject2023\ChatGPT_Pre\ChatGLM2-6B-main目录下,执行以下命令,进行安装相关包:

pip3 install -r requirements.txt

 直到现在,所有环境全部安装完成,胜利在望。。。

七、ChatGLM2-6B模型代码运行及本地大模型初体验

1、修改web_demo.py代码

在运行之前,需修改web_demo.py中的代码

下载下来的源代码,在web_demo.py文件中的第6-7行:

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device='cuda')

修改为:

tokenizer = AutoTokenizer.from_pretrained("D:\Pycharmproject2023\ChatGPT_Pre\ChatGLM2-6B-main\model", trust_remote_code=True)
model = AutoModel.from_pretrained("D:\Pycharmproject2023\ChatGPT_Pre\ChatGLM2-6B-main\model", trust_remote_code=True).half().quantize(4).cuda()

 其中D:\Pycharmproject2023\ChatGPT_Pre\ChatGLM2-6B-main\model为我电脑模型下载位置,更改为你自己的即可。

half().quantize(4).cuda()这个需要根据你电脑实际显卡GPU进行更改。

温馨提示:

        根据实际显卡显存 (如何看自己的显存,前面我已经讲过了,自己的显存要和下面代码对应,不对应就会报错并且烧坏显卡,注意注意!!),可以更改第6行关于model运行方式:

# 6G 显存可以 4 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()

# 10G 显存可以 8 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()

# 14G 以上显存可以直接不量化,博主显存为16G选择的就是这个
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().cuda()

我电脑配置只能选择第一个,即6G 显存可以 4 bit 量化。

2、运行启动ChatGLM2-6B模型

进入到环境中,运行python web_demo.py即可启动,稍等一下:

 接着浏览器会自动打开Web界面:

 

3、ChatGLM2-6B模型测试体验

 在ChatGLM2-6B生成答案时,我看到我的显存占用情况,大概5G显存左右:

 生成答案的时候确实卡卡卡卡卡卡,不流畅,电脑就这配置,只能熟悉一下安装流程和简单体验一下。

八、小结

        本文旨在为读者提供一份详尽的教程,指导读者在Windows 10操作系统下进行ChatGLM2-6B模型的本地化安装和部署。总结如下:

  1. 确认模型要求:在开始之前,了解ChatGLM2-6B模型的基本要求对于成功地进行本地化部署是至关重要的。确保您的本地PC电脑满足这些要求,包括适当的硬件配置和操作系统版本。

  2. 配置GPU环境:为了充分利用本地GPU资源加速模型运行,确保正确配置GPU环境。这包括安装适当的GPU驱动程序和CUDA工具包,并配置相应的环境变量。

  3. 安装必要软件和依赖库:在进行模型安装之前,确保已正确安装Python环境,并根据需要安装必要的软件和依赖库。这包括PyTorch等库,以及其他必需的辅助工具。

  4. 加载和使用模型:一旦完成安装和配置,就可以下载ChatGLM2-6B源程序和大模型参数文件,运行并体验使用ChatGLM2-6B模型。

  5. 优化和调试:可以基于本地知识库问答进行微调模型,大家自行探索预研。

        总结起来,通过本文所提供的详细教程,希望你们可以轻松地进行ChatGLM2-6B模型的本地化部署,并深入了解其优秀的聊天和问答能力。本地化部署为开发者提供了更大的灵活性和控制力,使得能够更好地应对各种需求和挑战。无论为了更灵活地使用该模型,掌握安装环境的知识并了解部署流程,以便快速尝鲜ChatGLM2-6B模型,还是为了探索自然语言处理模型的潜力,本地化部署都是一个值得尝试的选择。请按照本文提供的教程,开始您的ChatGLM2-6B模型之旅吧!

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

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

相关文章

手把手带你创建微服务项目

1.先创建以下项目结构 2.在父项目中导入以下依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Web依赖 --><dependency>&l…

关于Java集合框架的总结

关于Java集合框架的总结 本篇文章先从整体介绍了java集合框架包含的接口和类&#xff0c;然后总结了集合框架中的一些基本知识和关键点&#xff0c;并结合实例进行简单分析。当我们把一个对象放入集合中后&#xff0c;系统会把所有集合元素都当成Object类的实例进行处理。从JDK…

分享四款导航页 个人主页html源码

一、开源免费&#xff0c;可以展示很多社交账号&#xff0c;也可以更换社交账号图标指向你的网站&#xff0c;上传后即可使用 https://wwwf.lanzout.com/ik7R912s031g 二、开源免费&#xff0c;不过部署稍微麻烦点 https://wwwf.lanzout.com/iCq2u12s02wb 三、适合做成导航页面…

Android性能优化篇[谷歌官方]

网上看到了个和Android性能优化相关的系列文章&#xff0c;觉的还不错&#xff0c;和大家分享下。 在Android领域&#xff0c;性能永远是一块大头。市场对这类人才的需求也是有增不减&#xff0c;而且薪资待遇也不错。如果大家想深入学习Android某个领域&#xff0c; 那性能这块…

190 → 169,50天瘦20斤随感

一头猪瘦二十斤没有人会在意&#xff0c;但一个人猛地瘦二十斤或许就会有意思~ 从五月底到7月中旬&#xff0c;大致50天瘦了21斤。本文大致从我自己的感想、方法、减肥前后的心态及身体变化等方面来给予你一些关键信息&#xff0c;希望对你有用吧。 当你发现自己真的在一斤一斤…

react CSS :last-child 最后一个下边框线如何去掉

需求&#xff1a;调用分类接口后&#xff0c;tab的最后一个border不要横线。 代码如下 逻辑是 i是否等于books数组的长度-1。 books.map((book, i) > { return( <View style{borderBottom:idx ! dictype.length - 1 && "1px solid #ECEFF7"} key…

CentOS7 mariadb10.x 安装

1、添加mariabd yum源 vi /etc/yum.repos.d/mariadb.repo [mariadb] name MariaDB baseurl https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.5/centos7-amd64/ gpgkey https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck 12、建立yum…

EMC学习笔记(十六)射频PCB的EMC设计(三)

射频PCB的EMC设计&#xff08;三&#xff09; 1.布线1.1 阻抗控制2.2 转角1.3 微带线布线1.4 微带线耦合器1.5 微带线功分器1.6 微带线基本元件1.7 带状线布线1.8 射频信号走线两边包地铜皮 2.其他设计考虑 1.布线 1.1 阻抗控制 PCB信号走线的阻抗与板材的介电常数、PCB结构、…

【山河送书第二期】:《零基础学会Python编程(ChatGPT版》

【山河送书第二期】&#xff1a;《零基础学会Python编程&#xff08;ChatGPT版》 前言内容简介作者简介 前言 在过去的 5 年里&#xff0c;Python 已经 3 次获得 TIOBE 指数年度大奖&#xff0c;这得益于数据科学和人工智能领域的发展&#xff0c;使得 Python 变得异常流行&am…

电脑pdf怎么转换成word文档?你不知道的几种方法

在电脑上&#xff0c;我们经常需要查阅PDF文件&#xff0c;并且PDF文件在生活中应用广泛&#xff0c;可以保存许多重要内容。有时候我们需要将PDF文件转换为Word文档&#xff0c;以便对文件内容进行编辑。幸运的是&#xff0c;在电脑上将PDF转换为Word文档非常方便&#xff0c;…

nginx实现反向代理

Nginx Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强。Nginx可以作为静态页面的web服务器&#xff0c;同时还支持CGI协议的动态语言&#xff0c;比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合…

生命在于折腾——MacOS(Inter)渗透测试环境搭建

一、前景提要 之前使用的是2022款M2芯片的MacBook Air 13寸&#xff0c;不得不说&#xff0c;是真的续航好&#xff0c;轻薄&#xff0c;刚开始我了解到M芯片的底层是ARM架构&#xff0c;我觉得可以接受&#xff0c;虚拟机用的不多&#xff0c;但在后续的使用过程中&#xff0…

《MySQL》事务

文章目录 概念事务的操作属性&#xff08;aicd&#xff09; 概念 一组DML语句&#xff0c;这组语句要一次性执行完毕&#xff0c;是一个整体 为什么要有事务&#xff1f; 为应用层提供便捷服务 事务的操作 有一stu表 # 查看事务提交方式(默认是开启的) show variables like au…

智能照明及控制系统在医院建筑中的应用

摘要&#xff1a;现阶段&#xff0c;我国的社会经济的发展水平不断提高&#xff0c;为智能照明系统的发展带来了新的契机。文章主要介绍了几类智能照明系统&#xff0c;分析了其优点&#xff0c;并介绍了智能照明系统在医院建筑中的具体应用&#xff0c;具有一定的参考价值。 …

数据结构顺序表,实现增删改查

一、顺序表结构体定义 #define MAXSIZE 8 //定义常量MAXSIZE&#xff0c;表示数据元素的最大个数为8 typedef int datatype; //重定义int类型&#xff0c;分别后期修改顺序表中存储的数据类型 typedef struct {int len; //顺序表长度datatype data[MAXSIZE…

微服务架构介绍 - SpringCloud Alibaba

1. 单体架构vs微服务架构 1.1 单机架构 1.1.1 什么是单体架构 一个归档包&#xff08;例如war格式&#xff09;包含了应用所有功能的应用程序&#xff0c;我们通常称之为单体应用。架构单体应用的方法论&#xff0c;我们称之为单体应用架构。&#xff08;就是一个war包打天下&a…

Service:微服务架构的应对之道

Service 的工作原理和 LVS、Nginx 差不多&#xff0c;Kubernetes 会给它分配一个静态 IP 地址&#xff0c;然后它再去自动管理、维护后面动态变化的 Pod 集合&#xff0c;当客户端访问 Service&#xff0c;它就根据某种策略&#xff0c;把流量转发给后面的某个 Pod。 Service 使…

小程序form表单验证,validate 在更新数据以后不能验证?还是提示同样的错误

报错&#xff1a; 一直报手机号码必须填写&#xff0c;但是我已经填写了。 解决&#xff1a; 花了2个小时&#xff0c;最后发布是模式models写错了。 改完之后&#xff0c;终于提示别的错误了&#xff1a; 源码&#xff1a; //wxml <view class"welcome">欢…

一款挖掘xss漏洞的工具

xsshelp 闲着没事随便写的一个辅助挖掘xss漏洞的工具&#xff08;主要手懒为了省事&#xff0c;就把每回挖xss的一个比较好用的思路简单给用工具实现了下&#xff09; xsshelp version: 1.0.0Usage: [-ut] [-u url] [-t thread] [-h help]Options: -h this help -t intth…

一文搞清楚专利申请全部流程

专利检索网站&#xff1a;https://pss-system.cponline.cnipa.gov.cn/conventionalSearch 一、专利的相关概念 专利包含三种含义&#xff1a;1.专利权2.受到专利保护的发明创造3.专利文献 专利的类别&#xff1a;1.发明2.实用新型3.外观设计&#xff08;具体含义自行上网查询…