本地部署开源语言模型ChatGLM2-6b

前言

最近要开始忙毕业设计了,毕业设计的选题为《智能问答机器人的设计与实现》。

本来打算用一个国内的大语言模型的API做个对话网站就行了,结果开题答辩的时候导师说太简单了,能不能自己训练模型。

作为软件工程摆烂人,表示有点儿难为我了,就打算使用别人训练好的模型,降低学习成本。

然后就找到了ChatGLM这个开源语言模型项目,本来想使用ChatGLM3的但是教程太少了,不敢踩坑,就选择了ChatGLM2。

本地部署ChatGLM需要较好的硬件配置,否则会很慢,以下是我的电脑配置:

部位型号
CPUi3 12100F
GPURTX 2060 super
内存2 * 8G 3200MHz
系统Windows 11 专业工作站版

之前在笔记本也部署成功了,只是响应很慢,大概1秒一个字,笔记本为联想拯救者Y7000P2022 12700H+3050ti

部署

安装conda

用于Python环境管理,可以参考Anaconda的安装与基本使用

克隆项目

可先到官方仓库查看部署步骤。

1
2
3
4
# 克隆项目仓库
git clone https://github.com/THUDM/ChatGLM2-6B
# 进入到项目目录
cd ChatGLM2-6B

我的项目路径为D:/ChatGLM2-6B

下载模型

这里使用Huggingface 镜像站下载模型,原仓库地址在这里

1
git clone https://hf-mirror.com/THUDM/chatglm2-6b

因为文件很大,克隆的时候很慢,请耐心等待克隆结束。

克隆完成后将整个仓库存放到项目目录下的THUDM目录,即我的D:/ChatGLM2-6B/THUDM目录,没有就自行创建。

创建Python环境

1
2
3
4
5
6
# 创建一个指定路径为D:\ChatGLM2-6B\ENV的环境并且跳过同意选项的python3.8环境
conda create -y -p D:\ChatGLM2-6B\ENV python=3.8
# 激活环境
conda activate D:\ChatGLM2-6B\ENV
# 安装项目依赖库
pip install -r requirements.txt

安装CUDA

在终端输入nvidia-smi查看所支持的最高CUDA版本,我这里是CUDA Version: 12.3

NVIDIA.DEVELOP下载CUDA,我这里下载12.1.1版本。

image-20240125152244809

下载完成后进行安装,安装完成后再到PyTorch官网,查看对应的PyTorch包安装指令。

image-20240125152601337

1
2
# 安装PyTorch包(PyTorch官网复制)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

安装途中需要键入y确认,安装完成后显示done则表示安装成功。

启动

修改配置

因为Windows和Linux表示路径的符号不一样,Windows为\,Linux为/,如果直接启动会出现未找到模型的问题。

  • web_demo.py

    修改所有的THUDM/chatglm2-6bTHUDM\chatglm2-6b

    由于gradio版本的更新,还需要修改以下内容。

    1
    2
    3
    4
    5
    # 修改前
    user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
    container=False)
    # 修改后
    user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10, container=False)
  • web_demo2.py

    修改所有的THUDM/chatglm2-6bTHUDM\chatglm2-6b

  • cli_demo.py

    修改所有的THUDM/chatglm2-6bTHUDM\chatglm2-6b

运行

在运行前需要更新一些东西

1
2
3
4
# 更新charset_normalizer依赖库
pip install --upgrade charset_normalizer
# 安装CLI所用到的charset_normalizer依赖库
pip install pyreadline

项目有多种运行方法,分为Web、终端、API,有两种方式

Web方式1

此方式有些问题

前端控制台报错,且对话结果不显示

可以在lssues蹲解决方案。

1
2
3
4
5
6
# 进入到项目目录
cd D:\ChatGLM2-6B
# 激活环境
conda activate D:\ChatGLM2-6B\ENV
# 运行
python web_demo.py

Web方式2

官方推荐,速度比Web方式1要快

1
2
3
4
5
6
# 进入到项目目录
cd D:\ChatGLM2-6B
# 激活环境
conda activate D:\ChatGLM2-6B\ENV
# 运行(出现邮箱提示直接回车即可)
streamlit run web_demo2.py

web_demo2

终端方式

1
2
3
4
5
6
# 进入到项目目录
cd D:\ChatGLM2-6B
# 激活环境
conda activate D:\ChatGLM2-6B\ENV
# 运行
python cli_demo.py

cli_demo

参考文档

官方仓库

ChatGLM2-6B|开源本地化语言模型

PyTorch|安装教程

什么是temperature、top_p?ChatGPT 中 随机性控制概念解读:理解如何控制模型回应的随机性