昇腾NPU推理的“开源之光”:vLLM-Ascend的架构设计与生态全景剖析

——深度剖析vLLM-Ascend的硬件可插拔设计、ACL图引擎与从“社区实验”到“昇腾推理默认选项”的生态跃迁

一句话概括:vLLM-Ascend不是昇腾NPU推理的“实验性适配”,而是一套遵循vLLM社区硬件可插拔RFC设计、以ACL图引擎为运行时基座、以开源生态为活力源泉的社区维护后端插件——让vLLM在NVIDIA GPU上的高效推理能力无缝迁移至昇腾NPU,并在短短18个月内从社区实验成长为昇腾AI推理生态中不可忽视的开源力量。

2025年2月,vLLM社区正式创建了vllm-project/vllm-ascend仓库。彼时,大模型国产化适配刚刚起步,昇腾NPU上的推理主要依赖华为官方的MindIE引擎,而开源社区的支持几乎是空白。

vLLM-Ascend的诞生,源于一个朴素的工程目标:让vLLM在NVIDIA GPU上已被验证的高效推理能力,能够无缝运行在昇腾NPU上

“无缝”二字说起来简单,但实现起来挑战巨大。vLLM的核心优化——PagedAttention、Continuous Batching、前缀缓存——都是为NVIDIA CUDA生态深度定制的。将它们移植到昇腾的CANN软件栈和NPU硬件架构上,绝不亚于“重写一套推理引擎”。

然而,vLLM-Ascend做到了。

18个月后,vLLM-Ascend已迭代至v0.23.0版本,与上游vLLM保持同步。它已成为昇腾社区中运行vLLM推荐的后端方案,支持Transformer类、MoE、嵌入模型和多模态LLM等多种模型,被LLaMA-Factory、verl、TRL、GPUStack等开源项目广泛集成。

本文将从设计哲学、架构原理、性能表现、生态与使用、以及选型建议五个维度,深度剖析vLLM-Ascend的技术全貌——它不是一个“移植版”,而是一次让开源推理引擎适配国产硬件的工程范式实践

一、设计哲学:社区驱动的硬件可插拔

1.1 背景:当vLLM遇上昇腾

vLLM是GPU平台上最受欢迎的大模型推理框架之一,凭借高效的Continuous Batching和PagedAttention功能而备受青睐。然而,在昇腾NPU上运行大模型推理,长期以来都是国内开发者面临的一项挑战。

华为官方虽然提供了性能表现良好的MindIE推理引擎,但其使用门槛较高,环境配置复杂,限制了非官方团队在实际项目中的部署效率。与此同时,开源社区迫切需要一种更轻量、更开放、更易用的昇腾推理方案。

vLLM-Ascend正是在这一背景下诞生的。

1.2 核心设计:硬件可插拔(Hardware Pluggable)

vLLM-Ascend严格遵循vLLM社区提出的 RFC: Hardware pluggable 设计原则。

这一设计的核心思想是:将硬件后端与推理逻辑解耦。vLLM的上层调度、批处理、内存管理等核心逻辑保持不变,而硬件相关的算子执行、内存分配、设备管理等细节,通过标准化的插件接口注入。

具体来说,vLLM-Ascend提供了一套硬件插件接口,将昇腾NPU与vLLM的集成进行了解耦:

┌─────────────────────────────────────────────────────────────┐
│                    vLLM 核心推理逻辑                         │
│   Scheduler · Memory Manager · KV Cache · Continuous Batch  │
└─────────────────────────────────────────────────────────────┘
                              ↓ 标准化插件接口
┌─────────────────────────────────────────────────────────────┐
│                    vLLM-Ascend 硬件插件                      │
│   ACL图引擎 · AscendWorker · 注意力算子 · 内存管理适配       │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                    昇腾CANN软件栈                           │
│           CANN Runtime · Atlas 硬件驱动                     │
└─────────────────────────────────────────────────────────────┘

这种设计的优势在于:

  • 兼容性:与vLLM上游版本保持同步,每次vLLM发布新版本,vLLM-Ascend可以快速跟进
  • 可维护性:硬件相关的逻辑被隔离在插件层,降低维护成本
  • 生态一致性:使用vLLM-Ascend的开发者,可以沿用vLLM的API和使用习惯

