清华大模型ChatGLM3部署初体验

648798b6995013ee7f40cfe10a136f72.gif

正文共:1555 字 17 图,预估阅读时间:2 分钟

ChatGLM3是智谱AI和清华大学KEG实验室联合发布的对话预训练模型。该项目在GitHub的工程链接为:

https://github.com/THUDM/ChatGLM3

在人工智能领域中,类似“3B”、“6B”、“12B”的表述通常指的是大语言模型所具有的参数数量,参数数量是衡量现代深度学习模型规模和复杂性的一个关键指标,这里的“B”代表“十亿”(billion)。比如,ChatGLM3-6B是ChatGLM3系列中的开源模型,这里的6B意味着该模型具有大约60亿个参数。在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B引入了如下特性:

1、更强大的基础模型:ChatGLM3-6B的基础模型ChatGLM3-6B-Base采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base具有在10B以下的基础模型中最强的性能

2、更完整的功能支持:ChatGLM3-6B采用了全新设计的Prompt格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和Agent任务等复杂场景。

3、更全面的开源序列:除了对话模型ChatGLM3-6B外,还开源了基础模型ChatGLM3-6B-Base、长文本对话模型ChatGLM3-6B-32K和进一步强化了对于长文本理解能力的ChatGLM3-6B-128K。项目中介绍,以上所有权重对学术研究完全开放,在填写问卷登记后亦允许免费商业使用。

ChatGLM3模型推荐使用Conda和PyTorch进行部署和使用,正好我们已经部署好了成了!Tesla M4+Windows 10+Anaconda+CUDA 11.8+cuDNN+Python 3.11

因为需要使用Git来克隆项目,我们先安装Git命令。访问以下页面,按需选择需要的系统及软件版本:

https://git-scm.com/downloads

1adb091b57948061d72b2792b319d527.png

Windows版的下载链接如下:

https://github.com/git-for-windows/git/releases/download/v2.44.0.windows.1/Git-2.44.0-64-bit.exe

下载完成之后,按照推荐提示完成Git的安装。在Git安装过程中,确保选择选项将Git添加到系统PATH环境变量中。

c0444f4133719856362e4a64a780e20f.png

安装完成后,打开Anaconda。首先,新创建一个ChatGLM3环境,Python需要使用3.10或更高版本,我们使用3.11.8版本。

80d610576d5ebed47d55b2b3f6c2bcd6.png

启动Terminal终端。

a9cd1a7905d33eeb8519842a335699fb.png

激活环境ChatGLM3环境,并下载ChatGLM3项目。

conda activate ChatGLM3
git clone https://github.com/THUDM/ChatGLM3

cbaa42aba799c937e4e004cca493c377.png

然后进入到项目中,使用pip安装依赖软件:

cd ChatGLM3
pip install -r requirements.txt

eea0b6172b73b2a8e59c1425dcc830aa.png

安装完成后,运行以下命令在本地加载模型并启动demo:

streamlit run main.py

6358b11aa8754e313565bd0e3b92308d.png

然后就可以从命令行回显中看到demo的链接了,默认可以自动打开目标页面,也可以手动输入到浏览器进行访问。

e0e726be9125a2accadcf0bf5957d7c0.png

