news 2026/4/17 6:39:33

vLLM-Ascend 部署与推理服务化实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vLLM-Ascend 部署与推理服务化实战

一、前言

vLLM 是目前大模型推理领域最火热的高性能推理框架之一,以其 PagedAttention 技术著称。而 vLLM-Ascend 则是 vLLM 在华为昇腾 NPU 上的硬件插件,使得昇腾算力能够通过 vLLM 释放强大的推理性能。

在真正开始做迁移之前,我原本以为 GPU 和 NPU 在推理框架上的适配会非常复杂,但上手后才发现,vLLM-Ascend 的设计思路非常清晰:它在底层为昇腾补齐了算子、调度和内存管理,让我几乎不需要改动任何推理逻辑,就能把原本跑在 GPU 上的模型直接迁移到昇腾上运行。实际体验下来,无论是吞吐、并发还是长上下文处理能力,昇腾在 vLLM 的调度机制配合下都能发挥出非常可观的性能。

那么接下来的话我也会带大家来进行一系列的实战操作。

开源仓地址:https://gitcode.com/gh_mirrors/vl/vllm-ascend

下载方式也非常简单,直接使用git拉取就行了:

二、vLLM-Ascend 环境部署与基础配置

在开始 vLLM-Ascend 的安装与部署前,确保服务器已正确安装CANN 软件栈并验证NPU 驱动正常运行是至关重要的前提。CANN是昇腾 NPU 的核心软件栈,提供了从硬件驱动到上层应用的完整支持,而 NPU 驱动则是确保硬件与软件交互的基础。

我们可以参考官网给出的安装教程进行快速安装:

1. 环境准备

验证 Ascend NPU 固件和驱动程序是否正确安装:

# 检查 NPU 状态 npu-smi info

2.配置软件环境

最简单的方式是直接使用 CANN 官方 Docker 镜像,一条命令即可快速准备完整的软件环境。

3. 克隆代码与安装

推荐使用 Conda 创建独立的 Python 环境。

# 创建环境 conda create -n vllm-ascend python=3.10 conda activate vllm-ascend # 克隆 vLLM-Ascend 仓库 git clone https://github.com/vllm-project/vllm-ascend.git cd vllm-ascend # 安装依赖 pip install -r requirements.txt # 安装 vllm-ascend 插件 pip install -e .

4. 基础配置检查

安装完成后,可以通过简单的 Python 脚本检查 vLLM 是否正确识别到了 Ascend 后端。

from vllm import LLM, SamplingParams prompts = [ "Hello, my name is", "The president of the United States is", "The capital of France is", "The future of AI is", ] # Create a sampling params object. sampling_params = SamplingParams(temperature=0.8, top_p=0.95) # Create an LLM. llm = LLM(model="Qwen/Qwen2.5-0.5B-Instruct") # Generate texts from the prompts. outputs = llm.generate(prompts, sampling_params) for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

如果输出成功,则说明环境部署完成,可以进行后续模型加载和推理服务化操作。

安装完成后,vLLM-Ascend 已经在昇腾 NPU 上顺利搭建好运行环境,接下来我将带大家进行模型加载、推理服务化以及性能调优的实战操作,让大家能够快速将本地模型变成可调用的 API 服务。

三、vLLM-Ascend 推理服务化实操

vLLM 提供了兼容 OpenAI API 的服务化启动方式,这也是生产环境中最常用的模式。通过这种方式,我们可以把本地模型部署成 API 服务,外部程序只需要通过 HTTP 请求就能调用模型生成文本。这种服务化方式不仅方便在生产环境中集成,也便于多用户并发访问,充分发挥 NPU 的算力优势。

1. 启动 API Server

假设我们使用Qwen/Qwen2.5-7B-Instruct模型(请确保模型权重已下载到本地)。

python -m vllm.entrypoints.openai.api_server \ --model /path/to/Qwen2.5-7B-Instruct \ --trust-remote-code \ --tensor-parallel-size 1 \ --host 0.0.0.0 \ --port 8000 # 示例输出日志 # INFO: Started server process [12345] # INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) # INFO 12-03 10:00:00 llm_engine.py:70] Initializing an LLM engine with config: model='/path/to/Qwen2.5-7B-Instruct'... # INFO 12-03 10:00:02 model_executor.py:45] # PagedAttention: block_size=16, num_gpu_blocks=2048 # INFO 12-03 10:00:10 worker.py:120] Model loaded successfully on Ascend NPU (Device 0). # INFO: Application startup complete.

参数说明:

  • --tensor-parallel-size: 根据你的 NPU 卡数设置,单卡设为 1。
  • --host: 监听地址。

启动过程中,你会看到模型加载、显存分配(KV Cache)以及 Warmup 的日志。

2. 客户端调用测试

服务启动后,我们可以使用curl或 Python 的openai库进行调用。

curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "/path/to/Qwen2.5-7B-Instruct", "messages": [ {"role": "user", "content": "你好,请介绍一下昇腾 NPU。"} ], "temperature": 0.7 }' # 示例响应 # { # "id": "chatcmpl-890123", # "object": "chat.completion", # "created": 1701590000, # "model": "/path/to/Qwen2.5-7B-Instruct", # "choices": [{ # "index": 0, # "message": { # "role": "assistant", # "content": "昇腾(Ascend)是华为推出的AI处理器品牌..." # }, # "finish_reason": "stop" # }], # "usage": { "prompt_tokens": 15, "completion_tokens": 50, "total_tokens": 65 } # }

参数说明:

3. 服务化部署实践与优化

KV CachevLLM 使用 KV 缓存加速长上下文生成,启动日志中会显示分配情况。

  • --max-num-seqs可以调整并发请求数
  • --gpu-memory-utilization用于控制显存占用

多卡部署

  • --tensor-parallel-size设置张量并行度
  • 多卡通信需要 HCCL 配置正确

调试技巧

  • 通过vllm日志监控吞吐量 (tokens/s)
  • 遇到显存不足可降低并发序列或 KV Cache 使用比例

通过服务化部署,vLLM-Ascend 能够将本地模型快速变成可 HTTP 调用的 API 服务。无论是单机单卡还是多卡并发部署,整个流程清晰可控,我个人认为需要重点关注:

环境准备:CANN 驱动、NPU 状态、Docker 镜像或 Python 环境。

模型加载与 KV Cache:确保长上下文生成高效。

API 服务启动与客户端调用:兼容 OpenAI API,外部程序调用简单。

多卡并行与性能调优:通过日志和参数优化吞吐和显存利用率。

对生产环境而言,这种方式不仅降低了部署复杂度,还能最大化利用 Ascend NPU 的算力潜力,同时提供 GPU 类似的使用体验。

四、总结

通过 vLLM-Ascend,我们能够轻松地在昇腾硬件上搭建高性能的大模型推理服务。从环境准备、代码部署到 API 方式启动推理,再到性能调优与问题排查,每一个环节都直接影响最终的吞吐、延迟和稳定性。对我来说,最直观的感受就是:只要底层环境准备充分,vLLM-Ascend 的接入是顺畅且可控的,几乎能够做到“与 GPU 一致的使用体验”,同时充分释放 NPU 的算力潜力。昇腾PAE案例库也为本文的写作提供了有力参考。

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

GIN索引原理

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

作者头像 李华
网站建设 2026/4/11 18:00:47

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

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

作者头像 李华
网站建设 2026/4/15 1:21:52

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

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

作者头像 李华
网站建设 2026/4/16 17:49:17

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

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

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

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

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

作者头像 李华
网站建设 2026/4/16 15:01:31

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

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

作者头像 李华