昇腾NPU推理的“开源之光”:vLLM-Ascend的架构设计与生态全景剖析
昇腾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的演进可以用三句话概括:
-
“硬件可插拔,社区共维护” ——遵循vLLM社区的硬件插件化RFC设计,让昇腾NPU成为vLLM生态中的“一等公民”,而非“二等移植”
-
“ACL图是引擎,开源是灵魂” ——vLLM-Ascend以ACL图执行为运行时基座,以开源社区的集体智慧为持续进化的动力,在18个月内完成了从实验到生产的跨越
-
“与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算力平台建设或开源推理框架选型的相关需求,欢迎进一步沟通。我们可提供针对贵企业具体场景的定制化方案和现场调研服务。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)