0


云服务器部署开源ChatGLM-6B,让你也能拥有自己的ChatGPT

在这里插入图片描述

在这里插入图片描述

文章目录

一、背景

最近GPT不仅发布了GPT-4,而且解除封印可以联网了。不得不赞叹AI更新迭代的速度真快,都跟不上节奏了。但是大家也注意到了吧,随着GPT的每次更新,OpenAI对其开放使用的限制也越来越大。之前国内网随便访问GPT3,现在动不动就封号

所以,今天就来教大家部署国内清华大学开源的ChatGLM-6B。简单介绍下,ChatGLM是对话语言模型,对中文问答和对话进行了优化。当前训练模型有62亿参数,后续还会推出1300亿参数的大模型,期待国内的ChatGLM能越做越强大。

1. ChatGLM的开源地址

ChatGLM的开源地址: THUDM/ChatGLM-6B
在这里插入图片描述

2. ChatGLM-6B模型

https://huggingface.co/THUDM/chatglm-6b/tree/main
在这里插入图片描述

废话不多说了,直接上效果,以下是由ChatGLM中文对话的结果
(文末给大家准备了ChatGLM的免费体验地址 和 算力平台免费体验方式,一定看到文章结尾哦)
在这里插入图片描述

二、服务器选型
2.1. 运行要求

硬件需求
量化等级最低 GPU 显存(推理)最低 GPU 显存(高效参数微调)FP16(无量化)13 GB14 GBINT88 GB9 GBINT46 GB7 GB

2.2. 服务器选型

官方说明ChatGLM对硬件的配置要求至少13G的显存

要准备的东西如下:

一台GPU云服务器(16GB显存,32G内存)
云服务器上已安装好显卡驱动cuda和pytorch框架(平台都有现成的镜像,直接安装即可)
再来说说服务器厂商的选择,GPU服务器比较贵,所以小卷对比了一些大厂和小厂的GPU规格,这里只看配置符合要求且价钱合适的
厂商配置价钱优势阿里云4核-15G内存-16显存NVIDIA T41878/月大厂服务,但是价钱太贵腾讯云10核-40G- NVIDIA T48.68/小时大厂服务,但独占1颗GPU价钱略高华为云8核-32G-16显存NVIDIA T43542/月大太贵mistGPU8核-32G-24G显存NVIDIA 30904.5/小时缺点:只有1GB免费存储揽睿星舟10核-40G-24G显存NVIDIA 30901.9/小时推荐,配置高且价钱低,现在NVIDIA 3090有特价

我们这里使用揽睿星舟这个算力平台的服务器,价钱就是优势哦。需要注意的是,GPU服务器要选按量计费,就是你用的时候按使用时长计费,不用时关掉就不会计费

三、服务器配置

这一步购买服务器并安装环境,比较简单

3.1. 注册使用

官网地址:https://www.lanrui-ai.com/register?invitation_code=4126597164
在这里插入图片描述

3.2. 购买服务器并安装镜像

在网站的算力市场购买需要的服务器配置,这里我选的是3090-24G这款,点击使用按钮进入镜像安装界面
在这里插入图片描述

运行环境镜像选【公共镜像/pytorchofficial-1.12.1-cuda11.6-cudnn8-devel】
在这里插入图片描述

等待5分钟左右,工作空间就创建好了,点击 进入-> JupyterLab进入服务器,接下来就准备ChatGLM的安装就行了
在这里插入图片描述

四、部署ChatGLM
4.1. conda环境安装
wget -c https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
cd /home/user
bash Anaconda3-2021.05-Linux-x86_64.sh

一路选择yes

配置环境变量

vim /etc/profile
exportPATH=/root/anaconda3/bin:$PATH

刷新环境变量

source /etc/profile

服务验证

conda -V

镜像源配置

