正文共: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
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环境变量中。
安装完成后,打开Anaconda。首先,新创建一个ChatGLM3环境,Python需要使用3.10或更高版本,我们使用3.11.8版本。
启动Terminal终端。
激活环境ChatGLM3环境,并下载ChatGLM3项目。
conda activate ChatGLM3
git clone https://github.com/THUDM/ChatGLM3
然后进入到项目中,使用pip安装依赖软件:
cd ChatGLM3
pip install -r requirements.txt
安装完成后,运行以下命令在本地加载模型并启动demo:
streamlit run main.py
然后就可以从命令行回显中看到demo的链接了,默认可以自动打开目标页面,也可以手动输入到浏览器进行访问。
初次访问需要下载并加载模型,可能需要花费一定时间(访问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。
或者先将模型下载到本地,再通过export MODEL_PATH=/path/to/model命令来指定从本地加载模型。具体参考以下链接:
https://huggingface.co/docs/transformers/installation#offline-mode
等加载完成即可进入到ChatGLM3 Demo页面。
从页面可以看到,ChatGLM3 Demo 拥有三种模式:
Chat:对话模式,在此模式下可以与模型进行对话。
Tool:工具模式,模型除了对话外,还可以通过工具进行其他操作。
Code Interpreter:代码解释器模式,模型可以在一个Jupyter环境中执行代码并获取结果,以完成复杂任务。使用Code Interpreter还需要安装Jupyter内核:
ipython kernel install --name ChatGLM3 --user
首先是对话模式,我们可以通过调节top_p(控制生成的文本的多样性)、temperature(控制模型生成文本的创造性或随机性)、repetition_penalty(惩罚模型生成重复的内容)和Output length(生成文本的最大长度)等参数来调整模型行为。
实际上用起来体验较差,肯定是服务器配置过低的原因,导致响应时间巨长,一直处于运行状态,但迟迟没有结果。
对应的,命令行也会展示前端的交互过程,但就是没有响应。
按照文档提示:默认情况下,模型以FP16精度加载,运行上述代码需要大概13GB显存。而我的Tesla M4只有4 GB显存,肯定是不够了;不过,我也不知道这个模型是什么情况,没有运行在GPU上面,也就没有出现显存不够的报错信息了。
而且,它好像也没有加载到内存上面,内存的占用率也不高,只有CPU使用率稍微高一些。
但也不是一直高,一直在波动,我也不知道到底在没在运算。
一句hello就计算了十分钟。
按照文档提示,如果显存不够的话,可以尝试以量化方式加载模型,使用方法如下:
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)
结果还是失败了。
按照官方说法,模型量化会带来一定的性能损失,但官方测试ChatGLM3-6B在4-bit量化下仍然能够进行自然流畅的生成。不过,为了能够流畅运行Int4版本的ChatGLM3-6B,官方建议GPU显存的最低配置要求为5 GB,对应GTX1060(6 GB)、GTX2060(6 GB)等显卡。
但是加载过程中,内存占用还是达到了12 GB,所以前面似乎是没有加载成功。
不换设备怕是难成大事啊!为此,我已经紧急加购了Tesla P4显卡,有8 GB显存,性能大约提升160%,期待它的精彩表现吧。
最后,分享一下ChatGLM3的在线文档:
https://zhipu-ai.feishu.cn/wiki/WvQbwIJ9tiPAxGk8ywDck6yfnof
长按二维码
关注我们吧
成了!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续个命吧!