Skip to content

oMLX:Mac 本地模型推理利器,比 Ollama 更强?

发布时间: 2026-04-09
来源: 微信公众号
GitHub: https://github.com/jundot/omlx


📌 简介:为什么 Mac 用户需要 oMLX?

苹果 M 系列芯片(M1/M2/M3/M4/M5)凭借统一内存架构,一直是本地运行大语言模型的理想平台。但长期以来,Mac 用户能用的推理工具选择并不多——Ollama 虽然方便,但在内存管理和并发性能上仍有局限;LM Studio 虽然功能丰富,但在 Mac 上的优化不够深入。

oMLX 填补了这个空白。它专为苹果硅芯片设计,基于 MLX 框架构建,带来了两项核心技术:连续批处理(Continuous Batching)分层 KV 缓存(Tiered KV Cache,热 RAM + 冷 SSD)

简单来说:oMLX 让你的 Mac 变成一个高效的本地 AI 服务器——速度快、内存管理智能、多模型同时运行、原生菜单栏体验。


🆚 与 Ollama、LM Studio 的对比

先说结论:如果你用 Mac 跑本地模型,oMLX 在多个维度上超越了现有方案。

特性oMLXOllamaLM Studio
连续批处理✅ 支持❌ 不支持❌ 不支持
分层 KV 缓存✅ 热 RAM + 冷 SSD❌ 全放内存❌ 全放内存
多模型同时服务✅ 原生支持❌ 单模型有限支持
持久缓存✅ 跨重启保留❌ 重启丢失❌ 重启丢失
原生 macOS 菜单栏✅ 系统级集成❌ 命令行❌ 桌面应用
网页管理面板✅ 完整面板❌ 无有限
OCR 集成✅ 内置三种 OCR❌ 无❌ 无
视觉模型支持✅ 完整支持有限有限

核心差异解读

连续批处理: 这是 oMLX 最大的性能优势。传统推理工具一次只能处理一个请求,或者等到一批请求凑齐后才处理。oMLX 用 mlx-lm 的 BatchGenerator 实现了动态批处理——新请求随时加入,完成的请求随时返回,不浪费任何计算资源。

分层 KV 缓存: 大模型的 KV 缓存会随着上下文增长而膨胀,容易把内存撑爆。oMLX 的聪明做法是:

  • 热数据放 RAM:最近使用的 KV 缓存存在内存中,访问极快
  • 冷数据存 SSD:不常用的 KV 缓存转移到 SSD,释放内存
  • 块级存储 + Copy-on-Write:高效的存储机制,避免不必要的内存复制
  • 跨重启持久化:重启后缓存还在,不用重新预填充

用过 vllm-mlx 的同学,会感觉 oMLX 是它的进化版——更稳定、更易用、功能更全。


🚀 核心功能详解

1. 连续批处理:并发请求不排队

oMLX 内置了 mlx-lm 的 BatchGenerator,能够智能地将多个请求合并到一个批次中处理。

工作原理:

请求 A: [prefill...] → [generate token 1] → [generate token 2] → ✓ 完成
请求 B:     [prefill...]        → [generate token 1] → [generate token 2] → ✓ 完成
请求 C:               [prefill...] → [generate token 1] → ...

三个请求可以交错执行,而不是串行等待。对于多用户场景(比如团队共享一台 Mac 服务器),这意味着吞吐量提升 2-3 倍

实际表现:

  • 单请求:约 30-40 token/s(M3 Max, 64GB)
  • 多请求并发:每个请求约 15-25 token/s,但总吞吐量翻倍
  • 延迟增加不明显,用户体验流畅

2. 分层 KV 缓存:告别内存爆炸

这是 oMLX 最具创新性的功能。传统推理工具把 KV 缓存全部放在内存中,上下文越长,内存占用越大。64GB 内存的机器跑 128K 上下文就可能 OOM。

oMLX 的分层策略:

┌─────────────────────────────────────┐
│         RAM(热缓存)               │
│  最近使用的 KV 缓存 → 快速访问      │
├─────────────────────────────────────┤
│         SSD(冷缓存)               │
│  不常用的 KV 缓存 → 持久存储        │
└─────────────────────────────────────┘

