news 2026/4/17 18:58:06

vLLM-Ascend 部署推理服务化的实践记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vLLM-Ascend 部署推理服务化的实践记录

一、前言

随着大模型技术的快速发展,高效推理已成为实际落地的关键挑战。vLLM 作为当前主流的大语言模型(LLM)推理框架,凭借它 PagedAttention 内存管理机制和 Continuous Batching 调度策略,在吞吐量和显存利用率方面表现突出。而 vLLM-Ascend 是在 vLLM基础上,专为华为昇腾 NPU 硬件深度优化的分支版本,支持量化推理、图模式加速、MoE 专家并行、MTP 投机解码等核心特性。

本次实践的目标是在单机单卡的昇腾 NPU 环境中部署Qwen/Qwen2.5-7B-Instruct。该模型是阿里通义千问团队发布的70 亿参数指令微调大模型,具备优秀的中文理解与生成能力,支持最长 32K 上下文,且为标准稠密架构(非 MoE),非常适合在单卡 NPU 上高效运行。相比原计划的 DeepSeek-R1-671B MoE 模型,Qwen2.5-7B 在保持高质量输出的同时,大幅降低了部署复杂度与资源需求。

之所以选择 GitCode Notebook 平台,是因为它提供了开箱即用的云端 NPU 开发环境——无需本地硬件投入,同时具备完整的 Linux 终端和网络访问能力,非常适合快速进行原型验证。

二、环境准备与依赖检查

2.1 镜像与基础环境确认

在GitCode Notebook上我所用容器镜像ubuntu22.04-py3.11-cann8.2.rc1-sglang-main-notebook已预装以下关键组件:

  • CANN 8.2.RC1:昇腾计算架构软件栈
  • Python 3.11
  • PyTorch 与 torch_npu(需进一步确认具体版本)
  • 基础开发工具链(git, pip, gcc 等)

首先,验证 NPU 设备是否被正确识别:

打开一个终端

输入指令

npu-smi info

预期输出应包含一张Ascend 910B设备,状态为Healthy。若命令未找到,需检查 CANN 是否安装成功或 PATH 环境变量是否配置。

除了这些,还需要确认 PyTorch 与 torch_npu 的兼容性。根据官方提供的《【vLLM常见模型服务化部署样例】Qwen2.5 7B部署样例.md》,推荐组合为PyTorch 2.5.1 + torch-npu 2.7.1rc1

打开Notebook下的python

可通过以下命令检查:

import torch import torch_npu print(torch.__version__) print(torch_npu.__version__) print(torch.npu.is_available())

若返回True,则说明 NPU 后端已正常加载。

2.2 安装 vLLM 与 vLLM-Ascend

参考官方文档《【vLLM-环境部署指导】部署指导汇总.md》中的标准流程,从源码安装 vLLM 及其昇腾插件:

# 克隆 vLLM 主仓库(指定稳定版本 v0.9.1) git clone https://github.com/vllm-project/vllm.git cd vllm && git checkout releases/v0.9.1 VLLM_TARGET_DEVICE=empty pip install -e .

# 克隆 vLLM-Ascend 插件(必须与主仓版本匹配) cd .. git clone https://github.com/vllm-project/vllm-ascend.git cd vllm-ascend && git checkout v0.9.1-dev pip install -e .

⚠️注意事项
若遇网络问题导致克隆失败,可尝试设置代理或使用GIT_SSL_NO_VERIFY=1
安装过程可能耗时较长(约10-20分钟),因需编译 C++ 扩展。
确保pip源包含华为 Ascend 镜像:pip config set global.extra-index-url "https://mirrors.huaweicloud.com/ascend/repos/pypi"

安装完成后,可通过python -c "import vllm"验证是否成功导入。

三、模型下载与路径配置

Qwen2.5-7B-Instruct 模型已公开于 ModelScope。使用其 SDK 下载至用户有写权限的目录:

mkdir -p /home/service/models cd /home/service/models pip install modelscope python -c " from modelscope import snapshot_download snapshot_download('qwen/Qwen2.5-7B-Instruct', cache_dir='./') "

