本文以聊天機器人為例,介紹如何使用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并使用(Linux)。
運行以下命令,確保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
下載完成后,當前目錄顯示如下。
運行以下命令,部署運行環境。
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大模型進行實時對話。說明您可以運行
stop
命令退出聊天機器人。