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

LICENSEApache License 2.0

维护者:Woosuk Kwon

项目数据:Fork 4.7kStar 30.7KContributor 706,最近一次提交:2024-11-24

star历史(https://star-history.com/):

 

 

图片1.png


2.2       任务目的和范围

本任务旨在将VLLM项目部署至华为的AscendKunpeng处理器以及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)

使用GaussDBDWS)功能。

使用GaussDB(DWS)的驱动和SQL实现适配逻辑。

存储

OBS

使用OBS功能。

基于OBS API访问实现适配逻辑。

开放能力

ECS

依赖ECS开放能力运行。

基于ECS开放能力,比如创建、删除等API做开发适配。

 

VPC

依赖VPC开放能力运行。

基于VPC开放能力,比如创建、删除等API做开发适配。

3     方案设计


  • 昇腾环境验证:在堡垒机上完成昇腾环境的验证,需要CANNtorch_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 = LLMmodel="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个月内不可修改。