vllm-ascend完全指南:如何在昇腾NPU上无缝部署大语言模型
vllm-ascend是一个社区维护的硬件插件,专为在昇腾NPU上高效部署大语言模型而设计。本指南将帮助你快速掌握在昇腾NPU上使用vllm-ascend部署大语言模型的方法,从环境准备到实际应用,让你轻松开启高效的大模型推理之旅。## 昇腾NPU与vllm-ascend简介 🚀昇腾NPU(神经网络处理器)是华为自主研发的AI加速芯片,为大语言模型的部署提供了强大的算力支持。而vllm-
vllm-ascend完全指南:如何在昇腾NPU上无缝部署大语言模型
vllm-ascend是一个社区维护的硬件插件,专为在昇腾NPU上高效部署大语言模型而设计。本指南将帮助你快速掌握在昇腾NPU上使用vllm-ascend部署大语言模型的方法,从环境准备到实际应用,让你轻松开启高效的大模型推理之旅。
昇腾NPU与vllm-ascend简介 🚀
昇腾NPU(神经网络处理器)是华为自主研发的AI加速芯片,为大语言模型的部署提供了强大的算力支持。而vllm-ascend作为vLLM在昇腾平台的硬件插件,能够充分发挥昇腾NPU的性能优势,实现大语言模型的高效推理。
vllm-ascend支持多种昇腾硬件设备,包括Atlas A2训练系列、Atlas 800I A2 inference系列、Atlas A3训练系列、Atlas 800I A3 inference系列以及实验性支持的Atlas 300I inference系列等。
快速上手:环境搭建步骤 🏗️
准备工作
在开始部署之前,请确保你的系统满足以下要求:
- OS:Linux
- Python:>= 3.10,< 3.12
- 带有昇腾NPU的硬件,通常是Atlas 800 A2系列
- 软件:Ascend HDK、CANN 8.5.0、torch-npu 2.9.0、torch 2.9.0、NNAL 8.5.0等
使用容器快速搭建环境
容器化部署是推荐的方式,它可以简化环境配置过程。以下是在不同操作系统上使用容器的步骤:
:::::{tab-set} ::::{tab-item} Ubuntu
# 更新DEVICE以匹配你的设备(/dev/davinci[0-7])
export DEVICE=/dev/davinci0
# 更新vllm-ascend镜像
# Atlas A2:
# export IMAGE=quay.io/ascend/vllm-ascend:|vllm_ascend_version|
# Atlas A3:
# export IMAGE=quay.io/ascend/vllm-ascend:|vllm_ascend_version|-a3
export IMAGE=quay.io/ascend/vllm-ascend:|vllm_ascend_version|
docker run --rm \
--name vllm-ascend \
--shm-size=1g \
--device $DEVICE \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-p 8000:8000 \
-it $IMAGE bash
# 安装curl
apt-get update -y && apt-get install -y curl
::::
::::{tab-item} openEuler
# 更新DEVICE以匹配你的设备(/dev/davinci[0-7])
export DEVICE=/dev/davinci0
# 更新vllm-ascend镜像
# Atlas A2:
# export IMAGE=quay.io/ascend/vllm-ascend:|vllm_ascend_version|-openeuler
# Atlas A3:
# export IMAGE=quay.io/ascend/vllm-ascend:|vllm_ascend_version|-a3-openeuler
export IMAGE=quay.io/ascend/vllm-ascend:|vllm_ascend_version|-openeuler
docker run --rm \
--name vllm-ascend \
--shm-size=1g \
--device $DEVICE \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-p 8000:8000 \
-it $IMAGE bash
# 安装curl
yum update -y && yum install -y curl
:::: :::::
默认工作目录是/workspace,vLLM和vLLM Ascend代码位于/vllm-workspace,并以开发模式安装,方便开发者快速修改代码并生效。
模型部署实战:两种常用方式 ✨
方式一:离线批量推理
使用vLLM进行离线批量推理非常简单,只需运行以下Python脚本:
from vllm import LLM, SamplingParams
prompts = [
"Hello, my name is",
"The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# 首次运行将花费约3-5分钟(10 MB/s)下载模型
llm = LLM(model="Qwen/Qwen3-0.6B")
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}")
方式二:OpenAI Completions API服务
vLLM还可以部署为实现OpenAI API协议的服务器。使用以下命令启动vLLM服务器:
# 部署vLLM服务器(首次运行将花费约3-5分钟(10 MB/s)下载模型)
vllm serve Qwen/Qwen3-0.6B &
当看到以下日志时,说明服务器已成功启动:
INFO: Started server process [3594]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
你可以查询模型列表:
curl http://localhost:8000/v1/models | python3 -m json.tool
也可以使用输入提示查询模型:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-0.6B",
"prompt": "Beijing is a",
"max_completion_tokens": 5,
"temperature": 0
}' | python3 -m json.tool
要停止后台运行的vLLM进程,可以使用以下命令:
VLLM_PID=$(pgrep -f "vllm serve")
kill -2 "$VLLM_PID"
高级功能探索 🔍
分布式部署
vllm-ascend支持多节点分布式部署,以应对更大规模的模型和数据。以下是多节点部署的基本架构:
在进行多节点部署前,需要验证节点间的通信:
- 检查物理层连接,确保所有NPU通过光模块连接且状态正常。
- 在每个节点上执行命令验证网络状态,确保结果均为
success且状态为UP。 - 获取各节点NPU的IP地址,并进行跨节点PING测试。
量化技术
为了在有限的硬件资源上部署更大的模型,vllm-ascend支持多种量化方法,如W8A8、W8A8_DYNAMIC、W4A8_DYNAMIC等。量化算法概览如下:
层分片技术
层分片技术可以将模型的不同层分布到不同的设备上,提高并行效率。层分片示意图如下:
设备世界配置
vllm-ascend支持灵活的设备世界配置,以适应不同的硬件环境。设备世界配置示例如下:
模型加载流程
vllm-ascend提供了高效的模型加载流程,通过NetLoader实现模型的快速加载和传输。NetLoader流程图如下:
总结
通过本指南,你已经了解了如何在昇腾NPU上使用vllm-ascend部署大语言模型的基本步骤和高级功能。无论是离线批量推理还是API服务部署,vllm-ascend都能为你提供高效、便捷的解决方案。希望本指南能帮助你在昇腾NPU平台上顺利部署和应用大语言模型,开启AI应用的新征程!
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐






所有评论(0)