最近AI这股风是越刮越猛,不光是咱们普通人用它来提提效,不少公司甚至个人玩家都开始琢磨着怎么自己搭一套模型来玩玩了。国内这块也卷得厉害,什么百度文心一言、阿里通义千问、腾讯混元,一个个都开放了自己部署的口子。这不,今天咱就来实操一把,看看怎么在亚马逊的EC2服务器上,把阿里的通义千问Qwen-7B-Chat给跑起来。
要玩转大模型,首先你得有台像样的服务器。今天的主角是亚马逊的EC2,如果你还没账号,可以先去注册一个。
亚马逊云EC2开通:亚马逊云EC2免费开通
不过我得先给你泼盆冷水,可别想着拿亚马逊那个免费12个月的t2.micro实例来干这活儿。那点配置,跑个博客都费劲,更别提吞金兽一样的大模型了。
根据官方的要求,跑Qwen-7B-Chat这玩意儿,你的服务器至少得有16G内存和100GB的硬盘。所以开通EC2实例的时候,眼睛放亮点,别选错了。内存和CPU得给足,不然装到一半就得报错。
还有个小细节,创建实例的时候,默认的硬盘大小只有可怜的8GB,这肯定不够。记得手动把它拉到100GB以上。最后,也是最关键的一步,去安全组里把7860端口打开。这个是后面WebUI界面的访问端口,你要是不开,装好了也只能干瞪眼,网页是肯定打不开的。
准备工作做完,连上SSH,咱们开干。首先是安装并启动Docker,顺手检查下版本号,确保没问题。
sudo docker -v
接下来,拉取并运行部署需要的Intel xFasterTransformer容器。这东西是关键,能帮我们优化模型性能。
sudo docker pull registry.openanolis.cn/openanolis/xfastertransformer:1.7.3-23
sudo docker run -it --name xFT -h xFT --privileged --shm-size=16g --network host -v /mnt:/mnt -w /mnt/xFasterTransformer registry.openanolis.cn/openanolis/xfastertransformer:1.7.3-23
看到上面这个界面,就说明容器已经成功跑起来了,我们现在已经进入了容器的Shell环境。之后的所有操作都在这个环境里进行。
万一你不小心退出了,也别慌,用下面这两条命令就能重新进去。
sudo docker start xFT
sudo docker exec -it xFT bash
在容器里,咱们还得装点必要的工具,比如下载用的wget、git,还有git-lfs,这个是下载大文件模型必备的。
yum update -y
yum install -y wget git git-lfs vim tmux
装好之后,先启用Git LFS。
这一步是为后面下载模型做准备。
git lfs install
然后,建个目录,专门用来放模型数据。
mkdir /mnt/data
cd /mnt/data
下载模型是个漫长的过程,中间断了网就全白瞎了。所以咱们用个 `tmux`,把它挂在后台,稳!
tmux
现在,开始从ModelScope上克隆Qwen-7B-Chat预训练模型。耐心点,这一步就是拼网速和硬盘的时候了。
git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git /mnt/data/qwen-7b-chat
下载完成后,看到类似上图的提示就对了。再次提醒,硬盘空间一定要足,至少留出60GB,不然这里肯定会失败。
下载下来的模型是HuggingFace格式的,我们还需要把它转换成xFasterTransformer能识别的格式。跑一下下面的命令,它会自动生成一个转换后的模型文件夹 `/mnt/data/qwen-7b-chat-xft`。
python -c 'import xfastertransformer as xft; xft.QwenConvert().convert("/mnt/data/qwen-7b-chat")'
看到 "Convert successful" 就说明转换搞定了。
万事俱备,只欠东风!现在我们可以正式运行模型了,有两种方式可选:WebUI图形界面和纯命令行界面。
1、WebUI界面(我个人推荐)
想用图形界面,得先装点依赖。在容器里执行下面几条命令:
cd /root/xFasterTransformer/examples/web_demo
pip install -r requirements.txt
为了避免一些版本冲突,最好升级一下gradio库。
pip install --upgrade gradio
然后,敲下这行长长的命令,启动WebUI服务。
OMP_NUM_THREADS=$(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') / 2)) GRADIO_SERVER_NAME="0.0.0.0" numactl -C $(seq -s, 0 2 $(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') - 2))) -m 0 python Qwen.py -t /mnt/data/qwen-7b-chat -m /mnt/data/qwen-7b-chat-xft -d bf16
如果一切顺利,终端会输出一个URL地址,用你的服务器IP替换掉地址里的0.0.0.0,端口是7860(就是我们之前在安全组放行的那个),在浏览器里打开就能看到对话界面了。
2、命令行界面
如果你是纯粹的极客,就喜欢在黑乎乎的终端里跟AI对话,那命令行模式也给你准备好了。
cd /root/xFasterTransformer/examples/pytorch
OMP_NUM_THREADS=$(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') / 2)) LD_PRELOAD=libiomp5.so numactl -C $(seq -s, 0 2 $(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') - 2))) -m 0 python demo.py -t /mnt/data/qwen-7b-chat -m /mnt/data/qwen-7b-chat-xft -d bf16 --chat true
运行之后,终端就会出现对话提示,直接输入问题开始聊天吧。
最后说几句:整个过程其实不算太复杂,只要跟着步骤一步步来,基本不会翻车。但万一中途遇到报错,大概率是服务器配置的问题。毕竟大模型对硬件的要求是实打实的,普通的小鸡是真扛不住,所以在动手前,务必确保你的服务器配置达标。
评论前必须登录!
注册