vLLM镜像是否支持ARM架构?鲲鹏/飞腾适配进展

在大模型落地如火如荼的今天,企业不再满足于“能不能跑”,而是越来越关心“能不能高效、稳定、合规地跑”。尤其是在信创浪潮席卷之下,一个现实问题摆在面前:我们手里的 vLLM 推理服务,能否在华为鲲鹏、飞腾这些国产 ARM 芯片上顺利运行?

这不只是技术选型的问题,更关系到整个 AI 基础设施是否真正“自主可控”。


你可能已经用 vLLM 把 Llama 或 Qwen 的吞吐提到了新高度——PagedAttention 让显存利用率飙升,连续批处理让 GPU 忙得停不下来。但当你想把这套方案搬到国产服务器时,突然发现:官方 Docker 镜像只给了 x86_64 版本……那 ARM 呢?鲲鹏能行吗?飞腾呢?

别急,咱们一步步拆开来看。

先说结论:目前还不原生支持,但路是通的 🛤️

截至 2025 年初,vLLM 官方发布的预编译镜像和 PyPI 包仍主要面向 x86_64 + NVIDIA GPU 架构。你在 Docker Hub 上看到的 vllm/vllm-openai:latest,底层依赖的是 CUDA 和 cuBLAS 等 NVIDIA 生态组件——这些,在纯 ARM 服务器上根本跑不动 😅。

但这并不意味着“没戏”!

实际上,社区已有团队尝试在 鲲鹏 920 + 昇腾 Atlas 300I Pro 这类异构平台上交叉编译 vLLM,并通过华为 CANN 工具链对接 MindSpore 推理后端实现部分功能迁移。虽然性能尚未达到原生 CUDA 水平,但也证明了技术路径的可行性。

至于纯 CPU 场景下的 飞腾 FT-2000+/64,理论上可以跑小模型(比如 INT4 量化的 Qwen-1.8B),但由于缺乏 NPU 加速,只能走 CPU 推理路径,延迟高、吞吐低,实用性有限 ⚠️。


核心能力拆解:为什么 vLLM 如此“吃硬件”?

要搞清楚适配难点,就得先明白 vLLM 到底靠什么“飙性能”。

🔹 PagedAttention:显存管理的艺术

传统 Transformer 推理中,每个请求都要缓存完整的 Key-Value(KV)状态,导致长文本直接爆显存。而 vLLM 的杀手锏——PagedAttention,借鉴操作系统的虚拟内存分页机制,把 KV 缓存切成一个个“页面”,按需加载、动态释放。

这意味着:
- 同样显存下能并发更多请求;
- 支持超长上下文(甚至 32k tokens);
- 不同请求间还能共享相同前缀的 KV 页面,减少重复计算。

from vllm import LLM, SamplingParams

llm = LLM(model="Qwen/Qwen-7B", enable_chunked_prefill=True)  # 自动启用分页
outputs = llm.generate(["写一首诗", "解释量子纠缠"], SamplingParams(max_tokens=128))

这段代码看着简单,背后可是对 GPU 内存调度的深度控制。一旦脱离 CUDA 环境,这套精细的页表管理和零拷贝共享机制就面临重构挑战。

🔹 连续批处理:让 GPU 几乎永不空闲

你知道最浪费 GPU 的是什么吗?不是计算慢,而是“等”——等某个长请求生成完最后一个 token,其他短请求只能干等着。

vLLM 的连续批处理(Continuous Batching)打破了这个僵局。它像快递分拣线一样,不断把新来的请求和正在处理的请求拼成新批次送进模型,真正做到“流水线作业”。

💡 小贴士:相比静态批处理,连续批处理在真实对话场景下可提升 3–8 倍吞吐,尤其适合客服机器人、AI 助手这类高并发应用。

不过,这种动态调度高度依赖底层推理引擎的响应速度与内存一致性保障。如果换成国产 NPU,驱动层优化不到位,反而可能因通信延迟拖累整体效率。

🔹 OpenAI 兼容 API:无缝迁移的秘密武器

很多企业选择 vLLM,并非因为它多快,而是因为它“够标准”。

内置的 OpenAI 兼容接口,让你只需改一行 base_url,就能把原本调 GPT 的代码切换到本地模型:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-7b",
    "messages": [{"role": "user", "content": "你好"}]
  }'

这对金融、医疗等行业太友好了——数据不出内网,又能复用现有系统架构。但这也意味着,任何平台移植都必须完整保留这一套 RESTful 协议栈的行为一致性,否则兼容性就会打折扣。

🔹 模型量化:从 14GB 到 6GB 的飞跃

你以为非要 A100 才能跑大模型?错!借助 GPTQ/AWQ 量化技术,vLLM 可以直接加载 INT4 模型,在 RTX 3090 上也能流畅推理 Qwen-7B。

python -m vllm.entrypoints.openai.api_server \
  --model qwen/Qwen-7B-Chat-GPTQ \
  --quantization gptq \
  --gpu-memory-utilization 0.9

