VLLM使用昇腾进行对话推理体验任务

举报
yd_258621122 发表于 2025/04/30 14:46:02 2025/04/30
【摘要】 开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/)  通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。

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/):

 

 

图片1.png


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整体设计流程图如下:

图片2.png


其中vllm安装的主要步骤如下:

  1. 创建虚拟环境 vllm310并激活

Conda create -n vllm310 python=3.10 -y

Conda activate vllm310

  1. 拉取代码仓库

git clone -b npu_support https://github.com/wangshuai09/vllm.git

  1. 安装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部署推理:

  1. 启动服务器:

python -m vllm.entrypoints.openal.api_server --model"/root/.cache/modelscope/hub/Qwen1.5-4B-Chat" --serverd-model-name "openchat"

  1. 使用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”。

图片3.png


 

离线推理:

  1. 修改 examples/offline_inference_npu.py 第29行,由于源代码中加载的模型无法下载。

源代码是: llm = LLM(model="facebook/opt-125m")

改成:llm = LLM(model="Qwen/Qwen1.5-4B-Chat")

如下:

图片4.png


  1. 命令行推理

python example/offline_inference_npu.py --trust-remote-code

执行推理脚本offline_inference_npu.py,该脚本会调用模型,并根据promot扩写文本。

此次任务中promote输入的问题为 "The future of AI is"。

  1. 推理验证结果

 

根据输入的问题"The future of AI is",扩写得到文本如红框中显示“bright,but it's also filled with challenges.....”

图片5.png


 

 

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

 

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。