VLLM适配昇腾开源体验任务心得
【摘要】 VLLM适配昇腾910B NPU验证任务
VLLM使用昇腾进行对话推理体验任务
1. 开源项目基本情况
VLLM是一个开源的高性能大语言模型推理库,旨在实现大规模语言模型的快速推理。
源码地址:https://github.com/vllm-project/vllm
官网主页:https://github.com/vllm-project
主要开发语言:python
LICENSE:Apache License 2.0
维护者:Woosuk Kwon
项目数据:Fork 5.6k,Star 37.3K,Contributor 823,最近一次提交:2025-2-11
star历史(https://star-history.com/):
2. 任务目的和范围
本任务旨在将VLLM项目部署至华为的Ascend和Kunpeng处理器以及Euler操作系统,并进行对话推理功能的使用,确保其能够在这些平台上有效运行。
3. 方案设计
• 昇腾环境验证:完成昇腾环境的验证,需要CANN、torch_npu。
先安装CANN,参考:
https://www.hiascend.com/zh/developer/download/community/result?module=cann 。
cann默认安装在/usr/local/Ascend目录下,需要运行一下命令初始化环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
torch_npu的安装参考:
https://github.com/Ascend/pytorch/blob/master/README.zh.md 。
• vllm环境搭建:创建conda环境,GitHub上拉取vllm仓库代码并安装vllm。
• 离线推理/API部署:
vllm可以使用两种方式进行推理对话。离线推理即不通过服务器,直接使用推理脚本进行推理对话;API部署推理即通过启动服务器访问API进行推理部署,项目提供了一个兼容 OpenAI 接口的 API 服务器,使得开发者可以像使用 OpenAI 服务一样,轻松地集成 VLLM 的能力。
API部署:
命令行启动服务器——>通过Completions API访问——>开始推理对话
离线推理:
修改推理脚本——>选择Qwen1.5-4B-Chat模型为对话推理模型——>执行脚本进行对话
(可能报错modelscope找不到,使用pip install modelscope可以解决)
• 推理验证:
两种方式均可进行推理,通过在命令行输入问题的提问方式,进行推理。模型加载成功后会提取问题并回答问题并将结果反馈给用户。
4. 完成演示DEMO设计、开发
DEMO整体设计流程图如下:
5. 验证CPU实验步骤
5.1 购买的资源配置
购买一台如下配置的服务器
鲲鹏通用计算增强型 | 32vCPUs | 128GiB | kc1.8xlarge.4
|
5.2 鲲鹏920、OpenEuler验证推理
其中vllm安装的主要步骤如下:
1. 下载软件包Miniconda,并赋上安装脚本可执行权限和执行脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
chmod +x Miniconda3-latest-Linux-aarch64.sh
./Miniconda3-latest-Linux-aarch64.sh
export PATH="/root/miniconda3/bin:$PATH"
source ~/.bashrc
2. 创建虚拟环境 vllm311并激活
conda create -n vllm311 python=3.11
conda activate vllm311
3. 拉取代码仓库
git clone https://github.com/vllm-project/vllm.git
git clone https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoAI.git
4. 安装依赖,然后安装vllm
cd vllm
yum install -y gcc gcc-c++
pip install wheel packaging ninja setuptools>=49.4.0 numpy psutil
pip install -v -r requirements-cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu
pip install setuptools_scm
conda install -c conda-forge cmake=3.27
sudo yum install numactl-devel
VLLM_TARGET_DEVICE=cpu python setup.py install
根据以上步骤可顺利安装vllm,进行推理验证可参考“5.3 完成Demo部署和验证”。
5.3 完成Demo部署和验证
参考WIKI "https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoAI/overview"中的AI Demo示例,
通过下面的代码完成部署:
5.3.1 离线推理部署
pip install modelscope
export VLLM_USE_MODELSCOPE=True
export VLLM_CPU_KVCACHE_SPACE=100
export OMP_NUM_THREADS=32
cd OpenSourceForHuaweiDemoAI/
python test_vllm_cpu.py
输出结果如下:
根据输入的问题"The future of AI is",扩写得到文本如下图中红色方框显示“ here, and it's changing the world around us. From......”
推理过程中通过htop命令查看系统状态
说明离线推理,通过命令行验证成功。
5.3.2 API部署推理
1. 启动服务器:
python -m vllm.entrypoints.openai.api_server --model "/root/.cache/modelscope/hub/Qwen/Qwen1.5-4B-chat" --served-model-name "openchat" --dtype float16
部署成功:
注意:
后面一定要加参数:
--dtype float16
不然会出现下面的错误告警:
ERROR 02-11 16:16:47 engine.py:139] RuntimeError: "rms_norm_impl" not implemented for 'BFloat16'
使用参数float32也可以。
2. 使用curl访问并得到推理验证结果
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openchat",
"prompt": "San Francisco is a",
"max_tokens": 7,
"temperature": 0
}'
-d 里面是请求的参数,可以自己设置;
temperature 为 0,代表每次模型的回答都相同,不具有随机性,你可以自由调整参数来满足你的需求;
promote是输入需要推理的内容“San Francisco is a”,模型可以根据输入的内容扩写文本,如红框标注即模型扩写出来的内容 “beautiful city with attractions”。
注意:
1. 命令行推理
python offline_inference_npu.py --trust-remote-code
执行推理脚本offline_inference_npu.py,该脚本会调用模型,并根据promot扩写文本。
此次任务中promote输入的问题为 "San Francisco is a"。
2. 推理验证结果
说明API部署推理验证成功
5.4 鲲鹏920、OpenEuler CPU推理小结
通过5.3 完成Demo部署和验证,成功验证了VLLM在鲲鹏920款CPU上的推理验证。
6. 验证NPU实验步骤
6.1 购买的资源配置
华为云上目前西南-贵阳一有notebook上有 Ascend 910B3芯片
配置清单如下:
6.2 昇腾910 NPU验证推理
其中vllm安装的主要步骤如下:
1. conda源修改
这次选择的是镜像mindspore_2.3.0-cann_8.0.rc2-py_3.9-euler_2.10.7-aarch64-snt9b
这个版本的canda镜像源需要做一些修改:
conda config --remove-key channels
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda clean -i
2. 创建虚拟环境 vllm310并激活
conda create -n vllm310 python=3.10 -y
conda activate vllm310
3. 拉取代码仓库
git clone -b npu_support https://github.com/wangshuai09/vllm.git
git clone https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoAI.git
4. 安装依赖,然后安装vllm
pip3 install torch==2.1.0
pip3 install pyyaml
pip3 install setuptools
pip3 install torch-npu==2.1.0.post10
pip install modelscope
VLLM_TARGET_DEVICE=npu pip install -e .
根据以上步骤可顺利安装vllm,进行推理验证可参考“6.3 完成Demo部署和验证”。
6.3 完成Demo部署和验证
参考WIKI "https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoAI/overview"中的AI Demo示例,
通过下面的代码完成部署:
6.3.1 离线推理部署
pip install modelscope
export VLLM_USE_MODELSCOPE=True
cd ../OpenSourceForHuaweiDemoAI
python offline_inference_npu.py --trust-remote-code
输出结果如下:
根据输入的问题"The future of AI is",扩写得到文本如下图中红色方框显示“bright,but it's also filled with challenges......”
说明离线推理,通过命令行验证成功。
6.3.2 API部署推理:
1. 启动服务器:
python -m vllm.entrypoints.openai.api_server --model "/root/.cache/modelscope/hub/Qwen/Qwen1.5-4B-chat" --served-model-name "openchat"
部署成功:
2. 使用curl访问并得到推理验证结果
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openchat",
"prompt": "San Francisco is a",
"max_tokens": 7,
"temperature": 0
}'
-d 里面是请求的参数,可以自己设置;
temperature 为 0,代表每次模型的回答都相同,不具有随机性,你可以自由调整参数来满足你的需求;
promote是输入需要推理的内容“San Francisco is a”,模型可以根据输入的内容扩写文本,如红框标注即模型扩写出来的内容 “beautiful city with attractions”。
注意:
1. 命令行推理
python offline_inference_npu.py --trust-remote-code
执行推理脚本offline_inference_npu.py,该脚本会调用模型,并根据promot扩写文本。
此次任务中promote输入的问题为 "San Francisco is a"。
2. 推理验证结果
说明API部署推理验证成功
6.4 昇腾910 NPU推理小结
通过6.3 完成Demo部署和验证,成功验证了VLLM在昇腾910 NPU上的推理验证。
7. 参考资料
1.开源for Huawei介绍、环境搭建、示例项目、开发和部署指南:
https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview
2.完成任务过程中,碰到问题可以在这里查询或者提问:
https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/issues
3. VLLM Github仓库:
https://github.com/vllm-project/vllm
4. VLLM适配昇腾开源验证任务心得:
https://bbs.huaweicloud.com/blogs/441244
5. VLLM部署参考WIKI:
https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/tree/main/zh_CN/docs.md
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
热门文章
评论(0)