本文介绍如何使用阿里云第八代Intel实例,基于BigDL-LLM单机部署通义千问Qwen-72B-Chat语言模型进行AI对话。
背景信息
创建ECS实例
前往实例创建页。
按照界面提示完成参数配置,创建一台ECS实例。
需要注意的参数如下,其他参数的配置,请参见自定义购买实例。
实例:Qwen-72B-Chat大概需要70 GiB内存,为了保证模型运行的稳定,建议选择192 GiB内存或以上的实例规格,本文以ecs.c8i.24xlarge为例。
镜像:Alibaba Cloud Linux 3.2104 LTS 64位。
公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。以加快模型下载速度。
数据盘:Qwen-72B-Chat的运行需要下载多个模型文件,会占用大量存储空间,为了保证模型顺利运行,建议数据盘设置为300 GiB。
添加安全组规则。
在ECS实例安全组的入方向添加安全组规则并放行22、443、7860端口(用于访问WebUI服务)。具体操作,请参见添加安全组规则。
创建完成后,在ECS实例页面,获取公网IP地址。
说明公网IP地址用于进行AI对话时访问WebUI服务。
部署Qwen-72B-Chat
步骤一:配置运行环境
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
安装Docker。
具体操作,请参见安装Docker并使用(Linux)。
执行以下命令,从
docker hub
中下载bigdl-llm-serving-cpu
镜像。说明bigdl-llm-serving-cpu镜像中已包含运行通义千问所需的环境,启动容器后可直接使用。
sudo docker pull intelanalytics/bigdl-llm-serving-cpu:2.5.0-SNAPSHOT
执行以下命令,查看并验证
bigdl-llm-serving-cpu
镜像是否下载成功。sudo docker images
若在系统返回信息中,存在如下镜像,则表示
bigdl-llm-serving-cpu
镜像下载成功。
步骤二:下载Qwen-72B-Chat预训练模型
执行以下命令,安装
tmux
命令。sudo yum install tmux -y
执行以下命令,创建一个
tmux session
窗口。tmux
说明下载预训练模型耗时较长,且成功率受网络情况影响较大,建议在
tmux session
中下载,以免ECS断开连接导致下载模型中断。执行以下任一命令,下载Qwen-72B-Chat预训练模型。
说明使用Git方式下载会产生较大的中间文件,为了节约数据盘空间,建议您使用Python脚本下载。
通过公网下载Qwen-72B-Chat预训练模型,因模型数据较大,使用100 Mbps带宽下载时间大约为3小时,请耐心等待。
使用Python脚本下载
执行以下命令,下载
miniconda
安装包。wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
执行以下命令,安装
miniconda
。bash Miniconda3-latest-Linux-x86_64.sh
执行以下命令,激活
miniconda
。source ~/.bashrc
若命令行首部出现
(base)
标识,则表示miniconda
激活成功。执行以下命令,安装
pip
命令。sudo yum install -y python3-pip
依次执行以下命令,升级
pip
工具、setuptools
和wheel
库。sudo pip3 install --upgrade pip sudo pip3 install --upgrade setuptools wheel
miniconda
安装成功后,在conda环境中安装modelscope
。pip3 install modelscope
执行Python脚本,下载Qwen-72B-Chat预训练模型。
执行以下命令,创建Python脚本文件
test.py
。sudo vim test.py
按i键进入编辑模式,添加以下内容。
from modelscope import snapshot_download model_dir = snapshot_download('qwen/Qwen-72B-Chat') print(model_dir)
按
Esc
键退出编辑模式,然后输入:wq
保存并退出。执行以下命令,运行Python脚本文件
test.py
。python3 test.py
使用Git下载
执行以下命令,安装
Git
命令。sudo yum install git -y
下载并安装Git LFS,以确保通过
Git
命令可下载大型文件。curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash sudo yum install -y git-lfs
执行以下命令,验证Git LFS是否安装成功。
git lfs version
若系统返回Git LFS的版本信息,则表示成功安装。
执行以下命令,下载Qwen-72B-Chat预训练模型。
sudo git clone https://www.modelscope.cn/qwen/Qwen-72B-Chat.git Qwen-72b-chat
执行以下命令,查看Qwen-72B-Chat预训练模型所在目录路径。
ls -l
步骤三:启动并进入BigDL-LLM Docker容器
编写Docker容器启动脚本文件。
执行以下命令,新建并编辑
start-container.sh
脚本文件。sudo vim start-container.sh
按
i
键进入编辑模式,添加以下信息。export MODEL_PATH=[YOUR_MODEL_PATH] sudo docker run -itd \ --net=host \ --privileged \ --cpuset-cpus="0-47" \ --cpuset-mems="0" \ --name="qwen-llm" \ --shm-size="16g" \ -v $MODEL_PATH:/models \ -e ENABLE_PERF_OUTPUT="true" \ intelanalytics/bigdl-llm-serving-cpu:2.5.0-SNAPSHOT
说明参数说明如下:
MODEL_PATH
:请您根据实际情况,将[YOUR_MODEL_PATH]
替换为上述步骤二中3.查询到Qwen-72B-Chat预训练模型的绝对路径。$MODEL_PATH
:启动Docker容器时会将Host
的模型挂载到容器的/models
目录下。cpuset-cpus
:指定使用的CPU核心。cpuset-mems
:指定使用的NUMA内存节点编号。
您可以使用
lscpu
命令来查询CPU核心数量和NUMA内存节点编号。按
Esc
键退出编辑模式,然后输入:wq
保存并退出。
执行以下命令,启动Docker容器。
sudo bash start-container.sh
执行以下命令,查看Docker容器启动情况。
sudo docker ps -a
若系统返回以下信息,则表示Docker容器启动成功。
执行以下命令,进入Docker容器。
sudo docker exec -it qwen-llm bash
步骤四:基于BigDL-LLM与Qwen-72B-Chat进行AI对话
依次执行以下命令,完成优化操作。
说明在进行AI对话前,您需要对部分环境变量进行设置以在Intel CPU上实现优化效果,并对线程进行优化。
source bigdl-llm-init -t export OMP_NUM_THREADS=[使用的cpu核心数] #本示例使用cpu核心数为48,请根据实际情况,将[使用的cpu核心数]替换为合适的cpu核心数。
与Qwen-72B-Chat进行AI对话。
在实例内部进行AI对话
依次执行以下命令,进入终端与Qwen-72B-Chat进行AI对话。
cd /llm/portable-zip python3 chat.py --model-path /models/Qwen-72B-Chat
说明Qwen-72B-Chat预训练模型会在加载时自动转换为
int4
格式。在浏览器进行AI对话
执行如下命令,开启WebUI服务。
python3 -m fastchat.serve.controller & python3 -m bigdl.llm.serving.model_worker --model-path /models/Qwen-72B-Chat --device cpu & python3 -m fastchat.serve.gradio_web_server
说明在加载
model worker
时,系统会自动将模型量化为int4
格式,无需进行手动转换。在浏览器地址栏输入
http://<ECS公网IP地址>:7860
,进入Web页面。在页面对话框中,输入对话内容,即可开始AI对话。