设计模式解读:这里体现的是**适配器模式(Adapter Pattern)策略模式(Strategy Pattern)**的结合——vLLM-Ascend作为适配器,将昇腾NPU的CANN接口适配为vLLM期望的硬件抽象接口;同时,不同的硬件后端(NVIDIA GPU、昇腾NPU、AMD GPU等)作为可替换的策略,通过统一的插件接口接入vLLM核心。

二、架构实现:从ACL图到注意力算子

2.1 运行时引擎:ACL图(ACL Graph)

vLLM-Ascend最核心的运行时机制是ACL图(ACL Graph)

ACL图是vLLM静态图执行在昇腾上的实现。vLLM提供了通用的调度路径,而vLLM-Ascend则提供了ACL图重放所需的平台包装器、捕获尺寸修剪以及特定于注意力的更新逻辑。

工作原理

ACL图通过torch.npu.NPUGraph机制,将模型的计算图捕获并固化,在后续推理中直接重放。这消除了每次推理时的图编译开销,大幅降低了CPU与NPU之间的交互延迟。

vLLM-Ascend支持两种ACL图执行模式:

  • FULL模式:完整图捕获,适用于固定形状的推理
  • FULL_DECODE_ONLY模式:仅解码阶段的图捕获,适用于自回归生成场景

此外,vLLM-Ascend还支持Npugraph_ex——一个编译时期的FX计算图优化层,在FULL/FULL_DECODE_ONLY模式中默认启用。

2.2 注意力机制:MLA与SFA

vLLM-Ascend在注意力算子上进行了深度优化:

MLA(Multi-head Latent Attention) :针对DeepSeek等采用MLA架构的模型,vLLM-Ascend实现了专门的AscendMLAAttentionSpec。MLA通过将Q/K/V投影到紧凑的潜在空间,显著降低了KV Cache的显存占用。

SFA(Sparse Flash Attention) :vLLM-Ascend支持稀疏注意力模式,实现了SFA KV-Quant稀疏注意力,将KV量化、k_rope和per-tile量化scales打包到kv_cache中。

注意力算子目录结构(来自vllm_ascend/attention/):

  • mla_v1.py:MLA注意力实现
  • sfa_v1.py:稀疏Flash Attention实现

这些注意力算子充分利用了昇腾NPU的硬件特性,在保证精度的前提下,尽可能提升了推理效率。

2.3 框架适配:TorchAir

vLLM-Ascend通过TorchAir模块完成PyTorch框架到昇腾NPU的适配。torchair/目录下的torchair_mla.py负责Torch框架的MLA注意力适配。

TorchAir的作用可以理解为:将PyTorch的eager执行模式,转换为昇腾NPU上高效的图执行模式。它负责将PyTorch算子映射为CANN算子,并处理动态shape、内存布局转换等底层细节。

2.4 专家并行:EPLB

对于MoE(混合专家)模型,vLLM-Ascend实现了EPLB(Expert Parallel Load Balancing) 机制。eplb/core/policy/下的代码负责处理专家并行策略,实现动态负载均衡。

在MoE模型中,不同专家的负载可能极不均衡——某些专家被频繁路由,而另一些则闲置。EPLB通过动态调整专家的分布,确保各专家间的负载均衡,从而提升多卡推理的吞吐量。

2.5 支持的硬件与软件

硬件支持

  • Atlas 800I A2 Inference系列
  • Atlas A2 Training系列
  • Atlas 800I A3 Inference系列
  • Atlas A3 Training系列
  • Atlas 300I Duo(实验性支持)

软件要求

  • Python >= 3.9, < 3.12
  • CANN(华为异构计算架构)

三、性能表现:从“追赶”到“比肩”

3.1 与MindIE的性能对比

vLLM-Ascend与华为官方MindIE引擎的性能对比,是社区最关注的话题之一。多项独立评测给出了相对一致的结论。

腾讯云开发者社区的实测数据(Qwen3-235B-int8,单机8卡):

框架 输入长度 并发 TTFT (s) TPOT (tok/s)
vLLM 2K 16 1.3 14
MindIE 2K 16 2.9 20
vLLM 8K 16 3.5 12
MindIE 8K 16 12.0 19
vLLM 64K 4 22 8
MindIE 64K 4 39 9

关键发现

  • vLLM的TTFT(首Token延迟)显著优于MindIE——在8K输入下,vLLM的TTFT为3.5秒,而MindIE为12秒,差距达3.4倍
  • MindIE的TPOT(每输出Token时间)优于vLLM——在2K输入下,MindIE的TPOT达20 tok/s,vLLM为14 tok/s
  • 结论是:vLLM的TTFT优秀不少,但TPOT影响了总生成时间

