本文以搭载了第四代英特尔® 至强® 可扩展处理器(Sapphire Rapids)的计算型ecs.c3i.24xlarge为例,为您介绍如何在ECS云服务器上部署ChatGLM-6B大语言模型。
ChatGLM-6B是一个具有62亿参数的、支持中英双语问答的对话语言模型,基于General Language Model(GLM)架构,结合模型量化技术,支持在消费级的显卡上进行本地部署(INT4量化级别下最低只需6GB显存)。ChatGLM-6B使用了和ChatGLM相同的技术,针对中文问答和对话进行了优化。经过约1T标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62亿参数的ChatGLM-6B已经能生成相当符合人类偏好的回答。
实例配置
部署ChatGLM-6B模型,推荐的实例配置如下:
类型 | 实例规格 | vCPU | 内存(GiB) | 操作系统 |
---|---|---|---|---|
推荐 | ecs.c3i.24xlarge | 96 | 192 | Ubuntu 22.04 |
性价比最佳 | ecs.g3i.8xlarge | 32 | 128 | Ubuntu 22.04 |
最小配置 | ecs.r3i.4xlarge | 16 | 128 | Ubuntu 22.04 |
运行环境
下载本文所需软件需要访问国外网站,建议您增加网络代理(例如FlexGW)以提高访问速度。您也可以将所需软件下载到本地,参考本地数据上传到实例中。
请参考通过向导购买实例创建一台符合以下条件的实例:
创建成功后,在实例绑定的安全组中添加入方向规则:放行TCP 7860端口,具体操作请参见修改安全组访问规则。
wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
bash Anaconda3-2022.05-Linux-x86_64.sh
/root/anaconda3
,请按“Enter”键确认安装。source ~/.bashrc
conda create -n SPR python=3.8.3
命令。Proceed ([y]/n)?
时输入“y”回车确认。conda activate SPR
执行以下命令,下载ChatGLM-6B大模型的权重文件。wget https://ai-llm.tos-cn-beijing.volces.com/chatglm-6b/GLM-6B-SPR.tar.gz
执行以下命令,解压文件包。tar -zxvf GLM-6B-SPR.tar.gz
执行ll
命令查看解压后的文件列表,如下图所示。
执行以下命令,安装相应的Intel依赖包。pip install mkl==2023.1.0 intel-openmp==2023.1.0
依次执行以下命令,在Conda环境下安装内存分配器Jemalloc。
conda install jemalloc pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu pip install transformers
安装Gradio。
pip install gradio sentencepiece
命令,安装Gradio。pip list | grep gradio
命令进行验证,回显如下表示已成功安装。修改源。
vim /etc/apt/sources.list
命令,打开源文件。i
进入编辑模式,添加如下内容。deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
esc
退出编辑模式,输入:wq
并按Enter
键,保存并退出文件。执行apt update
命令,更新软件包。
依次执行以下命令安装依赖包。
cd bloom #切换至bloom目录 pip install bloom_fp16-0.0.0-cp38-cp38-linux_x86_64.whl pip install chatglm_hybrid-0.0.0-cp38-cp38-linux_x86_64.whl pip install chatglm_fp32-0.0.0-cp38-cp38-linux_x86_64.whl apt install numactl
安装完成后,执行cd
命令退出当前目录。
修改chatglm/webui
目录下的demo文件导出路径,加载本地ChatGLM模型。
执行vim read_path.py
命令,新建寻址文件,并添加如下内容。
import torch import os import sys def get_pytorch_install_dir(): return os.path.dirname(os.path.abspath(torch.__file__)) pytorch_install_dir = get_pytorch_install_dir() python_dir = sys.prefix print("PyTorch Library Path: " + pytorch_install_dir) print("Python Library Path: " + python_dir + "/lib") print("MKL Dynamic Library Path: " + python_dir + "/lib/libmkl_rt.so.2")
按esc
退出编辑模式,输入:wq
并按Enter
键,保存并退出文件。
依次执行以下命令,查看Dynamic路径。
cd chatglm python read_path.py
如下图,本例中的Dynamic路径为root/anaconda3
。
执行以下命令,打开demo文件。vim /root/chatglm/webui/start_demo.sh*
按i
进入编辑模式,修改导出路径为root/anaconda3
(与Dynamic保持一致),如下图所示。
依次执行以下命令,运行start_demo.sh*
脚本。
cd webui ./start_demo.sh*
浏览器访问public URL(https://<公网IP>.gradio.live
),如下图所示,表示成功使用Gradio构建AI应用程序。