Windows 环境部署 ChatGLM2-6b 入门教程

ops/2024/10/16 2:27:09/

介绍

ChatGLM2-6B是智谱AI及清华KEG实验室发布的中英双语对话模型,它是 ChatGLM-6B 的第二代版本。

主要特点:

  • 性能提升:ChatGLM2-6B 在初代模型的基础上进行了全面升级,使用了 GLM 的混合目标函数,并经过了 1.4T 中英标识符的预训练与人类偏好对齐训练。在多个数据集上的性能相较于初代模型有了显著提升,例如在 MMLU 上提升了 23%,在 CEval 上提升了 33%,在 GSM8K 上提升了 571%,在 BBH 上提升了 60%。

  • 更长的上下文处理能力:利用 FlashAttention 技术,ChatGLM2-6B 的上下文长度从 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度进行训练,这允许了更多轮次的对话。

  • 高效的推理速度:基于 Multi-Query Attention 技术,ChatGLM2-6B 拥有更高效的推理速度和更低的显存占用。与初代模型相比,推理速度提升了 42%,在 INT4 量化下,6G 显存支持的对话长度从 1K 提升到了 8K。

  • 开放的协议:ChatGLM2-6B 的权重对学术研究完全开放,并在获得官方书面许可后允许商业使用。

  • 部署和使用:ChatGLM2-6B 支持在多种硬件和软件环境下部署,包括 GPU 和 CPU 环境。模型也可以通过量化来减少对硬件资源的需求。

  • 模型量化:模型提供了不同精度的版本,包括 FP16、INT4 等,以适应不同的部署需求和硬件限制。

  • 多卡部署:如果用户有多个 GPU,ChatGLM2-6B 支持模型在多张 GPU 上进行切分和部署,以解决单张 GPU 显存不足的问题。

  • 开源社区:ChatGLM2-6B 旨在与开源社区共同推动大模型技术的发展,并鼓励开发者遵守开源协议。

  • 模型微调:提供了使用 P-Tuning v2 对 ChatGLM2-6B 进行参数微调的方法,以适应特定的应用场景。

  • 模型架构:ChatGLM2-6B 采用了 Prefix Decoder-only 架构,综合了单项注意力和双向注意力的优点。

  • 模型容量和多轮对话能力:虽然 ChatGLM2-6B 在多维度上有所提升,但相比于更大容量的模型,其在长答案生成和多轮对话场景下可能存在一定的局限性。

  • 模型开源信息:模型的代码和权重已在 GitHub 和 ModelScope 等平台上开源,供学术研究和商业使用。

代码参考

目前在git上已经获星15.5k,算是一款比较火爆的开源中英文对话模型。
git地址:https://github.com/THUDM/ChatGLM2-6B
在这里插入图片描述

windows平台搭建部署ChatGLM2-6b过程

  1. 代码下载:git clone https://github.com/yanceyxin/ChatGLM2-6B.git

  2. cd 到 ChatGLM2-6B文件目录,打开README.md,解读配置过程,根据README.md进行部署;
    在这里插入图片描述

  3. 激活到自己的配置的conda虚拟环境:conda activate deeplearning
    在这里插入图片描述

  4. 在 ChatGLM2-6B文件目录下,使用 pip 安装依赖:pip install -r requirements.txt,其中 transformers 库版本推荐为 4.30.2torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能。【该过程相对比较慢,即使设计科学上网也要一段时间】
    在这里插入图片描述

  5. 报错了:不能安装“TBB”,查资料解决吧。
    在这里插入图片描述
    查找资料,是给ananconda 升级 mkl 包的错误,删掉Anaconda3\Anaconda3\Lib\site-packagesTBB-0.2-py3.11.egg-info文件,重新pip install -r requirements.txt,即成功;
    在这里插入图片描述

  6. 安装成功在这里插入图片描述

  7. 根据自己的设备能力修改demo中模型量化精度,用GPU可以选择低成本模型,修改如下代码为int4精度;
    model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True).cuda()
    在这里插入图片描述

  8. 当前目录下用Python运行web_demo.py,接近4G数据,又是漫长的下载等待时间,即使科学上网也要相对长的时。放弃,选择手动下载,如步骤8中。在这里插入图片描述

  9. 建议可以手动下载模型,根据自己本地设备的能力选择相应精度的模型,放到源码相应目录里。网址:https://huggingface.co/THUDM/chatglm2-6b-int4/tree/main
    在这里插入图片描述

  10. 在文件目录新建目录THUDM\chatglm2-6b-int4,将手动下载的模型放到里。
    在这里插入图片描述

demo使用

命令行版cli_demo.py