vim ~/.condarc
channels:
  - http://mirrors.aliyun.com/anaconda/cloud/stackless
  - https://mirrors.aliyun.com/anaconda/cloud/simpleitk
  - https://mirrors.aliyun.com/anaconda/cloud/rdkit
  - https://mirrors.aliyun.com/anaconda/cloud/rapidsai
  - https://mirrors.aliyun.com/anaconda/cloud/qiime2
  - https://mirrors.aliyun.com/anaconda/cloud/pyviz
  - https://mirrors.aliyun.com/anaconda/cloud/pytorch3d
  - https://mirrors.aliyun.com/anaconda/cloud/pytorch-test
  - https://mirrors.aliyun.com/anaconda/cloud/pytorch
  - https://mirrors.aliyun.com/anaconda/cloud/psi4
  - https://mirrors.aliyun.com/anaconda/cloud/plotly
  - https://mirrors.aliyun.com/anaconda/cloud/omnia
  - https://mirrors.aliyun.com/anaconda/cloud/ohmeta
  - https://mirrors.aliyun.com/anaconda/cloud/numba
  - https://mirrors.aliyun.com/anaconda/cloud/msys2
  - https://mirrors.aliyun.com/anaconda/cloud/mordred-descriptor
  - https://mirrors.aliyun.com/anaconda/cloud/menpo
  - https://mirrors.aliyun.com/anaconda/cloud/matsci
  - https://mirrors.aliyun.com/anaconda/cloud/intel
  - https://mirrors.aliyun.com/anaconda/cloud/idaholab
  - https://mirrors.aliyun.com/anaconda/cloud/fermi
  - https://mirrors.aliyun.com/anaconda/cloud/fastai
  - https://mirrors.aliyun.com/anaconda/cloud/dglteam
  - https://mirrors.aliyun.com/anaconda/cloud/deepmodeling
  - https://mirrors.aliyun.com/anaconda/cloud/conda-forge
  - https://mirrors.aliyun.com/anaconda/cloud/caffe2
  - https://mirrors.aliyun.com/anaconda/cloud/c4aarch64
  - https://mirrors.aliyun.com/anaconda/cloud/bioconda
  - https://mirrors.aliyun.com/anaconda/cloud/biobakery
  - https://mirrors.aliyun.com/anaconda/cloud/auto
  - https://mirrors.aliyun.com/anaconda/cloud/Paddle
  - https://mirrors.aliyun.com/anaconda/pkgs/r
  - https://mirrors.aliyun.com/anaconda/pkgs/msys2
  - https://mirrors.aliyun.com/anaconda/pkgs/main
  - https://mirrors.aliyun.com/anaconda/pkgs/free
show_channel_urls: true

ssl_verify: true
allow_conda_downgrades: true

pip配置