华为专家的建议是:vLLM经过各环境变量设置后,性能可比肩开启prefix cache的MindIE,同时vLLM支持更长上下文和更多外围能力

百度开发者社区的评测发现:

  • 官方MindIE引擎性能强劲但使用门槛高
  • 开源vLLM Ascend插件生态活跃但功能覆盖度待验证
  • 在4卡加速比测试中,官方方案达到3.7倍(理论最大4倍),开源方案为3.2倍
  • 官方引擎在LLM推理中P99延迟低12%,但开源方案在嵌入模型任务中吞吐量高8%

核心洞察:vLLM-Ascend在首Token延迟(TTFT)上具有显著优势,这得益于其更轻量的架构和更高效的调度策略。而在稳态生成吞吐(TPOT)上,MindIE凭借华为的深度优化仍有一定优势。但随着vLLM-Ascend的持续迭代,这一差距正在快速缩小。

3.2 内存管理效率

vLLM-Ascend继承了vLLM核心的PagedAttention机制。有评测指出,vLLM-Ascend的内存管理效率显著优于MindIE的静态分配

PagedAttention通过将KV Cache分页管理,消除了传统静态分配中的内存碎片问题,使得在相同显存容量下可以支持更大的批处理规模和更长的上下文。

3.3 稳定性与成熟度

在稳定性方面,vLLM-Ascend尚处于快速迭代阶段。社区通过Issue追踪定期周会持续推动改进。

2026年8月,vLLM-Ascend发布了v0.23.0正式版本,与上游vLLM v0.23.0保持对齐。这标志着项目已进入生产就绪的成熟阶段

四、生态与使用:从安装到生产部署

4.1 快速安装

vLLM-Ascend的安装极为简便:

# 一行命令安装
pip install vllm vllm-ascend

或从源码安装最新主分支:

git clone https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend
pip install -e .

4.2 启动推理服务

启动vLLM-Ascend在线推理服务:

vllm serve ~/qwen36_27b_w8a8 \
    --quantization ascend \
    # 指定使用Ascend量化推理后端

vLLM-Ascend支持Ascend量化推理后端,可加载W8A8等量化权重。

4.3 生态集成

vLLM-Ascend已被多个主流开源项目集成:

项目 用途
LLaMA-Factory 模型微调
verl 强化学习
TRL Transformer强化学习
GPUStack 开源模型服务平台

GPUStack是对昇腾NPU支持最完善的开源模型服务平台之一。它开箱即用地集成了MindIE、vLLM(vLLM Ascend)、llama-box等多个后端。平台原生支持昇腾上的多种模型类型,包括大语言模型、多模态模型、文本嵌入模型、重排序模型等,同时兼容昇腾的多机多卡推理场景。

4.4 社区活跃度

vLLM-Ascend拥有活跃的社区支持:

  • 官方文档vllm-ascend.readthedocs.io
  • Slack频道#sig-ascend
  • 用户论坛discuss.vllm.ai
  • 每周例会tinyurl.com/vllm-ascend-meeting

2025年3月,vLLM团队与昇腾团队在北京举办了vLLM Beijing Meetup。2025年5月,双方联合发布了博客文章**《Introducing vLLM Hardware Plugin, Best Practice from Ascend NPU》** 。

五、vLLM-Ascend vs MindIE:选型建议

对于需要在昇腾NPU上部署大模型推理的开发者,vLLM-Ascend与MindIE构成了 “开源社区方案”与“官方深度优化方案” 的双引擎格局。

对比维度 vLLM-Ascend(开源方案) MindIE(官方引擎)
核心优势 开源生态活跃、API兼容、社区迭代快 华为官方深度优化、性能潜力大
TTFT(首Token延迟) 显著优于MindIE 相对较慢
TPOT(输出Token速度) 正在追赶 当前更优
内存管理 PagedAttention,效率更高 静态分配
上下文长度 支持更长上下文 相对受限
外围能力 更丰富(multi content等) 相对较少
易用性 配置简单、文档开放 配置复杂、文档相对封闭
多卡加速比 3.2倍 3.7倍
P99延迟 较高 低12%
嵌入模型任务 吞吐量高8%
模型支持 快速发展中 官方认证模型

选型决策树