初次访问需要下载并加载模型,可能需要花费一定时间(访问https://huggingface.co/可能需要互联网,请自行联网)。关键的模型文件一共是7个,共12.5 GB,大小分别为1.83 GB、1.97 GB、1.93 GB、1.82 GB、1.97 GB、1.93 GB、1.05 GB。

ead69bc87451f1ba69ff7c8c2785c49b.png

或者先将模型下载到本地,再通过export MODEL_PATH=/path/to/model命令来指定从本地加载模型。具体参考以下链接:

https://huggingface.co/docs/transformers/installation#offline-mode

等加载完成即可进入到ChatGLM3 Demo页面。

c706aa0ff1a673bed323645919b00393.png

从页面可以看到,ChatGLM3 Demo 拥有三种模式:

Chat:对话模式,在此模式下可以与模型进行对话。

Tool:工具模式,模型除了对话外,还可以通过工具进行其他操作。

Code Interpreter:代码解释器模式,模型可以在一个Jupyter环境中执行代码并获取结果,以完成复杂任务。使用Code Interpreter还需要安装Jupyter内核:

ipython kernel install --name ChatGLM3 --user

首先是对话模式,我们可以通过调节top_p(控制生成的文本的多样性)、temperature(控制模型生成文本的创造性或随机性)、repetition_penalty(惩罚模型生成重复的内容)和Output length(生成文本的最大长度)等参数来调整模型行为。

33922740aa074ca1b3324deade508643.png

实际上用起来体验较差,肯定是服务器配置过低的原因,导致响应时间巨长,一直处于运行状态,但迟迟没有结果。

f52284c255cadcc3eb06cd5dc640359b.png

对应的,命令行也会展示前端的交互过程,但就是没有响应。

按照文档提示:默认情况下,模型以FP16精度加载,运行上述代码需要大概13GB显存。而我的Tesla M4只有4 GB显存,肯定是不够了;不过,我也不知道这个模型是什么情况,没有运行在GPU上面,也就没有出现显存不够的报错信息了。

6155a3527761541722681136fd20c0b8.png

而且,它好像也没有加载到内存上面,内存的占用率也不高,只有CPU使用率稍微高一些。

44da5116be685cf3763fc97b29b2c2e4.png

但也不是一直高,一直在波动,我也不知道到底在没在运算。

一句hello就计算了十分钟。

991f9634c0bf49f03ed4a2d2d310ec9c.png

按照文档提示,如果显存不够的话,可以尝试以量化方式加载模型,使用方法如下:

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好吗?", history=[])
print(response)

fe9e45a55e443715d1b427e6ea683067.png

结果还是失败了。

按照官方说法,模型量化会带来一定的性能损失,但官方测试ChatGLM3-6B在4-bit量化下仍然能够进行自然流畅的生成。不过,为了能够流畅运行Int4版本的ChatGLM3-6B,官方建议GPU显存的最低配置要求为5 GB,对应GTX1060(6 GB)、GTX2060(6 GB)等显卡。

但是加载过程中,内存占用还是达到了12 GB,所以前面似乎是没有加载成功。

9ed2d1142cd9f1d399b06342e2606f1f.png

不换设备怕是难成大事啊!为此,我已经紧急加购了Tesla P4显卡,有8 GB显存,性能大约提升160%,期待它的精彩表现吧。

最后,分享一下ChatGLM3的在线文档:

https://zhipu-ai.feishu.cn/wiki/WvQbwIJ9tiPAxGk8ywDck6yfnof

a35915db2f536a08d5c39c7d269c7c4e.gif

长按二维码
关注我们吧

323db923f07fecb8e905f00b6d952c4a.jpeg

035b7e9941875de24b2ea25d0ba39c27.png

成了!Tesla M4+Windows 10+Anaconda+CUDA 11.8+cuDNN+Python 3.11

CentOS 7.9安装Tesla M4驱动、CUDA和cuDNN

MX250笔记本安装Pytorch、CUDA和cuDNN

复制成功!GTX1050Ti换版本安装Pytorch、CUDA和cuDNN

人工智能如何发展到AIGC?解密一份我四年前写的机器学习分享材料

一起学习几个简单的Python算法实现

GPU性能测试中的张量和矩阵运算

IPv6从入门到精通

SRv6典型配置

付出总有回报,全国SRv6组网实验成功了!

使用Python脚本实现SSH登录设备

配置VMware实现从服务器到虚拟机的一键启动脚本

L2TP访问失败?快看看是不是NAT网关的ALG搞的鬼

配置Juniper虚墙vSRX基于路由的IPsec VPN(CLI方式)

使用vSRX测试一下IPsec VPN各加密算法的性能差异

RDP授权119天不够用?给你的Windows Server续个命吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值