mlx-omni-server
Apple Silicon 本地 AI 推理服务器,双协议兼容 OpenAI + Anthropic
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Apple Silicon 本地 AI 推理服务器,双协议兼容 OpenAI + Anthropic
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你需要在医疗记录、内部代码、客户合同上调用大模型时,把数据上传到 OpenAI 或 Anthropic 的服务器——哪怕只是一小段文字——总让人隐隐不安。API 账单也在悄然膨胀:一次对话几毛钱,规模化使用后月度账单轻松破万。
更别提还有一个根本矛盾:强模型在服务器端,你的设备永远受限于网络延迟和可用性。
有没有一种方案,让本地 Mac 真正跑起一套完整的 AI 服务——不只是聊天,还包括语音合成、语音识别、图像生成、文本向量化——同时还能直接复用你已有的 OpenAI 或 Anthropic SDK 代码?
这就是 mlx-omni-server 做的事。
2024 年,Apple 正式发布 MLX 框架——一个专为 Apple Silicon(NPU/GPU/CPU 统一内存架构)优化的机器学习数组库。与传统 CUDA 生态不同,MLX 天然适合苹果自研芯片的高效矩阵运算。MLX-LM 项目的出现让本地运行量化大模型成为现实。
然而,早期 MLX 本地推理工具都是独立的 Python 脚本或命令行工具,缺乏统一的 API 层。开发者想集成到现有应用必须自己写 wrapper,不同模型的调用方式完全不同。
madroidmaq(GitHub ID)于 2024 年 11 月创建了 mlx-omni-server 项目,目标只有一个:为 MLX 模型提供一套与 OpenAI / Anthropic 完全兼容的 REST API,让任何现有 AI 应用无需修改代码即可切换到本地推理。
项目上线半年,收获 726 颗星,fork 90 次,涵盖聊天、语音、图像、向量四大能力,被 mlx-community 组织推荐为官方配套推理服务。
mlx-omni-server 的设计哲学是协议优先——不追求重新发明轮子,而是让现有轮子适配本地 MLX 推理。
通过 /v1/chat/completions 端点提供完整的对话补全能力,支持:
通过 /v1/audio/speech 端点提供文本转语音,内置两套 TTS 引擎:
lucasnewman/f5-tts-mlx 模型生成的音频文件直接返回二进制流,客户端可指定输出格式(mp3/wav 等)。
通过 /v1/audio/transcriptions 端点提供语音转文字,基于 mlx-whisper(Whisper 的 MLX 实现)。支持多种输出格式:纯文本、SRT 字幕、VTT 字幕、JSON 结构化结果。Kokoro G2P(Grapheme-to-Phoneme)在启动时预加载,用于提升发音准确性。
通过 /v1/images/generations 端点提供图像生成,基于 MFlux 库(封装 FLUX.1 系列模型)。支持多种变体:
schnell:快速生成(4 步)dev:高质量生成dev-fill:图像修复/局部重绘dev-depth:深度图引导生成dev-redux:风格迁移所有图像生成使用 4-bit 量化模型,内存占用低,适合统一内存受限的 Mac。
通过 /v1/embeddings 端点提供文本嵌入向量生成,基于 mlx-embeddings。支持 BERT 类模型,输出标准化余弦相似度向量。内置 tiktoken token 计数,确保与 OpenAI Embeddings API 完全兼容。
项目最有特色的设计是同时兼容两大协议:
/v1/*(/v1/chat/completions、/v1/audio/speech 等)/anthropic/v1/*(/anthropic/v1/messages)这意味着用 Anthropic SDK 写的代码,只需改一个 base_url 就能切换到本地 MLX 推理——这对从 Claude 迁移到本地模型的开发者极具吸引力。
项目代码位于 src/mlx_omni_server/,按功能分为以下模块:
mlx_omni_server/
├── main.py # FastAPI 应用入口,CLI 参数解析
├── routers.py # 路由聚合
├── chat/
│ ├── mlx/
│ │ ├── chat_generator.py # 核心生成器(27KB),封装 mlx-lm 流式生成
│ │ ├── model_types.py # MLXModel 加载(兼容新旧 mlx_lm API)
│ │ ├── wrapper_cache.py # 模型实例缓存池(TTL + LRU)
│ │ ├── prompt_cache.py # KV Cache 管理
│ │ ├── prompt_cache_pool.py # 多会话 Cache 池
│ │ ├── outlines_logits_processor.py # Outlines 结构化输出处理器
│ │ └── tools/ # 工具调用解析(XML 标记检测)
│ ├── openai/
│ │ ├── openai_adapter.py # OpenAI 协议适配器(20KB),格式转换
│ │ └── schema.py # Pydantic 请求/响应模型
│ └── anthropic/
│ ├── anthropic_messages_adapter.py # Anthropic 协议适配器(16KB)
│ └── anthropic_schema.py # Anthropic 消息格式定义
├── tts/ # TTS 端点(F5 + Kokoro)
├── stt/ # STT 端点(Whisper)
├── images/ # 图像生成(MFlux / FLUX.1)
├── embeddings/ # 向量化(mlx-embeddings)
├── middleware/
│ └── logging.py # 请求/响应日志中间件
└── utils/
└── logger.py # 结构化日志
模型加载策略:MLXModel.load() 支持三种模式:
缓存机制:两层缓存设计——wrapper_cache 缓存活跃的 ChatGenerator 实例(按 model_id + adapter_path + draft_model_id 索引),prompt_cache_pool 缓存各会话的 KV Cache 状态。两层 TTL 可通过环境变量独立配置。
OpenAI 适配器核心逻辑:
openai_adapter.py 中的 _find_tool_call_marker_position() 函数处理工具调用解析。某些模型(如 Qwen3-Coder)用 XML 标签 <tool_call> 或 <function= 包裹工具调用,适配器在流式返回过程中持续扫描缓冲区,找到标记后截断文本、解析 JSON、构建 OpenAI 格式的 tool_calls 返回。这是跨模型兼容的关键——不同模型输出工具调用的格式可能完全不同,适配器负责统一到 OpenAI 标准。
部署极简:一条 pip install mlx-omni-server,然后 mlx-omni-server 启动,默认监听 0.0.0.0:10240。
然而,硬性前提是 Apple Silicon Mac。这不是 Linux 服务器上的 Docker 容器——MLX 框架本身就是为 macOS/Darwin 专为设计,无 Docker 支持。虽然代码质量高、有完整测试套件、预提交钩子规范,但缺失 Docker 意味着非苹果设备用户完全无法使用。
硬件需求:
实测量化模型内存占用:4-bit 量化 7B 模型约需 4-5GB 统一内存,MacBook Air 16GB 可流畅运行,8GB 机型建议跑 1-3B 参数模型。
Apple Silicon 锁定:这是最大的局限性。Linux/Windows 用户只能望洋兴叹。虽有人尝试用 macOS 虚拟机绕过,但性能损耗抵消了本地推理的优势。
模型生态限制:必须使用 MLX 量化模型(HuggingFace 上 mlx-community/ 前缀)。主流模型均有量化版本,但最新模型的 MLX 移植往往滞后 1-2 个月。
性能上限:Apple Silicon 统一内存架构在高带宽上有优势,但相比 NVIDIA H100/B200 等专业 AI 加速卡,FP16/INT8 吞吐仍有差距。适合中小型模型(≤13B),大规模推理推荐云端。
文档深度不足:README 详细但文档站点依赖 DeepWiki,API 参考文档不够完整,开发者遇到问题需要直接读源码。
mlx-omni-server 代表着 AI 推理的本地化趋势中的重要一环。Apple Silicon 的统一内存架构(最高 192GB)让消费级硬件具备了运行大型量化模型的可能,而 mlx-omni-server 将这种能力标准化为生产级 API。
其双协议兼容策略值得称道:不要求开发者重写代码,只需改一个 base URL,就能实现云端到本地的无缝切换。这大幅降低了本地 AI 推理的落地门槛——对于数据隐私敏感的企业客户,这种"零改造成本"的切换方案具有真实商业价值。
项目目前处于 Beta 阶段(Development Status :: 4 - Beta),随着 MLX 框架本身的成熟和更多模型的支持,预计将成为 Apple Silicon AI 开发的标准推理层。