你的场景是什么?
│
├── 追求极致性能、有华为官方支持
│   └── 推荐:MindIE
│       └── 前提:愿意投入时间学习复杂配置
│
├── 追求生态活跃度、快速迭代、API兼容
│   └── 推荐:vLLM-Ascend
│       └── 优势:TTFT更快、内存效率更高、社区支持活跃
│
├── 需要嵌入模型推理(Embedding)
│   └── 推荐:vLLM-Ascend(吞吐量高8%)
│
├── 需要长上下文推理(>64K)
│   └── 推荐:vLLM-Ascend(支持更长上下文)
│
└── 需要多卡分布式推理
    ├── 追求极致加速比 → MindIE(3.7倍 vs 3.2倍)
    └── 追求易用性和社区支持 → vLLM-Ascend

六、总结与展望

6.1 关键里程碑

时间 里程碑 意义
2024年12月 与vLLM社区合作启动Hardware pluggable RFC 奠定架构基础
2025年2月 vllm-project/vllm-ascend仓库创建 项目正式诞生
2025年5月 v0.7.3首个正式版本发布 生产就绪
2026年8月 v0.23.0发布 与上游vLLM保持同步

6.2 核心设计哲学提炼

vLLM-Ascend的演进可以用三句话概括:

  1. “硬件可插拔,社区共维护” ——遵循vLLM社区的硬件插件化RFC设计,让昇腾NPU成为vLLM生态中的“一等公民”,而非“二等移植”

  2. “ACL图是引擎,开源是灵魂” ——vLLM-Ascend以ACL图执行为运行时基座,以开源社区的集体智慧为持续进化的动力,在18个月内完成了从实验到生产的跨越

  3. “与MindIE互补,而非替代” ——vLLM-Ascend与MindIE形成了“开源活跃、TTFT快、内存效率高”与“官方深度优化、TPOT优、多卡加速比高”的互补格局,共同丰富了昇腾推理生态

6.3 核心架构亮点速览

亮点 说明
硬件可插拔设计 遵循vLLM社区RFC,硬件后端与推理逻辑解耦
ACL图执行引擎 静态图捕获与重放,消除图编译开销
MLA + SFA注意力 针对DeepSeek MLA和稀疏注意力的深度优化
EPLB专家并行 MoE模型的动态负载均衡
PagedAttention 继承vLLM核心,内存管理效率优于静态分配
TorchAir框架适配 PyTorch到昇腾NPU的无缝映射
Day-0模型支持 Transformer/MoE/Embedding/多模态全覆盖

6.4 对开发者的启示

vLLM-Ascend的故事告诉我们:国产算力平台的软件生态,不仅需要官方的“精装房”,也需要开源的“毛坯房”。

MindIE是华为官方提供的“精装房”——性能调优到极致,但配置复杂、门槛较高。vLLM-Ascend则是开源的“毛坯房”——开放、灵活、社区驱动,开发者可以自由定制和贡献。

两者并非替代关系,而是互补关系。它们共同构成了昇腾NPU推理的完整生态:追求极致性能选MindIE,追求开放生态和快速迭代选vLLM-Ascend。

对于开发者,这意味着:

  • 如果你需要快速上手、API兼容、社区活跃 → vLLM-Ascend是首选
  • 如果你追求极致吞吐和多卡加速比 → MindIE当前更优
  • 如果你需要长上下文推理 → vLLM-Ascend支持更长上下文
  • 如果你需要嵌入模型推理 → vLLM-Ascend吞吐量更高
  • 如果你希望参与开源贡献 → vLLM-Ascend欢迎所有贡献者

最后,vLLM-Ascend的故事还远未结束。从v0.7.3到v0.23.0,从社区实验到生产就绪——18个月的时间,它完成了从“能不能跑”到“跑得好不好”的跨越。而每一次版本迭代、每一个性能优化、每一行贡献代码,都在回答同一个问题:如何让开源推理引擎在国产算力平台上,跑出与国际主流GPU比肩的效率?

而答案,正写在每一行vLLM-Ascend的源码和每一次社区的周会讨论里。

本文数据来源:vLLM-Ascend GitHub仓库(github.com/vllm-project/vllm-ascend)、vLLM-Ascend官方文档(vllm-ascend.readthedocs.io)、腾讯云开发者社区性能实测、百度开发者社区评测、华为云官方文档及各技术社区。所有版本号、发布日期及性能数据均基于公开可验证的官方资料。

如您所在的企业正面临昇腾NPU大模型推理部署、国产化AI算力平台建设或开源推理框架选型的相关需求,欢迎进一步沟通。我们可提供针对贵企业具体场景的定制化方案和现场调研服务。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