模型 / 資料集
jjang-ai/vmlx avatar
jjang-ai/vmlx

vMLX 評測:Apple Silicon 上的多層快取推論伺服器,值得換掉 Ollama 嗎?

vMLX - JANGTQ Uber 壓縮 MLX 模型 - L2 磁碟快取(重新啟動後仍可正常運作)+ L1 分頁(超快 ttft)+ 混合 SSM 排程器 + 連續批次 + 等等!

851 個 Star89 個 ForkPythonApache-2.0

秒懂

它是什麼?
vMLX 是一個專為 Apple Silicon 設計的 MLX 推論伺服器,主打 L2 磁碟快取、L1 分頁快取與混合 SSM 排程。本文檢視它的安裝方式、實際運作機制、限制,以及與 Ollama 的差異。
適合誰用?
vMLX 適合已經在 Apple Silicon 上使用 MLX 格式模型、需要多使用者並發或長時間服務的開發者,尤其是那些受夠 Ollama 重複計算 prompt 的人。不適合需要穩定 API 契約或不想碰實驗性功能的團隊,因為 JIT 編譯標記為 experimental,且 speculative decoding 的加速數據來自專案自己的宣稱,尚未有第三方驗證。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它解決的是哪個痛點

在 Apple Silicon 上跑 LLM 推論,最常見的困擾是記憶體頻寬有限,以及重複處理相同 prompt 前綴的浪費。vMLX 的定位就是一個自架的推論伺服器,專門處理這兩個問題。它把 KV cache 拆成兩層:L1 是分頁式快取,放在記憶體裡,用來加速首次生成 token 的時間;L2 是磁碟快取,放在 SSD 上,伺服器重啟後仍然有效。對開發者來說,這意味著你不需要每次啟動都重新計算系統提示詞或長對話歷史。專案描述裡強調「survives restart」,這正是許多本地推論方案做不到的事。目標使用者很明確:在 Mac 上跑服務、需要多個請求並發、而且不想被重複計算拖慢的人。

兩層快取的實際運作機制

L1 分頁快取採用區塊為單位,搭配 content-addressable 的去重。也就是說,相同的 KV 區塊只會存一份,不同的 prompt 若共用前綴,就能直接重用。L2 磁碟快取則是逐區塊持久化,跟分頁快取配對運作。文件描述「Block Disk Cache」是 per-block persistent cache,這表示快取粒度很細,不是整條 prompt 一次寫入。這個設計的好處是,部分重疊的 prompt 也能命中,而不只是完全相同的請求。另外還有 KV cache 量化,可以把快取壓到 q4/q8,省下 2 到 4 倍的記憶體。這對記憶體只有 16 GB 或 32 GB 的機器很重要,因為快取佔用的空間往往比模型權重還大。

安裝與啟動:三種方式

安裝路徑有三條,官方推薦用 uv。命令是 `brew install uv`,然後 `uv tool install vmlx`,最後 `vmlx serve mlx-community/Qwen3-8B-4bit`。pipx 也是同樣的流程,差別在於它隔離在獨立環境。用 pip 的話,macOS 14 以上會碰到 externally-managed-environment 錯誤,所以必須建 venv。啟動後伺服器監聽在 `http://0.0.0.0:8000`,提供 OpenAI 與 Anthropic 相容的 API。用戶端只要把 base_url 指向 `http://localhost:8000/v1`,api_key 隨意填,就能用 openai 或 anthropic SDK 連線。curl 也可以直接打 `/v1/chat/completions`。整個流程確實是一條命令,但要注意,`vmlx serve` 後面接的是 HuggingFace repo 名稱,這代表你必須先有網路下載模型。

混合 SSM 排程與連續批處理

vMLX 支援混合 SSM 模型,像是 Nemotron-H、Jamba、GatedDeltaNet 這些同時有 Mamba 層和 attention 層的架構。文件說它會「correctly handled alongside attention」,這不是小事,因為純 attention 的 KV cache 管理方式不適用於 SSM 層。排程器必須知道哪些層需要快取、哪些層只需要狀態。連續批處理(continuous batching)讓多個請求可以交錯執行,而不是等前一個完成才處理下一個。這對服務多人使用的情境是必要的,否則單一慢請求會卡住整條佇列。不過文件沒有細講排程器的演算法細節,例如搶佔策略或優先權規則,這點在實際部署時需要自己觀察。

