5.3 vLLM-Ascend:在昇腾上跑通主流大模型推理
掌握 vLLM 官方社区维护的昇腾后端插件 vLLM-Ascend——安装、环境配置、模型部署与 OpenAI 兼容 API 使用,让主流大模型在昇腾 NPU 上开箱即用
如果你想让 Qwen、Llama 等主流大模型「今天就跑在昇腾上」,vLLM-Ascend 是最短路径。它是 vLLM 官方社区维护的昇腾后端插件,让 vLLM 生态(引擎、API、工具链)无缝落到昇腾 NPU。这一章讲清它的安装、使用与迁移。
📑 目录
- 1. vLLM-Ascend 是什么
- 2. 支持的硬件与软件版本
- 3. 安装与环境配置
- 4. 部署一个推理服务
- 5. 在线服务:OpenAI 兼容 API
- 6. 关键配置与优化项
- 7. 从 NVIDIA 迁移的注意事项
- 总结
- 延伸阅读
1. vLLM-Ascend 是什么
vLLM-Ascend 是 vLLM 项目的昇腾硬件插件(Hardware Backend / Plugin):
- 由 vLLM 官方社区维护(vllm-project 组织下),持续跟进 vLLM 主线版本;
- 把 vLLM 的引擎内核(PagedAttention、连续批处理、前缀缓存等)适配到昇腾 NPU;
- 开发者用几乎和 NVIDIA 环境一样的方式跑 vLLM——命令、API、配置都高度一致。
定位类比:vLLM-Ascend ≈ vLLM 的「CUDA 换 NPU」适配层,生态体验最平滑。
2. 支持的硬件与软件版本
截至本文写作时(2026 年),vLLM-Ascend 的官方支持矩阵大致为(以仓库 README 为准):
硬件:
- Atlas 800I A2 推理服务器(昇腾 910B 系)
- Atlas 800I A3 推理服务器 / A3 训练系列(昇腾 910C 系)
- Atlas 300I Duo 推理卡
- 昇腾 AI 加速云服务器等
软件:
- Python >= 3.10, < 3.13
- CANN 9.1.0(对应 Ascend HDK 版本见 Release Notes)
- PyTorch 2.10.0
- TorchNPU 2.10.0.post4
- vLLM 版本与 vllm-ascend 插件版本保持一致
以上为 vLLM-Ascend 官方 README 当前推荐的版本组合(2026 年),随 vLLM/CANN 发布节奏变动,部署前必须核对 vLLM-Ascend 仓库 README 的版本匹配表。
3. 安装与环境配置
# 1. 确保 CANN 与驱动固件已安装并 source 环境
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 2. 安装对应版本的 PyTorch 与 TorchNPU(以官方版本配套表为准)
pip install torch==2.10.0
pip install torch-npu==2.10.0.post4
# 3. 安装 vllm 与 vllm-ascend
pip install vllm
pip install vllm-ascend
验证安装:
python -c "import vllm, vllm_ascend; print('vllm-ascend ok')"
# 或用官方提供的快速验证脚本跑一个小模型
4. 部署一个推理服务
离线推理(Offline Inference)示例:
from vllm import LLM, SamplingParams
# 引入插件后,vllm 自动识别昇腾后端(VLLM_USE_V1 等配置按版本而定)
import vllm_ascend
llm = LLM(
model="Qwen/Qwen2.5-7B-Instruct",
dtype="bfloat16",
max_model_len=8192,
tensor_parallel_size=8, # 多卡张量并行
# 量化场景可加 quantization="awq" / "w8a8" 等
)
params = SamplingParams(temperature=0.7, max_tokens=256)
outputs = llm.generate(["介绍一下昇腾AI芯片", "写一首关于春天的诗"], params)
for out in outputs:
print(out.outputs[0].text)
要点:除了 import vllm_ascend(激活后端)和部分硬件相关配置,其余 API 与 NVIDIA 环境完全一致——这就是 vLLM-Ascend 的设计目标。
5. 在线服务:OpenAI 兼容 API
启动一个 OpenAI 兼容的推理服务:
# 命令行启动(在 CANN 环境已 source 的前提下)
vllm serve Qwen/Qwen2.5-7B-Instruct \
--dtype bfloat16 \
--tensor-parallel-size 8 \
--max-model-len 8192 \
--port 8000
然后像调用 OpenAI API 一样调用:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[{"role": "user", "content": "介绍一下昇腾AI芯片"}],
)
print(resp.choices[0].message.content)
这样,现有的 LLM 应用(RAG、Agent、Chat 应用)几乎零成本切换到昇腾后端。
6. 关键配置与优化项
常用配置(以 vLLM-Ascend 官方文档为准):
| 配置 | 作用 | 建议 |
|---|---|---|
--dtype | 精度(bfloat16/fp16) | 默认 bf16,量化场景用 w8a8/fp8 |
--tensor-parallel-size | 张量并行卡数 | 高频通信放机内,跨机要谨慎 |
--max-model-len | 最大序列长度 | 与 KV Cache 显存预算联动 |
--quantization | 量化方案(awq/w8a8 等) | 结合模型可用权重选择 |
| KV Cache 相关 | 分页 block 大小、KV 量化 | 大吞吐场景收益明显 |
调优思路:先确认单卡小 batch 延迟达标 → 再逐步增加并发看吞吐 → 显存受限时上 KV Cache 量化/更长 max-len 规划。
7. 从 NVIDIA 迁移的注意事项
NVIDIA 上跑过 vLLM 的团队,迁到昇腾只需注意几点:
- 硬件差异:单卡显存与带宽不同,TP 卡数与 KV Cache 预算要重新评估。
- 版本对齐:CANN/TorchNPU/vLLM-Ascend 版本必须按匹配表装,跳过容易踩坑。
- 算子支持:个别小众模型/算子可能未适配,优先选支持矩阵内的模型。
- 性能验证:用官方 Benchmark 与自己的服务指标(TTFT/TPOT)建立基线后再谈优化。
- 量化权重:确认所用模型权重格式(AWQ/FP8)在昇腾上的支持状态,必要时重新量化。
总结
- vLLM-Ascend 是 vLLM 官方社区的昇腾后端插件,让主流大模型在昇腾上「开箱即用」。
- 支持 Atlas A2/A3 训练与推理系列、300I Duo 等硬件,要求 CANN 9.1.0 + 对应 TorchNPU。
- 部署 = 装插件 → vllm serve 启动 → OpenAI 兼容 API 调用,与 NVIDIA 环境几乎一致。
- 迁移要点:版本匹配、TP 放机内、量化格式支持、先建基线再优化。