优势:

  • 内存占用可控:设置 RAM 上限后,超出部分自动转移到 SSD
  • 长上下文可行:256K 甚至更长的上下文不再受限于内存大小
  • 重启不丢失:KV 缓存持久化到 SSD,重启后自动恢复
  • Copy-on-Write:多个请求共享相同的前缀时,不重复存储

配置示例:

bash
omlx serve \
    --model-dir ~/models \
    --max-model-memory 32GB \
    --paged-ssd-cache-dir ~/.omlx/cache

这样设置后,模型最多使用 32GB 内存作为热缓存,超出部分存入 ~/.omlx/cache 的 SSD 缓存。

3. 多模型支持:一台机器跑多个模型

oMLX 支持同时加载和运行多个模型,并提供了完整的管理功能:

功能说明
LRU 驱逐内存不足时自动卸载最不常用的模型
手动加载/卸载手动控制模型的的生命周期
模型固定(Pin)将常用模型固定在内存中
TTL 设置模型空闲 N 分钟后自动卸载
同时运行多个模型可以并行服务

使用场景:

  • 同时运行一个编程模型(Qwen3-Coder-Next)和一个通用模型(Llama 3)
  • 编程请求走编程模型,聊天请求走通用模型
  • 根据请求类型自动路由

4. 视觉和 OCR 集成:不只是文本

oMLX 不仅支持文本模型,还完整支持视觉语言模型(VLM)和 OCR。

支持的视觉功能:

  • 多图像输入(base64 / URL / 文件路径)
  • 工具调用(Tool Calling)
  • 自动检测 OCR 模型

内置 OCR 模型:

  • DeepSeek-OCR:通用 OCR,中英文都强
  • DOTS-OCR:文档级 OCR,适合扫描件
  • GLM-OCR:智谱 OCR,中文优化

这意味着你可以直接用 oMLX 做图片分析、文档识别、票据提取等工作,不需要额外的 OCR 服务。

5. 内置聊天 UI:开箱即用的对话界面

oMLX 自带网页聊天界面,访问 http://localhost:8000/admin/chat 即可使用。

功能包括:

  • 对话历史记录
  • 模型切换
  • 图片上传(视觉模型)
  • 多语言支持(英文 / 韩文 / 日文 / 中文)
  • 完全离线运行

对于不想折腾前端配置的用户,这个内置 UI 已经足够好用。

6. 模型下载器:从 HuggingFace 一键拉取

oMLX 内置了模型下载器,直接从 HuggingFace 拉取模型到本地。

bash
# 下载模型
omlx download jundot/Qwen3-Coder-Next-MLX

# 从 ModelScope 下载(国内推荐)
omlx download --source modelscope Qwen/Qwen3-Coder-Next-MLX

支持区域镜像,国内用户可以优先从 ModelScope 下载,速度更快。

7. API 兼容:无缝接入现有工具链

oMLX 提供了广泛的 API 兼容性,可以直接对接现有的 AI 工具生态。

支持的 API 格式:

API 格式端点用途
OpenAI Chat/v1/chat/completions对话生成
OpenAI Embeddings/v1/embeddings向量嵌入
Anthropic Messages/v1/messagesAnthropic 格式

支持的功能:

  • 流式输出(Streaming)
  • 工具调用(Tool Calling)
  • 结构化输出(Structured Output)
  • 多模态输入

兼容的模型家族:

  • Llama(Meta)
  • Qwen(阿里)
  • Gemma(Google)
  • GLM(智谱)
  • 以及所有 MLX 支持的模型

8. 性能测试:内置基准跑分

oMLX 自带性能测试工具,方便评估硬件和模型组合的最佳配置。

bash
omlx benchmark --model Qwen3-Coder-Next --context 8192

测试指标:

  • 预填充速度(prefill speed)
  • 生成速度(generation speed)
  • 缓存命中率(cache hit rate)
  • 内存占用
  • 并发吞吐量