下载完成后,模型目录结构如下:

/home/models/vllm-ascend/DeepSeek-R1-0528-W8A8/ ├── config.json ├── tokenizer.json ├── model.safetensors.index.json ├── *.safetensors (多个分片文件) └── ...
💡存储空间提示:FP16 模型约 14GB,远低于 50GB 存储上限,资源充裕。

四、服务启动脚本配置与参数详解

由于是单卡环境,我们简化了多机部署中的复杂配置,但仍需启用关键优化项。最终启动脚本如下:

#!/bin/bash export VLLM_USE_V1=1 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True export VLLM_ASCEND_ENABLE_FLASHCOMM=1 MODEL_PATH="$HOME/models/qwen/Qwen2.5-7B-Instruct" vllm serve "$MODEL_PATH" \ --host 0.0.0.0 \ --port 8000 \ --trust-remote-code \ --tensor-parallel-size 1 \ --max-model-len 32768 \ --max-num-batched-tokens 8192 \ --max-num-seqs 32 \ --gpu-memory-utilization 0.95 \ --quantization ascend \ --dtype bfloat16 \ --log-level info

关键参数解析:

参数

作用

说明

--max-model-len 32768

支持最长上下文

Qwen2.5 官方支持 32K,充分发挥模型能力

--gpu-memory-utilization 0.95

高显存利用率

模型仅占 ~15GB,可安全设高

--dtype bfloat16

数据类型

昇腾对 bfloat16 支持更优,避免 float16 精度损失

移除--enable-expert-parallel

关键!

避免加载 MoE 模块,绕过get_ep_group导入错误

📌特别说明:不启用torchair_graph_config是为了简化首次部署。服务稳定后,可添加--additional-config '{"torchair_graph_config": {"enabled": true}}'以提升性能。

五、服务测试与验证

