本文以聊天机器人为例,介绍如何使用Alibaba Cloud AI Containers(简称AC2)提供的AI容器镜像在AMD CPU上部署ChatGLM3-6B语言模型。
背景信息
ChatGLM3是ChatGLM系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B引入了更强大的基础模型、更完整的功能支持和更全面的开源序列。更多信息,请参见ChatGLM3-6B的开源repo。
-
阿里云不对第三方模型“ChatGLM-6B”的合法性、安全性、准确性进行任何保证,阿里云不对由此引发的任何损害承担责任。
-
ChatGLM-6B的代码依照Apache-2.0协议开源,ChatGLM-6B模型权重的使用遵循Model License。您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。
-
ChatGLM-6B模型权重对学术研究完全开放,免费商用请需填写商业授权申请。本文所示的模型下载仅作为演示,阿里云不对由此引发的任何损害承担责任。
步骤一:创建ECS实例
步骤二:创建Docker运行环境
安装Docker。
在Alibaba Cloud Linux 3上安装Docker可以参考安装并使用Docker和Docker Compose。
运行以下命令,确保Docker守护进程已经启用。
sudo systemctl status docker运行以下命令,创建并运行PyTorch AI容器。
AC2提供了丰富的AI场景下的容器镜像,其中就包括针对AMD优化的PyTorch镜像,可以使用该镜像快速创建一个PyTorch运行环境。
sudo docker pull ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/pytorch-amd:1.13.1-3.2304-zendnn4.1 sudo docker run -itd --name pytorch-amd --net host -v $HOME/workspace:/workspace \ ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/pytorch-amd:1.13.1-3.2304-zendnn4.1
步骤三:手动部署ChatGLM3-6B
运行以下命令,进入容器环境。
sudo docker exec -it -w /workspace pytorch-amd /bin/bash后续命令需在容器环境中执行,如意外退出,请使用以上命令重新进入容器环境。您可以运行
cat /proc/1/cgroup | grep docker命令查看当前环境是否为容器,如有回显信息则为容器环境。运行以下命令,安装配置软件。
yum install -y tmux git git-lfs wget运行以下命令,启用Git LFS。
下载预训练模型需要Git LFS的支持。
git lfs install下载源码与模型。
运行以下命令,创建一个tmux session。
tmux说明下载预训练模型耗时较长,且成功率受网络情况影响较大,建议在tmux session中下载,以免ECS断开连接导致下载模型中断。
运行以下命令,下载ChatGLM3-6B项目源码,以及预训练模型。
git clone https://github.com/THUDM/ChatGLM3.git git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git --depth=1运行以下命令,查看当前目录。
ls -l下载完成后,当前目录显示如下。
[root@iZ2zexxxxxxxxxxxx workspace]# ls -l total 8 drwxr-xr-x 12 root root 4096 Feb 6 09:35 ChatGLM3 drwxr-xr-x 3 root root 4096 Feb 6 09:57 chatglm3-6b
运行以下命令,部署运行环境。
AC2容器中,集成了众多的Python AI依赖组件,可以直接使用
yum或dnf安装Python运行依赖。yum install -y python3-{transformers,sentencepiece,protobuf,accelerate}运行AI对话。
运行以下命令,修改模型加载参数。
在项目源码中提供了终端示例脚本,可以运行ChatGLM3-6B模型实现本地聊天机器人。在运行脚本之前,需要修改模型加载参数,使用BF16精度加载,以利用CPU的AVX-512指令集进行加速。
cd /workspace/ChatGLM3/basic_demo grep "import torch" cli_demo.py 2>&1 >/dev/null || sed -i "3i\import torch" cli_demo.py sed -i 's/"auto")/"auto", torch_dtype=torch.bfloat16)/g' cli_demo.py运行以下命令,启动聊天机器人。
export MODEL_PATH="/workspace/chatglm3-6b" python3 cli_demo.py部署完成后可以通过在
用户:提示符处输入对话内容,就可以与ChatGLM3-6B大模型进行实时对话。[root@iz2ze*** basic_demo]# python3 cli_demo.py Loading checkpoint shards: 100%|xxx| 欢迎使用 ChatGLM3-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序 用户:你是谁?你能干什么呢? ChatGLM:你好,我是一个人工智能助手。我能回答你的问题和帮助你解决问题。我的功能包括但不限于: 1. 回答各种问题:我可以回答关于历史、科学、数学、文学等方面的问题。 2. 提供实用建议:无论是生活中的小问题,还是工作学习上的难题,我都可以尽力提供帮助。 3. 娱乐休闲:我可以陪你聊天、讲笑话、分享有趣的事物,帮助你放松心情。 需要注意的是,虽然我会尽力提供准确的信息和建议,但我的知识和能力仍然有限。在涉及重要决策时,请务必谨慎行事。如有需要,请随时向我提问,我会竭诚为您服务。 用户:说明您可以运行
stop命令退出聊天机器人。