vllm-project/vllm-ascend · 上手攻略
- 仓库:vllm-project/vllm-ascend
- 链接:https://github.com/vllm-project/vllm-ascend
- 分类:ai
- 作者:Tom
- 更新:2026-07-10
是什么
vllm-ascend 是华为昇腾(Ascend)NPU 的官方 vLLM 硬件插件,让 vLLM 高性能推理框架能跑在昇腾芯片上。它由 vLLM 社区维护,遵循 vLLM 的硬件可插拔接口(Hardware Pluggable RFC),是昇腾后端在 vLLM 生态的推荐方案。
通俗理解:vLLM 是 LLM 推理的"操作系统",vllm-ascend 就是让这个 OS 支持华为昇腾 NPU 的驱动/插件。
解决什么问题
- 昇腾芯片上跑 vLLM:昇腾 NPU在中国市场有大量部署,但 vLLM 官方最初只支持 NVIDIA CUDA,需要社区插件才能在昇腾上运行
- 高性能推理:相比基于 Transformers 库的原始推理,vLLM 有 PagedAttention、异步执行等大量优化,vllm-ascend 把这些优化带到昇腾平台
- 统一推理接口:在昇腾上用 vLLM 相同的 Python API,降低从 NVIDIA 迁移到昇腾的学习成本
快速安装
环境要求
- 硬件:Atlas 800I A2(推理)、Atlas A2(训练)、Atlas 800I A3(推理)、Atlas A3(训练)、Atlas 300I Duo(实验性)
- 操作系统:Linux
- Python:>= 3.10
推荐版本组合
⚠️ 版本对应关系复杂,安装前务必确认与你的 vLLM 主版本匹配。最新稳定版本为 v0.18.0,对应 vLLM v0.18.x。
| 版本 | 类型 | 对应 vLLang 版本 |
|---|---|---|
| v0.18.0 | Latest 稳定版 | vLLM 0.18.x |
| v0.13.0 | 稳定版 | vLLM 0.13.x |
| v0.22.1rc1 | 最新 RC 版 | vLLM 0.22.x(开发中) |
pip 安装(稳定版 v0.18.0)
pip install vllm==0.18.0
pip install vllm-ascend==0.18.0
从源码编译
# 克隆
git clone https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend
# 切到对应分支(以 v0.18.0 为例)
git checkout releases/v0.18.0
# 安装依赖并编译
pip install -e .
# 验证
python -c "import vllm; print(vllm.__version__)"
Docker 方式(推荐生产环境)
# 官方昇腾 Docker 镜像(已有 CANN + vLLM 环境)
docker pull ascendpro/vllm-ascend:v0.18.0
核心用法
基本推理调用
from vllm import LLM, SamplingParams
# 指定后端为昇腾
llm = LLM(
model="meta-llama/Llama-2-7b-chat-hf",
tensor_parallel_size=1, # 单卡;多卡改为 2/4/8
device="ascend", # 关键:指定昇腾后端
trust_remote_code=True,
)
sampling_params = SamplingParams(
temperature=0.8,
top_p=0.95,
max_tokens=512,
)
outputs = llm.generate(["Hello, world!"], sampling_params)
for output in outputs:
print(output.outputs[0].text)
支持的模型类型
- Dense Transformer:LLaMA、Qwen、Mistral 等常规模型
- MoE(混合专家):Mixtral、Qwen-MoE 等
- Embedding 模型:用于向量检索场景
- 多模态 LLM:支持视觉语言模型(参考官方 Support Matrix 确认具体版本)
📖 完整支持列表见:Supported Models
大规模 Expert Parallelism(EP)部署
v0.9.1+ 支持多卡 Expert Parallelism:
# 多卡启动示例(4卡 EP)
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2-57B-A14B \
--tensor-parallel-size 4 \
--device-ptdc-plugin ascend \
--numa-aware \
--enforce-eager
⚠️ EP 是 MoE 模型专用特性,确认你的硬件和模型支持后再使用。
启动 OpenAI 兼容 API 服务
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-2-7b-chat-hf \
--device ascend \
--port 8000 \
--host 0.0.0.0
然后用标准 OpenAI API 格式调用:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Llama-2-7b-chat-hf",
"messages": [{"role": "user", "content": "Hello!"}]
}'
典型适用场景
- 昇腾服务器推理部署:在中国云/私有化环境有大量昇腾设备,需要高吞吐量 LLM 推理服务
- 国产化替代:从 NVIDIA GPU 迁移到昇腾,需要保持 vLLM 的优化特性和 API 兼容性
- 大规模 MoE 推理:Expert Parallelism 对 MoE 模型在昇腾多卡上的并行加速
- fine-tuning + 推理联动:配合 LLaMA-Factory/verl/TRL 在昇腾上做训练,推理也用 vLLM Ascend
坑与注意
- 版本强耦合:vllm-ascend 版本必须与 vLLM 主版本严格对应,混用会导致运行时错误。先查 Release 列表 确认对应关系。
- CANN 版本依赖:昇腾芯片需要配套的 CANN(Compute Architecture for Neural Networks)驱动,版本要匹配;建议用官方 Docker 镜像避免环境问题。
- Atlas 300I Duo 是实验性:生产环境推荐 Atlas 800I A2/A3。
- v0.7.x 分支已停止维护:不要在生产环境使用 v0.7.x 系列。
- 中文文档有限:主要文档是英文,配置问题可参考 vLLM Ascend 论坛。
- 异步推理需开
enforce_eager=false:否则部分异步优化不会生效(但内存占用略高)。
与同类对比
| 方案 | 支持硬件 | 优化程度 | 维护主体 |
|---|---|---|---|
| vllm-ascend | 昇腾 NPU | 高(官方插件) | vLLM 社区 + 华为 |
| vLLM 官方(CUDA) | NVIDIA GPU | 最高 | vLLM 官方 |
| Transformers + 昇腾 | 昇腾 NPU | 中(无 PagedAttention 等) | 昇腾 SDK |
| text-generation-inference(TGI) | NVIDIA GPU | 高 | HuggingFace |
vllm-ascend 是昇腾上最完整的 vLLM 方案,如果你同时用昇腾和 NVIDIA,推荐用同一个 vLLM API,只是换 --device 参数。
一句话推荐结论
在昇腾 NPU 上跑 LLM 推理,vllm-ascend 是目前官方认可、性能最优、生态最完整的方案——用 Docker 镜像快速上手,用 OpenAI 兼容 API 零改动迁移现有应用。