vLLM镜像是否支持国产化芯片如昇腾、寒武纪?

在大模型落地狂飙的今天,推理性能几乎成了每个AI团队的“命门”🔥。一个能跑得快、吞吐高、延迟稳的服务引擎,可能直接决定产品是“丝滑上线”还是“卡成PPT”。于是,vLLM横空出世——凭借PagedAttention和连续批处理,它把LLM推理效率拉到了新高度,甚至被戏称为“GPU榨汁机”🍹。

但问题来了:当我们谈“自主可控”,当政企项目强制要求国产芯片,还能不能继续用vLLM?
比如手握昇腾910或寒武纪MLU370,能不能也享受这份“5-10倍吞吐提升”的快乐?🤔

答案很现实:目前不行,至少不是原生支持
但这背后的原因、替代路径、以及未来的可能性,远比一句“不支持”复杂得多。咱们来深挖一下。


为什么vLLM这么快?核心不在模型,而在“内存管理”

很多人以为vLLM快是因为优化了Transformer算子,其实不然。它的杀手锏,藏在KV Cache的调度方式里。

传统推理框架(比如Hugging Face Transformers)是怎么做的?
简单粗暴:为每个请求预分配一块连续显存存放注意力中的Key/Value缓存。哪怕你只输入一句话,系统也会按最大上下文长度预留空间——这就导致大量显存“躺着睡觉”,利用率惨淡😴。

而vLLM做了什么?它引入了操作系统里的“虚拟内存分页”思想,搞出了 PagedAttention

  • 把KV缓存切成固定大小的“页面”(page),比如每页存2048个token;
  • 用页表记录逻辑块到物理块的映射;
  • 不同请求可以共享相同前缀的页面(比如大家都用同一个prompt);
  • 内存不必连续,动态申请释放,彻底告别碎片。

这就像从“整栋楼包租”变成“按房间出租”,资源利用率瞬间飙升30%-70%📈。配合连续批处理(新请求随时插队进正在跑的batch),GPU几乎时刻满载,吞吐自然起飞。

from vllm import LLM, SamplingParams

llm = LLM(model="qwen/Qwen-7B", tensor_parallel_size=2, dtype='half')
sampling_params = SamplingParams(temperature=0.7, max_tokens=200)

outputs = llm.generate(["写一首关于春天的诗"], sampling_params)
print(outputs[0].outputs[0].text)

你看,代码简洁得不像话。但底层却藏着一整套精密的内存调度系统——而这套系统的地基,是 CUDA + Triton + NVIDIA统一内存架构

换句话说:vLLM是为NVIDIA生态量身定制的“深度优化体操运动员”,动作再美,换块场地(比如昇腾、寒武纪)可能直接摔跤🤸‍♂️。


昇腾和寒武纪:国产AI芯片的现状与挑战

我们先看看这两家“国产顶流”长啥样👇

华为昇腾 Ascend

  • 架构:达芬奇NPU,专为AI计算设计;
  • 软件栈:CANN(类CUDA)+ MindSpore(类PyTorch);
  • 模型部署流程:PyTorch → ONNX → ATC工具转OM格式 → 在Ascend设备运行;
  • 特点:生态封闭但完整,华为云全面支持,适合政务、金融等合规场景。

寒武纪 Cambricon MLU

  • 架构:自研MLU指令集,支持CNN/Transformer;
  • 工具链:Magicmind编译器,支持ONNX/TensorFlow/PyTorch导入;
  • 部署方式:模型 → 编译为CNML中间表示 → Runtime执行;
  • 特点:开放性略好,但社区小,文档少,调试成本高。

两者共通点也很明显:
❌ 不支持CUDA
❌ 没有Triton这样的通用内核编程语言
❌ 内存管理机制与CUDA Unified Memory差异大
✅ 都有自己的“类CUDA”抽象层,理论上可实现类似功能

所以问题就变成了:能不能在国产芯片上,复刻出PagedAttention?


当前vLLM在国产芯片上的可行性:三条路,条条有坑 🚧

路径一:导出ONNX → 转国产芯片格式 ❌(功能降级)

这是最直观的想法:先把模型从vLLM中导出为ONNX,再转给昇腾或寒武纪。

import torch
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B", torch_dtype=torch.half).eval()
dummy_input = tokenizer("hello", return_tensors="pt").input_ids

torch.onnx.export(
    model,
    dummy_input,
    "qwen_7b.onnx",
    input_names=["input_ids"],
    output_names=["logits"],
    dynamic_axes={"input_ids": {0: "batch", 1: "sequence"}},
    opset_version=13
)

