【D】ChatGLM3纯windows环境本地部署成功记录2023.12.11
夜凉dyl
编辑于 2023年12月12日 20:11

写在前面:本人小白一枚,本篇仅为一次部署成功的记录,会尽可能把整个学习并部署的流程写清楚,望能帮助到一些和我一样想要本地部署的人。由于本人不是专业人士,更不了解专业术语,仅自学过python的部分语法,部署过程中遇到的一些问题解决了但也并非完全了解,如果大家在部署过程中遇到问题,可以评论区讨论,但可能得不到我本人的有效答复。

一、项目地址

https://github.com/THUDM/ChatGLM3

简介:ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型

ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型

二、本机配置

台式机,CPU:I7-6700,内存:2*8G,GPU:NVIDIA RTX3070(显存8G)

三、部署环境

1、使用anaconda3进行虚拟环境管理,好处是对不同的虚拟环境env进行隔离,不需要的时候可以很方便的移除,缺陷是新建env后要对依赖库重新安装,遇到一些下载较慢的会比较头疼。

anaconda3下载,推荐使用镜像源,比如https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

(版本选最新的就好,需要低版本python的时候,也可以在创建env的时候指定)

找.exe结尾的就行

anaconda3安装,建议优先考虑安装到非C盘的固态盘符中,因为在后续创建env并安装各种库的时候,占用存储空间可能较大。另外,安装过程中推荐勾选添加到环境变量

如果安装时没有勾选,手动去添加也完全可以,如下

安装完成后就可以去开始菜单处找到已经安装的软件(这里有一个带有Powershell的和一个不带的,不带的那个我的理解就是和cmd一样,两者语法有差别,我平常会使用带有Powershell的),建议打开时使用右键-以管理员身份运行,以免出现一些需要用到权限而导致的安装失败

下图可以直观的看出Powershell和cmd跳转目录的差别

在Anaconda Powershell中创建新的虚拟环境,使用conda创建一个新的虚拟环境,这里的“glm3”是环境名,是可以自己取的(有一些项目,官方给的示例代码创建的环境名很长,个人感觉在虚拟环境较少的情况下必要性不大,用个简单的比较方便)

代码块
Python
自动换行
复制代码
conda create -n glm3
复制成功

如果有需要指定python版本,在之后加上版本要求即可,过程中提示需要下载并安装一些库时,输入y然后回车即可(官方通道下载可能会比较慢),如果像上面一样没有指定python版本的话,将会默认使用anaconda3自带的版本

代码块
Python
自动换行
复制代码
conda create -n glm3 python=3.10.6
复制成功

打开Powershell的时候会默认在(base)这个基本环境中,激活已经创建的“glm3”对应的虚拟环境env

代码块
Python
自动换行
复制代码
conda activate glm3
复制成功

此时前面会变成(glm3),也即已经进入对应env

如需退出环境,或者删除环境,可以用以下代码

代码块
Python
自动换行
复制代码
conda deactivate  # 退出当前env
conda remove -n glm3  # 在未激活的状态下可以删除对应的env
复制成功

以上,就可以完成使用anaconda3管理虚拟环境的目的。

2、无论是GitHub还是Hugging Face,都是使用git进行克隆比较方便,当然也可以自行到对应网址去打包下载并解压

git下载,网址https://git-scm.com/

安装的时候全下一步就可以了,应该会默认添加到环境变量中,如果在后续使用git命令的时候提示红字的话,手动添加对应目录到环境变量即可

3、Win10/Win11均能成功部署,由于这两个系统都会自动安装显卡驱动,这里不再赘述,未安装可以移步https://www.nvidia.cn/geforce/drivers/下载安装

pytorch安装和显卡驱动版本有关,所以需要先检查显卡驱动版本,可以用命令查看

代码块
JavaScript
自动换行
复制代码
nvidia-smi
复制成功

也可以手动打开NVIDIA控制面板查看

可以到网址https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html查看支持的CUDA版本

pytorch安装,直接到官网https://pytorch.org/选择conda或者pip,并复制代码安装即可

【注意:这里是要先切换到对应的env之后再运行代码,也即在隔离的环境中安装】

代码运行完成后,进入python环境查看cuda是否可用,返回True就表示可用

代码块
JavaScript
自动换行
复制代码
conda activate glm3  # 已经在虚拟环境下就不用运行这行
python  # 进入python
import torch  # 引入库
torch.cuda.is_available()  # 查看cuda是否可用
exit()  # 退出python
复制成功

四、项目部署

1、根据GitHub开源项目说明文档进行克隆并安装依赖

由于会git clone到当前目录下,所以需要提前转到准备下载的目录中,这里以K盘根目录为例

(如果这里提示torch相关的错误,请查看三、3、部分的内容)

代码块
JavaScript
自动换行
复制代码
cd k:
git clone https://github.com/THUDM/ChatGLM3  # 从GitHub仓库克隆
cd ChatGLM3  # 转到已经下载好的文件目录中
pip install -r requirements.txt  # 安装依赖
复制成功

2、模型下载并调用

根据说明文档提示进行模型下载

这一步是要在ChatGLM3文件夹下进行的,如果手动下载的话,也建议移动到这个目录中

代码块
JavaScript
自动换行
复制代码
git lfs install  # 验证一下lfs是否安装正确
git clone https://huggingface.co/THUDM/chatglm3-6b  # 下载模型
复制成功

下载完成后文件夹内容如下

五、项目运行

1、使用python直接运行

管理员模式运行Anaconda Powershell,激活env,转到ChatGLM3中,运行basic_demo文件夹内的cli_demo.py(需要终止时可以用Ctrl+C中断python)

代码块
JavaScript
自动换行
复制代码
conda activate glm3
cd K:\ChatGLM3
python .\basic_demo\cli_demo.py  # 运行当前文件夹下的basic_demo\cli_demo.py
# 以上正反斜杠似乎都可以
复制成功

项目还预设了好几种Demo供使用,可以在 Jupyter 环境中调用,也可网页版对话,具体可查看说明文档

2、一些问题

由于本机专用显存仅有8G,共享显存8G,而模型调用起来时会用到大约13G的显存,所以会占满所有专用显存并使用约5个G的内存,因此运行较慢,回复大约只有3-5字/s

不重启电脑之前,无法第二次加载模型,也许是和机器性能有关

在说明文档中给出了低成本部署方案,实测对显存占用似乎没有明显降低,回复效率略微提高

到此结束,感谢看到这里