本文以搭建AI对话机器人为例,介绍如何使用阿里云AMD CPU云服务器(g8a)部署Qwen-7B模型。
背景信息
通义千问-7B(Qwen-7B)是阿里云研发的通义千问大模型系列的70亿参数规模模型。Qwen-7B是基于Transformer的大语言模型,在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B 的基础上,使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。
创建ECS实例
前往实例创建页。
按照界面提示完成参数配置,创建一台ECS实例。
需要注意的参数如下,其他参数的配置,请参见自定义购买实例。
实例:Qwen-7B-Chat大概需要30 GiB内存,为了保证模型运行的稳定,实例规格至少需要选择ecs.g8a.4xlarge(64 GiB内存)。
镜像:Alibaba Cloud Linux 3.2104 LTS 64位。
公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。以加快模型下载速度。
数据盘:Qwen-7B-Chat的运行需要下载多个模型文件,会占用大量存储空间,为了保证模型顺利运行,建议数据盘设置为100 GiB。
添加安全组规则。
在ECS实例安全组的入方向添加安全组规则并放行22、443、7860端口(用于访问WebUI服务)。具体操作,请参见添加安全组规则。
创建完成后,在ECS实例页面,获取公网IP地址。
说明公网IP地址用于进行AI对话时访问WebUI服务。
部署Qwen-7B-Chat
手动部署
步骤一:安装配置模型所需软件
远程连接该ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
安装部署Qwen-7B-Chat所必需的软件。
sudo yum install -y tmux git git-lfs wget curl gcc gcc-c++ autoconf tar zip unzip hwloc python38
安装Python 3.8。
系统自带的Python版本为3.6,不满足部署ChatGLM-6B的最低版本要求,因此需要安装Python 3.8。
sudo update-alternatives --config python
运行过程中,请输入4,安装Python 3.8。
更新Python对应的pip版本。
sudo python -m ensurepip --upgrade sudo python -m pip install --upgrade pip
启用Git LFS。
下载预训练模型需要Git LFS的支持。
git lfs install
步骤二:下载源码与模型
创建一个tmux session。
tmux
说明下载预训练模型耗时较长,且成功率受网络情况影响较大,建议在tmux session中下载,以免ECS断开连接导致下载模型中断。
下载Qwen-7B项目源码,以及预训练模型。
git clone https://github.com/QwenLM/Qwen-7B.git git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git qwen-7b-chat
查看当前目录。
ls -l
下载完成后,当前目录显示如下。
步骤三:部署运行环境
更换pip下载源。
在安装依赖包之前,建议您更换pip下载源以加速安装。
创建pip文件夹。
mkdir -p ~/.config/pip
配置pip安装镜像源。
cat > ~/.config/pip/pip.conf <<EOF [global] index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/ [install] trusted-host=mirrors.cloud.aliyuncs.com EOF
安装ZenDNN所需依赖。
后续安装的ZenDNN要求使用CPU版本的PyTorch,因此需要手动安装所需依赖。
pip install torch==1.13.1+cpu --extra-index-url https://download.pytorch.org/whl/cpu pip install -r ~/Qwen-7B/requirements.txt pip install streamlit gradio mdtex2html
下载并安装ZenDNN。
ZenDNN运行库包括为AMD CPU架构优化的基本神经网络构建块的API,使深度学习应用程序和框架开发人员能够提高AMD CPU上的深度学习推理性能。
wget https://download.amd.com/developer/eula/zendnn/zendnn-4-1/pytorch/PT_v1.13_ZenDNN_v4.1_Python_v3.8.zip unzip PT_v1.13_ZenDNN_v4.1_Python_v3.8.zip cd PT_v1.13_ZenDNN_v4.1_Python_v3.8 source scripts/PT_ZenDNN_setup_release.sh
当系统返回如下所示时,表示ZenDNN已安装完成。
设置环境变量
OMP_NUM_THREADS
和GOMP_CPU_AFFINITY
。ZenDNN运行库需要针对硬件平台显式设置环境变量
OMP_NUM_THREADS
和GOMP_CPU_AFFINITY
。sudo bash -c 'cat > /etc/profile.d/env.sh' << EOF export OMP_NUM_THREADS=\$(nproc --all) export GOMP_CPU_AFFINITY=0-\$(( \$(nproc --all) - 1 )) EOF source /etc/profile
步骤四:进行AI对话
执行如下命令,开启WebUI服务。
cd ~/Qwen-7B python web_demo.py -c ../qwen-7b-chat --cpu-only --server-name 0.0.0.0 --server-port 7860
当出现如下信息时,表示WebUI服务启动成功。
在浏览器地址栏输入
http://<ECS公网IP地址>:7860
,进入Web页面。在Input对话框中,输入对话内容,单击Submit(发送),即可开始AI对话。
自动化部署
阿里云提供了自动部署脚本,可以一键部署运行Qwen-7B-Chat模型。
以root用户登录该ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
下载tmux并创建一个tmux session。
yum install -y tmux tmux
说明该脚本运行中会下载模型文件,耗时较长,建议在tmux session中启动部署,以免ECS断开连接导致部署中断。
下载自动部署脚本。
wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20231207/puju/deploy_qwen-7b-chat.sh
为自动化部署脚本添加执行权限。
chmod +x deploy_qwen-7b-chat.sh
运行自动化部署脚本。
./deploy_qwen-7b-chat.sh
当显示结果如下所示时,说明自动部署脚本已完成。
说明该脚本运行时间较长,在tmux session中进行部署的过程中,如果断开了ECS连接,重新登录ECS实例后执行
tmux attach
命令即可恢复tmux session,查看脚本运行进度。在浏览器地址栏输入
http://<ECS公网IP地址>:7860
,进入Web页面。在Input对话框中,输入对话内容,单击Submit(发送),即可开始AI对话。