[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/ 
[install] 
trusted-host=mirrors.aliyun.com
4.2. 下载ChatGLM源代码

在这里插入图片描述

进入Jupyter的页面后,可以看到2个目录,对目录做下说明:

  • data目录,存放数据,平台共享的
  • imported_models目录,存放预训练模型,等会需要下载在这里插入图片描述

在这里插入图片描述

点击data目录下,可以看到ChatGLM-6B文件夹,里面是ChatGLM的源代码。
在这里插入图片描述

注第一次是空的需要手动下载源码

如果没有ChatGLM-6B目录,那么我们这一步需要下载代码,操作如下:
页面打开一个Terminal终端,在Terminal终端执行命令
在这里插入图片描述

git clone https://github.com/THUDM/ChatGLM-6B.git

在这里插入图片描述

4.3. 下载模型

由于模型文件大需要执行以下命令再拉取chatglm-6b模型

mkdir /home/user/imported_models/model/
cd /home/user/imported_models/model/
aptinstall git-lfs
git lfs installgit clone https://huggingface.co/THUDM/chatglm-6b
4.4. 安装依赖
  • 1.执行命令切换到ChatGLM-6B的目录
cd ChatGLM-6B
  • 2.接着修改requirements.txt文件,把后续所有需要的依赖都加上,下面的配置加在文件末尾即可,如果文件里已加上这3个依赖,无需再修改。
vim requirements.txt

在这里插入图片描述

chardet
streamlit
streamlit-chat
  • 3.加完之后save保存下文件,如图在这里插入图片描述

在这里插入图片描述

  • 4.接着命令行执行下面命令安装依赖

#使用默认镜像源下载会超时,这里用了清华的pip镜像源地址

创建虚拟环境
conda create -n ChatGLM python==3.10
conda init bash

重新打开一个新的窗口执行激活环境
conda activate ChatGLM
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

在这里插入图片描述

在这里插入图片描述

这一步可能会执行报错

.ERROR: Could not install packages due to an OSError: Missing dependencies for SOCKS support
在这里插入图片描述

解决方法:切换到root用户后再执行命令

# 切换root用户sudosu# 重新执行
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
4.4. 启动脚本修改

因为模型是单独文件夹存储的,所以需要修改启动脚本中读模型文件的代码
为了能从公网访问我们的ChatGLM,需要修改监听地址为0.0.0.0,端口为27777,这个是揽睿星舟平台的调试地址
修改步骤:

  • 1.修改web_demo2.py文件中的模型路径,替换为模型的绝对路径,修改方法如下:
vim web_demo2.py 

在这里插入图片描述

修改前的代码

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
    model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()

修改后的代码

tokenizer = AutoTokenizer.from_pretrained("/home/user/imported_models/model/chatglm-6b", trust_remote_code=True)
    model = AutoModel.from_pretrained("/home/user/imported_models/model/chatglm-6b", trust_remote_code=True).half().cuda()

在这里插入图片描述

修改完后ctrl + s保存一下

4.5. 启动ChatGLM

在ChatGLM-6B目录下,命令行执行

python3 -m streamlit run ./web_demo2.py --server.port 27777 --server.address 0.0.0.0

启动ChatGLM的webui界面
在这里插入图片描述
看到http://0.0.0.0:27777字样说明成功启动了

五、使用

我们需要从浏览器访问刚部署的服务,回到揽睿星舟平台
在这里插入图片描述

在工作空间页面上点击自定义服务拷贝调试链接,然后把拷贝的链接在浏览器上打开
在这里插入图片描述

在这里插入图片描述

然后你就可以在这个页面开始对话了
注意第一次对话时,程序会加载模型文件,耗时会比较长,可以从刚才启动的命令行查看加载进度。
等第一次加载完成后,后面再对话,响应就很快了

六、对话效果

到这一步,所有安装部署过程就成功完成了,我们来看看效果吧,拷贝的链接在手机端也能打开,下面是手机端的效果
在这里插入图片描述

七、关闭服务

因为我们的服务按使用量收费的,所以不用时在页面上点击停止运行即可

在这里插入图片描述

八、重启服务

想重新运行服务的时候,点工作空间页面上的启动按钮。工作空间重新创建后,进入红色Jupyter,通过命令行再次启动

实例重启后conda环境需要重新安装

cd /home/user
bash Anaconda3-2021.05-Linux-x86_64.sh
一路选择yes

配置环境变量
vim /etc/profile
exportPATH=/root/anaconda3/bin:$PATH

刷新环境变量
source /etc/profile

服务验证
conda -V

cd /home/user/data/ChatGLM-6B/

# 创建虚拟环境
conda create -n ChatGLM python==3.10

conda init bash# 重新打开一个新的窗口执行激活环境
conda activate ChatGLM

安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

启动ChatGLM
python3 -m streamlit run ./web_demo2.py --server.port 27777 --server.address 0.0.0.0

在这里插入图片描述

在这里插入图片描述

如果报错请参考下面的异常汇总

六、异常汇总
6.1. not found icetk

ImportError: This modeling file requires the following packages that were not found in your environment: icetk. Run

pip install icetk

解决方案

cd data/ChatGLM-6B/
pip install icetk
python3 -m streamlit run ./web_demo2.py --server.port 27777 --server.address 0.0.0.0

本文转载自: https://blog.csdn.net/weixin_40816738/article/details/130682359
版权归原作者 gblfy 所有, 如有侵权,请联系我们删除。

“云服务器部署开源ChatGLM-6B,让你也能拥有自己的ChatGPT”的评论:

还没有评论