当前位置:   article > 正文

白天研究生系列:炼丹专题第三集《本地部署大语言模型保姆级教程——以ChatGLM-6B为例》_chatglm-6b-main

chatglm-6b-main

系列文章目录

白天研究生系列:炼丹专题第一集《安装CUDA保姆级教程》
白天研究生系列:炼丹专题第二集《安装PyTorch保姆级教程》


前言

前两集的讲解是为接下来在自己电脑本地部署大语言模型打基础。目前像ChatGPT等大语言模型在不同方面便利了我们学习生活,但它需要我们自费去购买额度。像国内一些开源大模型就比较友好,虽然性能上稍微落后一些,但基本可以达到用户的基础需求,这免费的晚餐它不香吗?本集我们将以在本地部署ChatGLM-6B为例,在本地部署大语言模型,这样我们就可以在断网条件下和聊天机器人交流。


一、ChatGLM是什么?

ChatGLM,中文学名“智谱清言”,是一个由清华大学和智谱AI公司研发的聊天机器人程序,可以部署在消费级显卡上使用。现阶段的聊天机器人可以完成基础的问答功能,基本上可以满足用户需要。

二、本机环境

计算机系统PythonCUDACUDA ToolkitPyTorch
Windows 113.1012.212.12.1.1

环境可以不一样,没事,后面我们会在Anaconda中创建虚拟环境。

三、下载项目与模型

1. 下载项目

首先,咱们把带动整个项目的代码文件先下载好,代码项目在GitHub上开源,三——二——一,上链接:
ChatGLM-6B项目链接:https://github.com/THUDM/ChatGLM-6B
下载完成后请解压,解压后在ChatGLM-6B-main的目录下创建一个名为“THUDM”的文件夹。

2. 下载模型文件

接着,我们从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文件夹下。

3. 文件结构

ChatGLM-6B-main文件结构如下:
在这里插入图片描述
THUDM文件结构如下:
在这里插入图片描述
chatglm-6b文件结构如下:
在这里插入图片描述
这样就整挺好的。

四、配置环境

1. 模型路径

由于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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2. 创建虚拟环境

执行以下命令新建一个 conda 虚拟环境chatglm并安装所需依赖:

#复制这些命令就足够了,打开命令提示符粘贴进去并运行,公主/王子请复制!
conda create -n chatglm python=3.10
conda activate chatglm
pip install -r requirements.txt
  • 1
  • 2
  • 3
  • 4

3. 稍作修改

由于附带安装的gradio库是最新版的,与ChatGLM所需要的gradio版本不兼容,所以需要将gradio库降级,否则会出现刚回答几个字就卡住的情况。以向智谱清言问候“你好”为例,打开浏览器开发人员模式,我们发现后端是有完整回答的,只是展现到前端有问题。

在这里插入图片描述按照GitHub上大佬的点拨,发现是gradio版本过高的问题。我们降级gradio至3.40.0版本。
在这里插入图片描述
接下来我们在命令提示符中输入如下命令即可安装gradio 3.40.0。

#重装gradio,打开命令提示符粘贴进去并运行,公主/王子请复制!
pip install gradio==3.40.0
  • 1
  • 2

五、测试

执行完配置环境的步骤,我们接下来对本地部署的ChatGLM-6B进行测试。
首先激活前面创建好的虚拟环境chatglm,再运行代码项目提供的网页版demo。

#在ChatGLM-6B-main目录下打开命令提示符粘贴进去并运行,公主/王子请复制!
conda activate chatglm
python web_demo.py
  • 1
  • 2
  • 3

稍等片刻,对话窗口就会自动弹出。我们键入问题“你好”,稍等两秒左右就能生成答案。不过因为咱这参数只有6B,还要啥自行车啊!图片等多模态输入数据肯定太难为它了,凑合着用也可以了。
在这里插入图片描述


总结

本集内容干货就讲到这里,我们顺利地其实在本地部署ChatGLM后,还尝试在本地部署ChatGLM3-6B,但就使用情况来看真不如ChatGLM,会出现回答中英文夹杂的情况,说明在训练ChatGLM3的时候中英文训练数据比例把握不合适,官方回复这个bug是ChatGLM3-6B模型本身的问题,只能期待ChatGLM4能顺利解决这个问题了。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/429084
推荐阅读
相关标签
  

闽ICP备14008679号