VLLM使用昇腾进行对话推理体验任务
VLLM使用昇腾进行对话推理体验任务
1 背景介绍
开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/) 通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。
开始之前,开发者可以下载 开源for Huawei Wiki(参考:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。
2 需求分析
2.1 开源项目基本情况
VLLM是一个开源的高性能大语言模型推理库,旨在实现大规模语言模型的快速推理。
源码地址:https://github.com/vllm-project/vllm
官网主页:https://github.com/vllm-project
主要开发语言:python
LICENSE:Apache License 2.0
维护者:Woosuk Kwon
项目数据:Fork 4.7k,Star 30.7K,Contributor 706,最近一次提交:2024-11-24
star历史(https://star-history.com/):
2.2 任务目的和范围
本任务旨在将VLLM项目部署至华为的Ascend和Kunpeng处理器以及Euler操作系统,并进行对话推理功能的使用,确保其能够在这些平台上有效运行。
2.3 能力要求
完成该任务需要掌握python语言,具备昇腾模型迁移适配能力,掌握昇腾硬件上开发环境的搭建流程、模型迁移方法(自动迁移、工具迁移)等。
2.4 根生态说明
生态 |
生态细类 |
是否需要验证 |
验证逻辑说明 |
是否需要适配 |
适配场景说明 |
昇腾生态 |
指令 |
是 |
使用昇腾处理器运行应用。 |
否 |
使用昇腾指令实现适配逻辑。 |
CANN |
是 |
应用功能依赖于CANN运行。 |
否 |
使用CANN实现适配逻辑。 |
|
MindSpore
|
否 |
应用功能依赖于MindSpore运行。 |
否 |
使用MindSpore实现适配逻辑 |
|
鲲鹏生态 |
指令 |
是 |
使用鲲鹏处理器运行应用。 |
否 |
使用鲲鹏指令实现适配逻辑。 |
Euler |
是 |
使用Euler系统运行应用。 |
否 |
使用Euler系统调用实现适配逻辑。 |
|
鸿蒙生态 |
HarmonyOS |
否 |
使用HarmonyOS系统运行应用。 |
否 |
使用HarmonyOS系统调用实现适配逻辑。 |
2.5 华为云服务生态
生态 |
生态细类 |
是否需要验证 |
验证逻辑说明 |
是否需要适配 |
适配场景说明 |
数据库 |
GaussDB |
否 |
使用GaussDB功能。 |
是 |
使用GaussDB的驱动和SQL实现适配逻辑。 |
|
GaussDB (DWS) |
否 |
使用GaussDB(DWS)功能。 |
否 |
使用GaussDB(DWS)的驱动和SQL实现适配逻辑。 |
存储 |
OBS |
否 |
使用OBS功能。 |
否 |
基于OBS API访问实现适配逻辑。 |
开放能力 |
ECS |
否 |
依赖ECS开放能力运行。 |
否 |
基于ECS开放能力,比如创建、删除等API做开发适配。 |
|
VPC |
否 |
依赖VPC开放能力运行。 |
否 |
基于VPC开放能力,比如创建、删除等API做开发适配。 |
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 任务分解
4.1 完成演示DEMO设计、开发
DEMO整体设计流程图如下:
其中vllm安装的主要步骤如下:
- 创建虚拟环境 vllm310并激活
Conda create -n vllm310 python=3.10 -y
Conda activate vllm310
- 拉取代码仓库
git clone -b npu_support https://github.com/wangshuai09/vllm.git
- 安装vllm
VLLM_TARGET_DEVICE=npu pip install -e .
根据以上步骤可顺利安装vllm,进行推理验证可参考“4.2 完成Demo部署和验证”
4.2 完成Demo部署和验证
参考WIKI "https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoAI/overview"中的AI Demo示例,完成demo部署并进行对话推理。
API部署推理:
- 启动服务器:
python -m vllm.entrypoints.openal.api_server --model"/root/.cache/modelscope/hub/Qwen1.5-4B-Chat" --serverd-model-name "openchat"
- 使用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”。
离线推理:
- 修改 examples/offline_inference_npu.py 第29行,由于源代码中加载的模型无法下载。
源代码是: llm = LLM(model="facebook/opt-125m")
改成:llm = LLM(model="Qwen/Qwen1.5-4B-Chat")
如下:
- 命令行推理
python example/offline_inference_npu.py --trust-remote-code
执行推理脚本offline_inference_npu.py,该脚本会调用模型,并根据promot扩写文本。
此次任务中promote输入的问题为 "The future of AI is"。
- 推理验证结果
根据输入的问题"The future of AI is",扩写得到文本如红框中显示“bright,but it's also filled with challenges.....”
4.3 在华为云开发者技术支持论坛发表帖子
访问华为云开发者技术支持论坛(https://bbs.huaweicloud.com/forum/forum-1175-1.html)发表帖子,介绍完成这些任务的过程和心得。
帖子归类为“技术干货-方案分享”或者“技术干货-知识分享”,包括不限于如下内容:开源软件的功能介绍;方案和技术原理介绍;开发适配过程碰到的问题和解决方案;DEMO设计、开发、部署过程;代码推送开源社区及互动过程;对于任务、产品的改进建议等。
博客打上如下标签:
- 必选:开源、开发者
- 可选:GaussDB数据库、鲲鹏、昇腾、鸿蒙、对象存储 OBS
5 参考资料
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
- 点赞
- 收藏
- 关注作者
评论(0)