jundot/omlx

LLM inference server with continuous batching & SSD caching for Apple Silicon — managed from the macOS menu bar

解决的问题

本地 LLM 的使用往往需要在便利性和控制力之间做出权衡。用户经常在内存管理、保持模型加载状态或在不耗尽系统资源的情况下处理大型上下文方面遇到困难。oMLX 提供了一种在 Mac 硬件上以高性能和易于管理的方式运行 LLM、视觉语言模型 (VLM) 和嵌入模型的方法。

工作原理

oMLX 运行在 Apple Silicon 上,使用受 vLLM 启发的层级化 KV 缓存系统。它在 RAM 中维护一个用于快速访问的“热”层,并在 SSD 上维护一个用于在内存满时卸载数据块的“冷”层,从而允许在无需重新计算的情况下跨请求重用上下文。该系统使用连续批处理 (continuous batching) 来处理并发请求,并包含一个内存保护机制,通过强制执行总内存限制来防止系统崩溃。

适用对象

专为希望运行本地 AI 模型(例如使用 Claude Code 进行编程或进行通用聊天)的 macOS 用户 (M1/M2/M3/M4) 设计,同时为开发者提供命令行界面,并为用户提供用于轻松监控和控制的原生 macOS 菜单栏应用。

亮点

  • 分层 KV 缓存:在 RAM 和 SSD 之间持久化上下文,使长对话变得切实可行。
  • 多模型服务:在单个服务器中支持 LLM、VLM、OCR、嵌入模型和重排序器 (rerankers)。
  • macOS 集成:包括用于监控的原生 SwiftUI 菜单栏应用和用于管理的管理仪表板。
  • API 兼容性:提供 OpenAI 和 Anthropic API 的即插即用替代方案。
  • 自动化管理:具有 LRU 驱逐、模型固定和每个模型的空闲超时功能,以优化内存使用。