oMLX: 让 Mac 也成为本地 LLM 推理利器

如果你是一名 macOS 用户,同时又对本地运行大语言模型(LLM)有需求,那么 oMLX 值得你关注。这是一个专为 Apple Silicon 打造的 LLM 推理服务器,最大的亮点在于通过分层 KV 缓存连续批处理技术,让你在 Mac 上高效运行各种大模型,并且通过菜单栏就能管理一切。

为什么需要 oMLX?

在 Mac 上跑 LLM 并不是什么新鲜事,mlx-lm 已经做得很好了。但当你真正把它用进日常工作流时,往往会遇到几个头疼的问题:

  • 内存不够用:模型稍大一点,内存直接爆表
  • 上下文无法复用:每次请求都要重新计算前面的 token,浪费时间
  • 管理不方便:要么命令行,要么得自己写脚本

oMLX 正是为了解决这些问题而来。它基于 Apple 的 MLX 框架构建,在此之上增加了分层缓存、多模型服务、以及一个开箱即用的管理界面。

核心特性一览

分层 KV 缓存(Hot + Cold)

这是 oMLX 最核心的技术创新。它将 KV 缓存分为两层:

  • 热层(Hot Cache):放在内存中,频繁访问的缓存块保持在 RAM 里
  • 冷层(Cold Cache):放到 SSD 上,当热层满了自动卸载到磁盘

关键在于,即使模型重启或上下文发生变化,历史缓存仍然可以被复用。这意味着当你和模型进行多轮对话时,前面的上下文不需要重新计算,直接从缓存中恢复。

连续批处理(Continuous Batching)

oMLX 使用 mlx-lm 的 BatchGenerator 实现连续批处理,能够同时处理多个并发请求,自动调配 prefill 和 completion 的批次大小。这意味着你在运行一个模型时,还能同时响应其他请求。

多模型服务

一台 Mac 上可以同时运行多种类型的模型:

模型类型说明
LLM文本大语言模型
VLM视觉语言模型(支持多图对话)
Embedding文本向量化模型
Reranker文档重排序模型

模型管理支持 LRU 自动淘汰、模型固定空闲时长、以及手动加载/卸载。

Claude Code 优化

oMLX 针对 Claude Code 做了专门优化,包括上下文缩放支持、SSE 保活防止读取超时,以及适配 auto-compact 触发时机。

管理界面

oMLX 提供了一个功能完整的管理后台,你可以通过浏览器访问 /admin 来:

  • 实时监控服务器状态
  • 管理(下载/加载/卸载)模型
  • 内置聊天界面
  • 一键性能基准测试
  • 配置 OpenClaw / OpenCode / Codex 集成

界面支持中文、韩文、日文和英文。

安装方式

macOS 应用(最简单)

直接下载 DMG 文件,拖到应用程序文件夹即可。内置自动更新功能。

Homebrew

brew tap jundot/omlx https://github.com/jundot/omlx
brew install omlx
brew services start omlx

源码安装

git clone https://github.com/jundot/omlx.git
cd omlx
pip install -e .
环境要求:macOS 15.0+(Sequoia),Python 3.10+,Apple Silicon(M1/M2/M3/M4)

快速上手

安装完成后,启动服务只需要一行命令:

omlx serve --model-dir ~/models

服务启动后,OpenAI 兼容的客户端(如 OpenCode、Claude Code)可以直接连接 http://localhost:8000/v1。同时你可以在浏览器打开 http://localhost:8000/admin 进入管理界面。

API 兼容性

oMLX 是 OpenAI API 的替代方案,支持以下端点:

  • POST /v1/chat/completions — Chat Completions(支持流式)
  • POST /v1/completions — Text Completions(支持流式)
  • POST /v1/messages — Anthropic Messages API
  • POST /v1/embeddings — 文本向量化
  • POST /v1/rerank — 文档重排序
  • GET /v1/models — 列出可用模型

此外还支持 Tool Calling、结构化输出,以及 MCP(Model Context Protocol)工具集成。

技术架构

整体架构分为几层:

FastAPI Server(OpenAI / Anthropic API)
    │
    ├── EnginePool(多模型、LRU 淘汰、TTL、手动加载)
    │   ├── BatchedEngine(LLM,连续批处理)
    │   ├── VLMEngine(视觉语言模型)
    │   ├── EmbeddingEngine
    │   └── RerankerEngine
    │
    ├── ProcessMemoryEnforcer(总内存限制)
    │
    ├── Scheduler(FCFS 调度,可配置批次大小)
    │   └── mlx-lm BatchGenerator
    │
    └── Cache Stack
        ├── PagedCacheManager(GPU 块管理,CoW,前缀共享)
        ├── Hot Cache(内存热层)
        └── PagedSSDCacheManager(SSD 冷层)

核心依赖包括 Apple 的 MLX、mlx-lm、mlx-vlm,以及 vllm-mlx 的部分设计思路。

支持的模型

oMLX 能自动识别模型类型,只要模型放在指定目录下即可。支持的模型包括:

  • LLM:mlx-lm 支持的所有模型
  • VLM:Qwen3.5 系列、GLM-4V、Pixtral 等
  • OCR:DeepSeek-OCR、DOTS-OCR、GLM-OCR
  • Embedding:BERT、BGE-M3、ModernBERT
  • Reranker:ModernBERT、XLM-RoBERTa

你也可以直接在管理界面中搜索并从 HuggingFace 下载模型。

结语

oMLX 为 Apple Silicon 用户提供了一个开箱即用的本地 LLM 推理方案。它的分层缓存设计、多模型支持、以及友好的管理界面,让在 Mac 上运行大模型变得简单高效。如果你正在寻找一个不需要折腾的本地推理工具,不妨试试 oMLX。

项目地址:https://github.com/jundot/omlx

本文链接:

https://www.abo.moe/archives/31.html
1 + 9 =
快来做第一个评论的人吧~
The Website have been running for 438 days.