SharpAI/SwiftLM

⚡ Native MLX Swift LLM inference server for Apple Silicon. OpenAI-compatible API, SSD streaming for 100B+ MoE models, TurboQuant KV cache compression, MACOS + iOS iPhone app.

它是什么

SwiftLM 是一个用 Swift 编写的高性能推理服务器,可在 Apple Silicon 上运行 MLX(Apple 的机器学习框架)模型。它提供标准的 OpenAI 兼容 API(/v1/chat/completions),因此现有客户端和工具无需修改即可连接。与典型的基于 Python 的堆栈不同,它被编译为单个原生二进制文件,没有 Python 运行时,也没有 GIL;README 强调了在 Apple Silicon 上的裸机性能。

这是一个严肃的、积极开发的项目,包含深入的工程细节:基准测试表、错误修复说明(32 GB Mac 上暴露的内存错误)、在滑动窗口边界错误后具有位相同回滚的 MTP 投机解码,以及用于超大型 MoE 模型的 --stream-experts SSD 流式传输等性能功能。

关键功能和创新

  1. OpenAI 兼容 API — 可直接替代 OpenAI 风格端点;模型自动从 Hugging Face 下载(例如 mlx-community/gemma-4-26b-a4b-it-4bit)。

  2. MoE(专家混合)优化 — 对于像 Gemma 4 26B 这样的模型(每个 token 仅激活约 4B 的 26B 参数),SwiftLM 只读取激活的专家,在相同内存占用下,解码速度比稠密 27B 模型快 5-6 倍。

  3. TurboQuant — 主要功能:将 KV 缓存压缩 4 倍。在 Gemma 4-26B 4 位模型的 100K 上下文中,它提供 66.9 tok/s,而基线为 27.5 tok/s(2.43 倍加速),并将 40K 上下文中的操作系统 RAM 从 48.7 GB 降至 18.2 GB。在 8 位时,它提供 48.3 tok/s,而原始为 14.9(3.24 倍)。README 明确表明,在带宽受限的模型上,TurboQuant 通常比 MTP 更有效。

  4. MTP(多 token 预测 / 投机解码) — 每一步预测多个 token。在 8 位模型(带宽受限)上,MTP 在 40K 上下文中提供 +20% 的提升,在 100K 上下文中提供 +51% 的提升。README 仔细说明了 MTP 不 起作用的情况(4 位 MoE 是计算受限的;与 TurboQuant 结合时会损失,因为计算是开销)。

  5. SSD 流式传输(--stream-experts) — 对于统一内存无法容纳的模型,SwiftLM 可以直接从 NVMe SSD 流式传输专家层。例如:126 GB 的 DeepSeek-V4-Flash 在 64 GB M5 Pro 上,在 TurboQuant 下以 40K 上下文约 4.2 tok/s 运行,而没有时为 0.32 tok/s。

  6. 长上下文支持 — 在基础 Mac mini M6(32 GB)上测试到约 80.7K 个 token,在 M5 Pro 上测试到 100K,并仔细关注 KV 缓存大小调整和 --turbo-kv 长距离召回修复(#175、#65)。

  7. 内存保护与正确性 — README 记录了 32 GB 机器如何暴露隐藏的错误(无界 MLX 缓冲区缓存、错误的 KV 缓存估计导致 Metal GPU 超时崩溃、当 preprocessor_config.json 缺少 image_mean 时的 VLM 回退、分块预填充修复)。它还指出 DFlash(另一个投机解码项目)由于贪婪解码锁定而不适合在 Qwen3.6 上生产使用,并指出了正确的修复方法(Leviathan/Chen 的随机后验采样)。

为什么重要

  • 原生 Apple Silicon 性能 — 没有 Python 开销;单个二进制文件使用 Metal、统一内存和 M 系列芯片的全部带宽。
  • 内存效率 — 使大型 MoE 模型(例如 26B)可在 32 GB Mac 上运行,甚至可通过 SSD 流式传输在 64 GB 上运行 126 GB 模型。
  • 长上下文加速 — TurboQuant 和 MTP 以基于基准测试的谨慎方式组合;README 包含何时使用哪个的表(40K 以上的 8 位使用 --mtp,TurboQuant 最大吞吐量使用 --turbo-kv,24 GB Mac 使用 --stream-experts)。

实际用例

  • 在 Mac 上本地运行 LLM,用于开发、测试或通过 OpenAI 兼容端点进行生产。
  • 在 GPU 内存有限的笔记本电脑/台式机上部署(例如,使用 --stream-experts 的 24 GB Mac)。
  • 需要 40K-100K 个 token 而不耗尽 RAM 的长上下文应用(代码文件、文档)。
  • iOS 集成(有一个 SwiftBuddy iOS 演示)。

技术说明(公平起见)

  • README 中充满了不同芯片(M1 Ultra、M5 Pro、M6)和模型类型(4 位与 8 位、MoE 与稠密)的基准测试表,并带有明确的注意事项:“排除 TTFT”、“内存保护中止超过 2 GB 的交换”、“40.8K 时的针检查在两种模式下都不可靠”。
  • 它诚实地说明了局限性:MoE 上的 --gpu-layers 非常慢(单核 CPU 回退),MTP+TurboQuant 在计算受限模型上可能会低于单独使用 TurboQuant,并且 DFlash 被标记为不适合生产。
  • 构建需要 Homebrew 的 cmake,从子模块(mlx-swift-lm 分支)编译 Metal 内核,发布 tarball 是自包含的。

简而言之:一个严肃的、精心设计的、基于基准测试的 Swift 服务器,用于 Apple Silicon LLM 推理,具有突出的 TurboQuant KV 压缩和谨慎的 MoE/SSD 流式传输支持。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目