显存占用下降 60%+,代价却是极小的精度损失(通常 <1%)。但对于 ARM 平台来说,这招未必好使——因为 GPTQ 解码核依赖 CUDA kernels,目前尚无成熟的 ARM+NPU 移植版本。


国产化部署:现实路径该怎么走?

既然原生不支持,那想在鲲鹏或飞腾上用 vLLM,怎么办?别慌,有三条路可选:

✅ 路径一:混合架构 —— “ARM 主控 + 国产 NPU 协同”

典型代表:鲲鹏 CPU + 昇腾 NPU

  • 使用鲲鹏搭建 Kubernetes 集群作为控制面;
  • 将 vLLM 改造为插件式后端,通过华为 CANN 工具链调用 AscendCL 接口;
  • 借助 ONNX Runtime 或 MindIE 实现算子映射;
  • 当前已有 PoC 验证可在 Atlas 300I Pro 上运行 INT8 量化模型,吞吐约为同级别 A10 的 60%。

📌 优势:兼顾国产化要求与性能需求
📌 挑战:需深度定制推理引擎,开发成本较高

⚠️ 路径二:纯 CPU 推理 —— 仅适用于轻量级场景

代表平台:飞腾 FT-2000+/64

  • 完全放弃 GPU/NPU,使用 vLLM 的 CPU 后端(基于 PyTorch CPU 模式);
  • 仅推荐用于 <2B 参数的小模型,且开启 INT4 量化;
  • 实测 Qwen-1.8B-Chat 在 FP32 下单请求生成延迟约 8–12s,难以支撑实时交互。

📌 适用场景:离线摘要、内部知识库问答等低频任务
📌 建议:优先考虑更轻量的推理框架如 llama.cpp 或 MLX

🔄 路径三:跨平台中间层 —— 用 ONNX/TensorRT-LLM 打通生态

不想魔改 vLLM?那就绕过去!

  • 将 HuggingFace 模型导出为 ONNX 格式;
  • 使用 TensorRT-LLM 或 Kunlunxin-XPU SDK 编译为国产芯片专用格式;
  • 自研轻量调度器模拟 vLLM 行为(如连续批处理逻辑);
  • 对外仍提供 OpenAI 兼容接口,保持业务透明。

📌 优势:规避底层差异,灵活适配多种国产芯片
📌 成本:需要自建模型转换 pipeline 和监控体系


实际部署架构参考

在一个追求信创合规的企业环境中,典型的推理平台可能是这样的:

graph TD
    A[客户端] --> B[Nginx + API 网关]
    B --> C{请求路由}
    C -->|高性能需求| D[vLLM on x86+A100]
    C -->|国产化需求| E[vLLM-Ascend 改造版 on Kunpeng+Atlas]
    C -->|边缘轻量级| F[llama.cpp on Feiteng]
    D --> G[(模型存储 NFS/S3)]
    E --> G
    F --> H[(本地文件)]
    G --> I[Prometheus + Grafana 监控]
    H --> I

在这个架构中,你可以根据业务 SLA 和合规要求,灵活分配流量走向。核心思想是:统一接口,异构执行


最佳实践建议 💡

  1. 先在 x86 上验证模型效果和压测性能
    别一上来就在 ARM 上折腾,先把 prompt 工程、采样参数调好再说。

  2. 优先考虑“国产 NPU + 异构加速”方案
    纯 ARM CPU 推理体验较差,昇腾、昆仑芯、寒武纪才是未来方向。

  3. 关注 ONNX Runtime 和 TensorRT-LLM 的进展
    这两个项目正在积极支持国产芯片,未来有望成为跨平台推理的事实标准。

  4. 参与开源共建,推动 ARM 支持落地
    vLLM 社区已在讨论 ARM 移植计划。如果你有资源,不妨贡献一份力,比如提交 aarch64 wheel 包或 CI 流水线配置。

  5. 对接模力方舟等平台时注意健康检查脚本兼容性
    确保容器启动后能正确上报 readiness/liveness 状态,避免被误判为异常节点。


写在最后:国产化不是“替代”,而是“进化” 🚀

vLLM 本身的设计足够模块化,它的成功告诉我们:高性能推理 ≠ 锁定特定硬件。只要抽象层次够高,CUDA、RoCM、AscendCL 都只是可插拔的后端。

虽然今天它还没正式拥抱 ARM,但这条路已经清晰可见。随着国产芯片工具链不断完善(比如 CANN 对 Transformer 算子的优化)、社区协作日益紧密,我们完全有理由相信:

👉 不久的将来,你会在一台鲲鹏服务器上,轻松跑起一个支持 OpenAI 接口、吞吐翻倍的 vLLM 实例

而这,正是中国 AI 基础设施走向成熟的关键一步。

所以,别再问“能不能用了”——不如问问:“我们怎么一起让它能用?” 💪

Logo

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

更多推荐