(1)打开cli_demo.py文件,修改模型为精度为int4,对应着上一步新建的模型目录。
在这里插入图片描述
(2)启动demo,运行:python cli_demo.py;又报错了,提示没有readline
在这里插入图片描述
(3)安装readline:pip install readline,依旧报错,查资料,遇到这个问题是因为尝试在Windows环境中安装readline模块,但readline是一个主要用于Unix-like系统的库,不原生支持Windows。Python在Windows上的标准安装包含一个名为pyreadline的替代模块,该模块旨在模仿readline的一些功能。
在这里插入图片描述
(4)安装pyredline: pip install pyreadline,安装成功。
在这里插入图片描述
(5)将文件cli_demo.pyreadline修改成import pyreadline
在这里插入图片描述

(6)继续启动demo:python cli_demo.py,进行如下图对话,成功💪,GPU版本AI回答还算比较快。
在这里插入图片描述

web版本web_demo.py

(1)同样的,修改web_demo.py中模型精度为int4。
在这里插入图片描述

(2)启动demo:python web_demo.py;又报错,提示:AttributeError: 'Textbox' object has no attribute 'style'. Did you mean: 'scale'?,查资料gradio版本太高,卸载当前版本,安装旧一点的版本,命令:pip uninstall gradio、pip install gradio==3.50.0
在这里插入图片描述
在这里插入图片描述
(3)启动demo:python web_demo.py;在浏览器弹出如下界面。
在这里插入图片描述
(4)但公网无法访问,如果公网想访问,修改web_demo.py最后一行代码,将share=False修改为share=True
在这里插入图片描述
(5)重新启动demo:python web_demo.py,试用,如下,成功💪,但默认启动项目会自动从线上远程下载模型文件,能正常启动,但也无法形成对话;还是老实用命令行demo吧。
在这里插入图片描述

web版本web_demo2.py

(1)该版本是启动基于 Streamlit 的网页版 demo,项目README.md中介绍该版本的网页版demo更流畅。
在这里插入图片描述
(2)修改web_demo2.py中模型路径为本地int4模型路径THUDM\chatglm2-6b-int4
在这里插入图片描述
(3)启动demo:streamlit run web_demo2.py,在浏览器中出现如下,进行试用对话,成功💪;但好像智商一般,看来int4的模型精度还是不太行,只能进行简单问题的对话。
在这里插入图片描述

参考

  1. Windows11搭建GPU版本PyTorch环境详细过程

http://www.ppmy.cn/ops/23312.html

相关文章

elementUi中el-date-picker;两个日期选择器第二个必须在第一个之后

<el-row><el-col :span"12"><el-form-item label"实际开始日期" style"margin-top: 10px;" proprealBeginDate><el-date-picker v-model"pmTaskProgressFeedback.realBeginDate" type"date" placehold…

AIGC技术带来的安全与隐私问题探讨

如何看待AIGC技术&#xff1f; 简介&#xff1a;探讨AIGC技术的发展现状和未来趋势。提醒&#xff1a;在发布作品前&#xff0c;请把不需要的内容删掉。 方向一&#xff1a;技术应用 机遇和挑战 AIGC国内场景应用图谱 方向二&#xff1a;伦理与风险 垄断与隐私风险 AI民主化诉…

python 调用 llama

参考&#xff1a; https://blog.51cto.com/u_16175437/9317548 方法一&#xff1a; 要在Python中调用Llama.ai模型来生成回答&#xff0c;你可以使用transformers库&#xff0c;它提供了调用不同的预训练模型的接口。以下是一个简单的例子&#xff0c;展示了如何使用transform…

疯狂的爬虫案例(2)文末附源码

软件版本号&#xff1a; python --version Python 3.8.0 pip show selenium Version: 4.20.0 chromedriver.exe -version 109.0.5414.74 主题&#xff1a;爬取10条动态网页内容&#xff08;电影票房&#xff09; 1.根据xpath获取网页节点&#xff08;CtrlF&#xff09; 2.…

javaWeb项目-医药进出口交易系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java技术 Java是…

Android kotlin 协程异步async与await介绍与使用

一、介绍 在kotlin语言中&#xff0c;协程是一个处理耗时的操作&#xff0c;但是很多人都知道同步和异步&#xff0c;但是不知道该如何正确的使用&#xff0c;如果处理不好&#xff0c;看似异步&#xff0c;其实在runBloacking模块中使用的结果是同步的。 针对如何同步和如何异…

应用回归分析,R语音,逐步回归法,第5章

library(readr) data3_1 <- read_csv("data3.1.csv")View(data3_1) lm5<-lm(y~.,data=data3_1) lm6<-step(lm5,direction = "both") summary(lm6) 输出: Start: AIC=377.73 y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9Df Sum of Sq …

R语言--图形绘制

一&#xff0c;绘制简单图形 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb) 具体参数请参考R语言中的绘图技巧1&#xff1a;plot()函数参数汇总_r语言plot参数设置-CSDN博客 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb,col#…