🛠️ 安装指南

系统要求

要求说明
操作系统macOS 15.0+(Sequoia 或更高)
芯片Apple Silicon(M1/M2/M3/M4/M5)
Python3.10+(仅源代码安装需要)
内存16GB 起步,推荐 32GB+

方式一:Homebrew(推荐)

最简洁的安装方式,自动配置环境变量和服务。

bash
# 添加 tap
brew tap jundot/omlx https://github.com/jundot/omlx

# 安装
brew install omlx

# 启动服务(后台运行)
brew services start omlx

安装完成后,oMLX 会自动在后台运行,菜单栏出现图标。

方式二:macOS 应用

适合喜欢图形界面的用户。

  1. GitHub Releases 下载最新 .dmg 文件
  2. 拖到 Applications 文件夹
  3. 点击菜单栏图标启动服务器

优势:

  • 自动重启(崩溃后自动恢复)
  • 应用内更新提示
  • 可视化模型管理

方式三:从源代码安装

适合需要定制或贡献代码的开发者。

bash
# 克隆仓库
git clone https://github.com/jundot/omlx.git
cd omlx

# 安装核心
pip install -e .

# 可选:安装 MCP 支持(Model Context Protocol)
pip install -e ".[mcp]"

验证安装

安装完成后,服务默认运行在:

  • API: http://localhost:8000/v1(OpenAI 兼容)
  • 管理面板: http://localhost:8000/admin/chat

用 curl 测试:

bash
curl http://localhost:8000/v1/models

应该返回已加载的模型列表。


💻 实际使用教程

基础使用:启动服务器并对话

步骤 1: 准备模型

将 MLX 格式模型放到 ~/models 目录:

~/models/
├── Qwen3-Coder-Next-8bit/
├── Llama-3-8B-MLX/
└── bge-m3/

步骤 2: 启动服务器

bash
omlx serve --model-dir ~/models

服务器会自动识别目录中的模型并加载。

步骤 3: 测试 API

bash
curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen3-Coder-Next-8bit",
        "messages": [
            {"role": "user", "content": "写一个 Python 快速排序"}
        ]
    }'

步骤 4: 打开聊天界面

浏览器访问 http://localhost:8000/admin/chat,选择模型,开始对话。

高级配置:定制内存和缓存

bash
omlx serve \
    --model-dir ~/models \
    --max-model-memory 32GB \
    --paged-ssd-cache-dir ~/.omlx/cache \
    --max-concurrent-requests 10 \
    --ttl-minutes 30

参数说明:

参数说明推荐值
--max-model-memory模型最大内存32GB(64GB 机器)
--paged-ssd-cache-dirSSD 缓存路径~/.omlx/cache
--max-concurrent-requests最大并发请求10-20
--ttl-minutes模型空闲自动卸载时间30 分钟

接入 OpenClaw

在 OpenClaw 配置中添加本地模型提供商:

json
{
    "providers": {
        "omlx-local": {
            "baseUrl": "http://localhost:8000/v1",
            "apiKey": "not-needed",
            "models": {
                "qwen3-coder-next": {
                    "name": "Qwen3 Coder Next (本地)",
                    "input": ["chat"],
                    "pricing": { "prompt": 0, "completion": 0 }
                }
            }
        }
    }
}

接入 OpenCode

在项目根目录创建 opencode.json

json
{
    "provider": {
        "omlx": {
            "npm": "@ai-sdk/openai-compatible",
            "name": "oMLX Local",
            "options": {
                "baseURL": "http://localhost:8000/v1",
                "apiKey": "not-needed"
            }
        }
    },
    "models": {
        "qwen3-coder": {
            "name": "Qwen3 Coder Next",
            "model": "omlx/qwen3-coder-next"
        }
    }
}

接入 Aider

bash
aider --model openai/qwen3-coder-next \
    --openai-api-base http://localhost:8000/v1 \
    --openai-api-key not-needed

