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 快取以固定大小的頁面儲存,並透過每請求的區塊表進行定址,讓請求可自由增長,而無需重塑連續緩衝區。

性能基準測試

併發服務與延遲

在 M5 Pro 搭載 64 GB 記憶體的裝置上,使用 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 的吞吐量與端到端延遲與 oMLX 搭配 RAM 快取相當,但 vllm-metal 在 TTFT 上有顯著優勢。

多 token 預測(MTP)

針對 Gemma 4 E4B,vllm-metal 支援透過 MTP 輔助模型進行猜測式解碼。在併發等級 1 時,MTP 將壁鐘時間減少 15%,並使輸出吞吐量提升 20%,相比無 MTP 的生成。

M5 硬體加速

在 M5 Mac 上,vllm-metal 自動使用 NAX 注意力核心,該核心利用 GPU 的張量硬體處理相容的預填批次,使預填時間比分塊注意力更快。

v0.28.0 中的新功能

v0.28.0 版本引入多項關鍵功能:

  • 模型支援: 支援 GGUF 檔案與來自 Qwen3.5、Qwen3.6、Qwen3.8 及 Qwen3-Next 系列的混合注意力模型。
  • 猜測式解碼: 支援三種方法: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