模型支援範圍與 JANG 量化

支援清單很長,涵蓋 Qwen、Llama、Mistral、Gemma、DeepSeek、MiniMax 等主流系列,還有視覺模型、語音、甚至 Nemotron-3-Nano-Omni 這種多模態模型。MoE 模型也列了一堆,包括 Laguna 那種 256 個 routed experts 的架構。另外還有 Hybrid SSM 的專門列表,這在其他 MLX 工具裡不常見。比較特別的是 JANG 量化,這是 vMLX 自家的方法,號稱 2-bit 的 JANG_2L 在 MiniMax M2.5 上達到 MMLU 74%,遠高於 MLX 4-bit 的 26.5%。這個數字來自專案自己的測試,200 題的 MMLU 樣本很小,不能當作一般性結論。但它點出了一個真實趨勢:混合精度量化,把重要層保留較高精度,確實可能比統一低 bit 更有效。

加速功能的代價與實驗性質

Speculative decoding 宣稱有 20 到 90% 的加速,但這需要一個小型 draft model 先產生候選 token。這代表你要多下載一個模型,而且 draft model 的品質直接影響加速效果。另一個選項是 Prompt Lookup Decoding,不需要額外模型,靠從 prompt 或 context 裡找 n-gram 重複來加速,文件明說最適合結構化輸出,像是 code 或 JSON。JIT 編譯用 `mx.compile` 做 Metal kernel fusion,但標記為 experimental。這三個功能都不是無腦開啟的,你需要根據自己的工作負載選擇。例如跑自由對話,PLD 幾乎沒用;跑大量 JSON 生成,PLD 可能很有效。文件沒有提供任何基準測試數據來佐證這些加速,所以實際效果得自己測。

真正的限制與不適用的場景

首先,vMLX 只支援 Apple Silicon,因為它依賴 MLX 框架。你不可能把它部署到 NVIDIA GPU 或雲端 CPU 上。其次,L2 磁碟快取雖然能跨重啟,但 SSD 的寫入壽命是有限的,頻繁寫入快取會消耗耐用度。對於快取命中率不高的隨機 prompt,磁碟快取反而是負擔。再者,分散式運算支援「pipeline parallelism across multiple Macs」,但文件沒寫清楚設定方式,這通常需要手動組態網路與模型切分,不是開箱即用。最後,這是一個非常活躍開發的專案,發布頻率幾乎每天一版,例如 v1.6.43、v1.6.44、v1.6.45 接連出現。這代表 API 或行為可能變動,升級時要小心。

與 Ollama 的差異,以及維護成本

Ollama 是另一個常見的本地推論伺服器,它也支援 Apple Silicon,但它不提供 L2 磁碟快取,KV cache 重啟後就沒了。Ollama 的模型格式是 GGUF,而 vMLX 直接吃 MLX 格式,這是一個根本差異。MLX 格式在 Apple Silicon 上通常更有效率,因為它是針對 Metal 最佳化的。但 Ollama 的模型生態比較成熟,HuggingFace 上 GGUF 的數量遠多於 MLX。授權方面,vMLX 是 Apache-2.0,商用沒有障礙,但要注意相依的模型各有自己的授權。維護成本上,因為發布頻率高,你需要追蹤更新;而且文件提到 MLX Studio 這個桌面 App,但那是另一個專案,兩者的關係沒有清楚說明,這對想整合的人來說是個問號。

編輯結論

vMLX 適合已經在 Apple Silicon 上使用 MLX 格式模型、需要多使用者並發或長時間服務的開發者,尤其是那些受夠 Ollama 重複計算 prompt 的人。不適合需要穩定 API 契約或不想碰實驗性功能的團隊,因為 JIT 編譯標記為 experimental,且 speculative decoding 的加速數據來自專案自己的宣稱,尚未有第三方驗證。採用前應先確認你的模型是否落在支援清單,特別是 MoE 與混合 SSM 架構,並用 `vmlx serve` 搭配 `--cache-size` 與 `--disk-cache` 參數實測你的典型 prompt 長度,觀察 L2 快取是否真的能跨重啟命中。若你只需要單機單使用者,Ollama 的簡單度可能更可靠。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記