vllm-ascend完全指南:如何在昇腾NPU上无缝部署大语言模型

【免费下载链接】vllm-ascend Community maintained hardware plugin for vLLM on Ascend 【免费下载链接】vllm-ascend 项目地址: https://gitcode.com/gh_mirrors/vl/vllm-ascend

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支持多节点分布式部署,以应对更大规模的模型和数据。以下是多节点部署的基本架构:

多节点DP架构

在进行多节点部署前,需要验证节点间的通信:

  1. 检查物理层连接,确保所有NPU通过光模块连接且状态正常。
  2. 在每个节点上执行命令验证网络状态,确保结果均为success且状态为UP
  3. 获取各节点NPU的IP地址,并进行跨节点PING测试。

量化技术

为了在有限的硬件资源上部署更大的模型,vllm-ascend支持多种量化方法,如W8A8、W8A8_DYNAMIC、W4A8_DYNAMIC等。量化算法概览如下:

量化算法概览

层分片技术

层分片技术可以将模型的不同层分布到不同的设备上,提高并行效率。层分片示意图如下:

层分片示意图

设备世界配置

vllm-ascend支持灵活的设备世界配置,以适应不同的硬件环境。设备世界配置示例如下:

设备世界配置

模型加载流程

vllm-ascend提供了高效的模型加载流程,通过NetLoader实现模型的快速加载和传输。NetLoader流程图如下:

NetLoader流程图

总结

通过本指南,你已经了解了如何在昇腾NPU上使用vllm-ascend部署大语言模型的基本步骤和高级功能。无论是离线批量推理还是API服务部署,vllm-ascend都能为你提供高效、便捷的解决方案。希望本指南能帮助你在昇腾NPU平台上顺利部署和应用大语言模型,开启AI应用的新征程!

官方文档:docs/source/installation.mddocs/source/quick_start.md

【免费下载链接】vllm-ascend Community maintained hardware plugin for vLLM on Ascend 【免费下载链接】vllm-ascend 项目地址: https://gitcode.com/gh_mirrors/vl/vllm-ascend

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