接入 Cursor / Windsurf

  1. 设置 → AI Provider → OpenAI Compatible
  2. API 地址:http://localhost:8000/v1
  3. API Key:任意值(如 not-needed
  4. 模型名:qwen3-coder-next

🎯 适用场景分析

✅ 推荐场景

1. Mac 开发者的日常编程

本地运行 Qwen3-Coder-Next 或 Llama 3,接入 OpenCode / Aider / Cursor,编程体验不输云端模型。

2. 团队共享 AI 服务器

一台高配 Mac mini(64GB+),通过 oMLX 同时服务多个开发者,连续批处理保证并发性能。

3. 隐私敏感项目

代码、数据完全不出本机,适合处理机密项目或客户数据。

4. 离线工作环境

飞机上、地铁里、没网的地方——本地模型随时可用。

5. 多模型工作流

同时运行编程模型 + 通用模型 + 嵌入模型,oMLX 自动路由请求。

❌ 不推荐场景

1. Intel Mac 用户

oMLX 依赖 Apple Silicon 的 MLX 框架,Intel Mac 不支持。

2. 16GB 内存以下

虽然能跑小模型(7B-8B),但 16GB 内存的机器体验一般,不如直接用 Ollama 的 GGUF 量化版本。

3. 需要云端最强模型

oMLX 是本地推理工具,模型质量取决于你能加载多大的模型。需要 Opus 级别的能力,还是得用云端。


📊 性能实测

测试环境

配置数值
设备Mac mini M4 Pro
内存64GB 统一内存
SSD1TB
模型Qwen3-Coder-Next-8bit
量化8-bit

测试结果

指标数值
预填充速度约 500 token/s(8K 上下文)
生成速度约 35 token/s
并发(3 请求)每个约 15-20 token/s
内存占用约 45GB
128K 上下文可用(SSD 缓存约 10GB)
冷启动约 15 秒(模型加载)

对比 Ollama(相同环境)

指标oMLXOllama提升
单请求生成35 t/s30 t/s+17%
3 请求并发15-20 t/s 每请求排队等待质的飞跃
128K 上下文✅ SSD 缓存❌ 内存不足关键差异
多模型同时✅ 原生❌ 不支持功能差异
重启后缓存✅ 保留❌ 丢失体验提升

⚠️ 注意事项

1. 模型格式

oMLX 使用 MLX 格式的模型,和 GGUF 不通用。需要从 HuggingFace 下载 MLX 版本。

好消息: 大部分热门模型都有 MLX 转换版,社区活跃。

2. macOS 版本要求

需要 macOS 15.0(Sequoia)或更高版本。如果你的机器还停留在 Ventura 或更早,需要先升级系统。

3. SSD 缓存空间

分层 KV 缓存依赖 SSD 空间,确保有至少 50GB 可用空间。缓存目录可以自定义到外置 SSD。

4. 网络要求

模型下载需要网络连接,但推理过程完全离线。下载完成后可以断网使用。


🔮 未来展望

oMLX 代表了本地 AI 推理的一个重要方向:让消费级硬件发挥最大价值

随着 MLX 生态的发展,我们可以期待:

  • 更多模型原生支持 MLX 格式
  • 更高效的量化和压缩技术
  • 更好的多设备协同(多台 Mac 联合推理)
  • 更完善的工具链集成

对于 Mac 用户来说,oMLX 是目前最好的本地模型推理选择之一。


📝 总结

维度评价
性能⭐⭐⭐⭐⭐(连续批处理 + 分层缓存)
易用性⭐⭐⭐⭐⭐(菜单栏一键启动)
功能丰富度⭐⭐⭐⭐⭐(VLM、OCR、多模型)
API 兼容性⭐⭐⭐⭐⭐(OpenAI / Anthropic)
生态成熟度⭐⭐⭐⭐(还在快速迭代中)

一句话: 如果你用 Mac 跑本地模型,oMLX 比 Ollama 和 LM Studio 更强,尤其是在内存管理、并发性能和多模型场景。

Mac + oMLX = 本地 AI 的最佳拍档。


本文基于微信公众号文章整理,原文已无法访问。

Released under the MIT License.