赞
踩
白天研究生系列:炼丹专题第一集《安装CUDA保姆级教程》
白天研究生系列:炼丹专题第二集《安装PyTorch保姆级教程》
前两集的讲解是为接下来在自己电脑本地部署大语言模型打基础。目前像ChatGPT等大语言模型在不同方面便利了我们学习生活,但它需要我们自费去购买额度。像国内一些开源大模型就比较友好,虽然性能上稍微落后一些,但基本可以达到用户的基础需求,这免费的晚餐它不香吗?本集我们将以在本地部署ChatGLM-6B为例,在本地部署大语言模型,这样我们就可以在断网条件下和聊天机器人交流。
ChatGLM,中文学名“智谱清言”,是一个由清华大学和智谱AI公司研发的聊天机器人程序,可以部署在消费级显卡上使用。现阶段的聊天机器人可以完成基础的问答功能,基本上可以满足用户需要。
计算机系统 | Python | CUDA | CUDA Toolkit | PyTorch |
---|---|---|---|---|
Windows 11 | 3.10 | 12.2 | 12.1 | 2.1.1 |
环境可以不一样,没事,后面我们会在Anaconda中创建虚拟环境。
首先,咱们把带动整个项目的代码文件先下载好,代码项目在GitHub上开源,三——二——一,上链接:
ChatGLM-6B项目链接:https://github.com/THUDM/ChatGLM-6B
下载完成后请解压,解压后在ChatGLM-6B-main的目录下创建一个名为“THUDM”的文件夹。
接着,我们从Huggingface上下载模型。模型文件通常是一些二进制文本文件,文件类型通常为.bin或.model。需要注意的是,今年5月某天开始,中国大陆访问Huggingface受限,需要借助科学上网。由于作者本人身份限制,只能找个镜像站慢慢下载模型。这里推荐Huggingface的镜像站,继续上链接:
ChatGLM-6B模型链接:https://hf-mirror.com/THUDM/chatglm-6b
其实仔细观察一下,发现这个镜像网站和Huggingface网址的组成还挺相似,实际上Huggingface上ChatGLM-6B的模型链接是:https://huggingface.co/THUDM/chatglm-6b,镜像站只要把“huggingface.co”换成“hf-mirror.com”即可,其他结构的内容保持一致。换做其他模型,镜像站链接的组成同理。
镜像网页截图如下,咱们只需要一个一个点击下载即可:
咱们把模型下载好后放在一个名为“chatglm-6b”的文件夹中,而后将这个文件夹复制到项目文件ChatGLM-6B-main新建的THUDM文件夹下。
ChatGLM-6B-main文件结构如下:
THUDM文件结构如下:
chatglm-6b文件结构如下:
这样就整挺好的。
由于Windows和Linux系统在文件路径的表示(尤其在斜杠的使用上)有所不同,这里我们在Windows 11的系统上部署ChatGLM,需要将代码文件中的所有“/”改为“\”。举个栗子,web_demo.py文件中的前七行代码中的斜杠要改成如下形式:
#这边已经修改好,公主/王子请复制!其他代码文件中的斜杠也要改哦!
from transformers import AutoModel, AutoTokenizer
import gradio as gr
import mdtex2html
#import THUDM.chatglm-6b
tokenizer = AutoTokenizer.from_pretrained("THUDM\chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM\chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
执行以下命令新建一个 conda 虚拟环境chatglm并安装所需依赖:
#复制这些命令就足够了,打开命令提示符粘贴进去并运行,公主/王子请复制!
conda create -n chatglm python=3.10
conda activate chatglm
pip install -r requirements.txt
由于附带安装的gradio库是最新版的,与ChatGLM所需要的gradio版本不兼容,所以需要将gradio库降级,否则会出现刚回答几个字就卡住的情况。以向智谱清言问候“你好”为例,打开浏览器开发人员模式,我们发现后端是有完整回答的,只是展现到前端有问题。
按照GitHub上大佬的点拨,发现是gradio版本过高的问题。我们降级gradio至3.40.0版本。
接下来我们在命令提示符中输入如下命令即可安装gradio 3.40.0。
#重装gradio,打开命令提示符粘贴进去并运行,公主/王子请复制!
pip install gradio==3.40.0
执行完配置环境的步骤,我们接下来对本地部署的ChatGLM-6B进行测试。
首先激活前面创建好的虚拟环境chatglm,再运行代码项目提供的网页版demo。
#在ChatGLM-6B-main目录下打开命令提示符粘贴进去并运行,公主/王子请复制!
conda activate chatglm
python web_demo.py
稍等片刻,对话窗口就会自动弹出。我们键入问题“你好”,稍等两秒左右就能生成答案。不过因为咱这参数只有6B,还要啥自行车啊!图片等多模态输入数据肯定太难为它了,凑合着用也可以了。
本集内容干货就讲到这里,我们顺利地其实在本地部署ChatGLM后,还尝试在本地部署ChatGLM3-6B,但就使用情况来看真不如ChatGLM,会出现回答中英文夹杂的情况,说明在训练ChatGLM3的时候中英文训练数据比例把握不合适,官方回复这个bug是ChatGLM3-6B模型本身的问题,只能期待ChatGLM4能顺利解决这个问题了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。