vllm-metal v0.28.0 发布说明 / 新功能介绍

vllm-metal 将 vLLM 的先进调度和内存管理集成到 Apple Silicon 生态系统中,使 Mac 用户能够运行一个兼容 OpenAI 的服务器,高效处理重叠请求。通过结合 vLLM V1 调度器和分页 KV 缓存,以及使用 MLX 和 Metal 执行,vllm-metal 将本地模型执行转变为可扩展的服务问题。

核心架构与集成

vllm-metal 作为上游 vLLM 的插件,利用以下组件:

  • vLLM 前端: 提供 V1 调度器、分页 KV 块管理、分块预填充、采样功能,以及支持工具调用解析和流式传输的 OpenAI 兼容服务器。
  • MLX 执行: 使用 mlx_lm 实现模型,并利用 MLX 在 Apple Silicon 统一内存上执行硬件计算。
  • 自定义 Metal 内核: 虽然 vllm-metal 重用了 mlx_lm 的逐 token 层(RMSNorm、线性、MoE 和 MLP),但用一个分页变长 Metal 内核替换了标准注意力机制。该内核是 vLLM 统一 Triton 内核的移植版本,通过在 cu_seqlens 上执行二分查找来确定每个查询 token 的请求归属。

内存管理与分页 KV 缓存

vllm-metal 使用 --gpu-memory-utilization 标志实现内存保护,设定可预测的推理预算,确保 macOS 和其他应用程序有足够的预留空间。系统在启动时运行一次预热流程,以考虑权重和激活值,然后将剩余预算分配给固定的 KV 缓存。

为优化吞吐量,vllm-metal 使用 打包查询 和 分页 KV 存储:

  • 打包查询: 与 mlx_lm 的填充批处理不同,vllm-metal 将所有已调度的查询 token 打包成一个单一的 [total_q, H, D] 张量。这使得引擎能够在一次模型前向传播中处理混合步骤(预填充和解码),而无需填充到最长请求长度。
  • 分页 KV: KV 缓存以固定大小的页面存储,由每个请求的块表寻址,允许请求动态增长,而无需重新调整连续缓冲区的大小。

性能基准测试

并发服务与延迟

在配备 64 GB 内存的 M5 Pro 上,使用 SiliconBench 代理拆分(100 个多轮提示,每个约 4.6K 输入 token),vllm-metal 在多个方面表现出色:

  • Qwen3.8-27B: 在并发级别 2 和 4 时,vllm-metal 实现了最低的首次 token 延迟(TTFT)和端到端延迟。
  • Gemma 4 E4B: vllm-metal 在并发级别高达 16 的范围内保持了较低的 TTFT。
  • Qwen3.6-35B-A3B: 在并发级别 4 时,vllm-metal 的吞吐量和端到端延迟与使用 RAM 缓存的 oMLX 相当,但 vllm-metal 在 TTFT 方面具有显著优势。

多 token 预测(MTP)

对于 Gemma 4 E4B,vllm-metal 支持通过 MTP 辅助模型进行推测性解码。在并发级别 1 时,MTP 相比无 MTP 生成,将运行时间减少了 15%,输出吞吐量提高了 20%。

M5 硬件加速

在 M5 Mac 上,vllm-metal 会自动使用 NAX 注意力内核,该内核利用 GPU 的张量硬件处理兼容的预填充批处理,相比分块注意力实现更快的预填充速度。

v0.28.0 中的新功能

v0.28.0 版本引入了多项关键功能:

  • 模型支持: 支持来自 Qwen3.5、Qwen3.6、Qwen3.8 和 Qwen3-Next 系列的 GGUF 检查点和混合注意力模型。
  • 推测性解码: 支持三种方法:Gemma 4 MTP、独立草稿模型和提示查找 n-gram。
  • 高级服务功能: 支持 LoRA 适配器、结构化输出,以及通过 MLX 环形后端在多台 Mac 之间实现流水线并行。
  • 实验性功能: 支持视觉语言模型、文本嵌入、重排序和语音转文本。
  • 前缀缓存: 对于 Qwen3.5 风格的混合模型,vllm-metal 支持 align 模式,在块边界保存 GDN 循环状态,以便从缓存的前缀处恢复。

安装与使用

vllm-metal 需要 macOS 15 或更高版本,可通过 Homebrew 安装:

brew tap vllm-project/vllm-metal https://github.com/vllm-project/vllm-metal
brew install vllm-project/vllm-metal/vllm-metal

可以使用 vllm serve 命令启动一个兼容 OpenAI 的服务器,指定模型和内存利用率预算。

Sources