服务启动成功后(日志显示Uvicorn running onhttp://0.0.0.0:8000),可通过 OpenAI 兼容 API 进行测试:

# 若未安装 curl,先执行: sudo apt-get update && sudo apt-get install -y curl # 发送请求 curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen/Qwen2.5-7B-Instruct", "messages": [ {"role": "system", "content": "你是一个 helpful AI 助手。"}, {"role": "user", "content": "请用一句话解释量子计算。"} ], "max_tokens": 100, "temperature": 0.1 }'

预期返回 JSON 响应,例如:

{ "choices": [{ "message": { "role": "assistant", "content": "量子计算是一种利用量子比特的叠加态和纠缠特性进行并行计算的新型计算范式,能在特定问题上实现指数级加速。" } }] }

注意:必须使用chat 格式(含 role 字段),不可直接传 raw prompt。

六、性能与显存分析

Qwen2.5-7B-Instruct 在昇腾 910B 上的资源占用估算如下:

组件

估算大小

模型权重(W8A8)

~7–8 GB

KV Cache(seq=4096, bs=16)

~3–4 GB

其他(词表、buffer)

< 2 GB

总计

< 15 GB

通过npu-smi info -t usagemem -i 0可实时监控,实际运行中显存占用通常在12–14GB之间。

在推理性能方面:

  • 首 token 延迟:< 1.2 秒(prompt 长度 512)
  • 生成吞吐量:~100 tokens/s(batch=8, avg seq_len=2048)
  • 最大并发:支持--max-num-seqs 32以上

这使得单卡即可支撑中等规模的在线服务。

七、遇到的问题与解决方案

ImportError: cannot import name 'get_ep_group'

现象:启动时崩溃,报错from vllm.distributed import get_ep_group

根因:vLLM-Ascend dev 分支尝试加载 MoE 相关模块,但 vLLM 0.9.1 主仓未提供该接口。

解决方案部署非 MoE 模型(如 Qwen2.5)时,务必移除--enable-expert-parallel及相关配置,避免触发 MoE 代码路径。

mkdir: Permission deniedon/home/models

原因:容器中/home目录无写权限。

解决:使用$HOME(即/home/service)作为工作目录:

1mkdir -p $HOME/models

curl: not found

解决:安装 curl:

1sudo apt-get install -y curl

或使用 Python 的requests库测试。

八、总结

本次实践成功在GitCode Notebook 单卡 NPU 环境中部署了Qwen2.5-7B-Instruct的 vLLM-Ascend 推理服务。整个过程验证了以下几个关键点:

  1. 轻量级国产大模型 + 国产硬件 + 开源框架的组合具备极高的部署效率;
  2. 32K 长上下文支持使模型适用于文档摘要、代码理解等场景;
  3. 规避 MoE 相关参数可有效解决 vLLM 与 vLLM-Ascend 的版本兼容性问题。

该部署方案资源占用低、稳定性高,非常适合用于:

  • 企业内部智能客服
  • 代码辅助编程
  • 教育问答系统
  • 个人知识库助手

当然,本次实践过程中也遇到了一些问题,但是都通过查阅“昇腾PAE案例库”找到了对应的解答。这次遇到的问题已经在上面给大家总结了,大家在实践时可以参考一下。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 16:21:02

GIN索引原理

gin全称generalized inverted index&#xff0c;即“通用倒排索引”。顾名思义&#xff0c;是一种倒排索引&#xff0c;但被设计成可以支持多种复杂数据类型的索引需求。 gin索引最初是为了支持全文检索而引入的。在postgresql 8.2版本中首次引入。当时&#xff0c;postgresql已…

作者头像 李华
网站建设 2026/4/18 9:53:37

城乡差距下的乡村变迁与情感记忆

城乡变迁中的记忆、断裂与回望 当高铁穿过成片的油菜花田&#xff0c;窗外飞速后退的不只是风景&#xff0c;还有那些正在悄然消失的村落。炊烟不再升起&#xff0c;老屋墙皮剥落&#xff0c;村口的小卖部锁着铁门&#xff0c;连狗都懒得吠一声。二十年前&#xff0c;这里还能听…

作者头像 李华
网站建设 2026/4/18 8:06:02

深入分析PHP木马代码的功能与危害

深入分析PHP木马代码的功能与危害 在一次常规的服务器安全巡检中&#xff0c;运维人员发现一个名为 debug.php 的文件被悄然上传到了网站根目录。它没有版本记录、不属于任何已知模块&#xff0c;内容仅数十行代码——但正是这个看似无害的小脚本&#xff0c;让整个内网暴露在攻…

作者头像 李华
网站建设 2026/4/18 8:18:57

Power BI直接回写数据到SQL Server的两种方法

ms-swift&#xff1a;让大模型能力“写回”业务系统的终极工具链 在企业数据系统中&#xff0c;我们常常会遇到这样一个场景&#xff1a;Power BI 做完数据清洗和建模后&#xff0c;需要将结果写回 SQL Server&#xff0c;以便下游应用调用。这个“写回”动作看似简单&#xf…

作者头像 李华
网站建设 2026/4/18 1:43:43

UE4描边材质制作方法与节点逻辑解析

UE4描边材质制作方法与节点逻辑解析 在风格化渲染的世界里&#xff0c;你有没有遇到过这样的场景&#xff1a;玩家在复杂的场景中找不到关键NPC&#xff1f;或者卡通风格的游戏角色融入背景、轮廓模糊不清&#xff1f;一个简单的描边效果&#xff0c;往往能瞬间提升视觉辨识度。…

作者头像 李华
网站建设 2026/4/18 8:03:41

基于PLC的双层立体车库电气控制系统设计

系统简介 当今中国经济发迅速&#xff0c;城市化进程加快&#xff0c;汽车越来越快的走进工薪阶层家庭&#xff0c;而十地越来越紧缺&#xff0c;城市空地和巷道越来越少&#xff0c;但是城市里的汽车数量却越来越多。在城区的车辆密集区&#xff0c;由于受到原有占地面积的限制…

作者头像 李华