听着挺美好,但现实很骨感:

  • PagedAttention没了:ONNX只描述算子连接,无法表达“分页调度逻辑”;
  • 连续批处理没了:变成静态批处理,GPU/NPU经常空转;
  • KV缓存管理退化:只能预分配最大长度,显存浪费严重;
  • 性能暴跌:实测吞吐可能只有原生vLLM的1/5甚至更低。

👉 结论:能跑,但已经不是vLLM了,只是一个普通推理模型。


路径二:魔改vLLM,加国产芯片后端 ⚠️(工程地狱)

理论上,我们可以给vLLM加一个“Ascend后端”或“Cambricon后端”,就像它支持CUDA一样。

但这意味着你要:

  1. 实现一套Device Abstraction Layer(设备抽象层),让vLLM核心调度逻辑不依赖具体硬件;
  2. 在国产芯片驱动中模拟“分页内存”行为,可能需要修改Runtime或内核模块;
  3. 重写所有自定义CUDA Kernel(如PagedAttention的核心实现),用TBE(昇腾)或BANG(寒武纪)重写;
  4. 处理多卡通信(NCCL → HCCL / 自研AllReduce);
  5. 联合编译器优化,确保算子融合不被破坏。

这工作量,堪比再造一个vLLM……而且还没人帮你review代码😅。

目前社区没有任何公开项目完成这一壮举。虽然有传言华为内部在做类似“MindSpeed”的优化框架,但未开源,外界无从得知细节。


路径三:另起炉灶,打造“中国版vLLM” ✅(未来可期)

既然搬不过去,那就自己建一座桥。

已经有团队在探索这条路:

  • 昆仑芯、壁仞、摩尔线程等国产GPU厂商,开始构建自己的“类CUDA”生态;
  • 百度PaddlePaddle + Paddle Inference已在尝试支持高效KV Cache管理;
  • 华为MindSpore Lite也在推进移动端大模型推理优化;
  • 学术界出现“PagedKV on NPU”相关论文,虽未落地,但思路已明。

如果能在以下方向突破,国产芯片也能拥有“vLLM级体验”:

关键能力 实现建议
分页内存管理 在Runtime中实现页表+物理页池,暴露API供上层调度
动态批处理 构建轻量调度器,支持请求动态加入/退出batch
算子融合 编译器层面融合Attention + Page Lookup操作
接口兼容 提供OpenAI风格REST API,降低迁移成本
社区共建 开源基础框架,吸引开发者贡献适配层

一旦形成正循环,国产AI芯片就不只是“能跑模型”,而是“跑得又快又省”。


实际部署建议:别理想化,要分场景决策 💡

回到现实,你现在要上项目,怎么选?

✅ 场景一:追求极致性能,允许使用NVIDIA

→ 直接上vLLM镜像,闭眼冲!
推荐组合:A100/H100 + vLLM + Kubernetes,吞吐拉满,延迟稳定,运维也成熟。

⚠️ 场景二:部分国产化要求,但性能不能太差

→ 可考虑“混合部署”:
- 核心高并发服务仍用vLLM跑NVIDIA;
- 边缘节点或低频任务用国产芯片跑轻量化模型;
- 通过统一API网关路由,逐步过渡。

🔒 场景三:强合规要求,必须纯国产芯片

→ 放弃vLLM幻想,走定制路线:
- 使用厂商提供的推理框架(如CANN+MindSpore);
- 手动实现KV缓存复用、静态批处理;
- 或等待第三方高性能推理引擎成熟(如DeepLink、FastDeploy增强版);
- 心里要有预期:性能可能打5折,开发成本翻倍。


小结:技术没有“应该”,只有“权衡”

vLLM确实不支持昇腾、寒武纪的原生部署——这不是bug,而是生态选择的结果。
它站在CUDA巨人的肩膀上,看得更远,但也因此被绑在了同一艘船上。

但这不意味着国产芯片没希望。恰恰相反,正是vLLM的成功,给了我们一个清晰的目标:
我们要的不是“能不能跑vLLM”,而是“能不能有自己的vLLM”

好消息是,土壤正在形成:

  • 国产芯片算力已达可用水平(昇腾910B对标A100);
  • 软件栈逐步完善(CANN 7.0、Magicmind持续迭代);
  • 大模型需求倒逼基础设施升级;
  • 政策推动下,越来越多人才和资金涌入底层创新。

也许明年,我们就能看到第一个开源的“Ascend-vLLM”分支;
也许三年后,“中国版PagedAttention”会成为新的行业标准🌟。

在此之前,保持清醒,脚踏实地,一边用好现有工具,一边期待破局者出现。

毕竟,真正的技术自主,从来都不是“复制粘贴”,而是从零造出那把剑⚔️。

“不要问国产芯片能不能跑vLLM,要问vLLM什么时候能跑国产芯片。”
—— 这句话,值得我们所有人共勉。💪

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