leonickson1/Swiftlet

Swiftlet is a Swift and Metal runtime that runs large Qwen Mixture-of-Experts models locally on Apple devices by streaming expert weights from storage, enabling 35B and 80B models to run with low RAM, including on iPhone.

解决的问题

Swiftlet 允许大型混合专家(MoE)模型(如 Qwen3-Next 和 Qwen3.5/3.6 系列,参数高达 80B 甚至 397B)在消费级 Apple 硬件(包括 iPhone)上运行。它通过按需从 SSD 流式传输模型权重到 GPU,解决了内存瓶颈问题,而无需将整个模型常驻在 RAM 中。

工作原理

Swiftlet 采用混合内存管理方法:

  • 密集核心常驻:仅将必要的密集权重(注意力、嵌入、路由)保留在内存中。
  • 专家流式传输:被路由的专家被打包进带有固定步长的 .qpack 容器中。当处理一个 token 时,运行时使用 pread 仅从存储中获取所需的专家到一个有界缓存池中。
  • Metal 集成:整个前向传播通过运行时编译的 Metal 着色器在 GPU 上执行。
  • 线性注意力:在 75% 的层中使用 Gated DeltaNet 线性注意力,防止随着上下文长度增加 KV 缓存不断增长。

适用人群

  • Apple Silicon 用户:拥有 M1 至 M5 系列 Mac 或 iOS 17+ iPhone 的开发者和爱好者,希望在本地运行高参数模型。
  • iOS 应用开发者:希望在 Swift 应用中通过 SwiftletCore 包集成高性能本地 LLM 引擎的开发者。

主要亮点

  • 极致的 RAM 效率:4 位精度下,80B 模型仅需约 4.3 GB RAM,35B 模型仅需约 2.6 GB RAM。
  • 跨平台支持:支持 macOS 14+ 和 iOS 17+。
  • 多种接口:提供 Swift 包用于应用集成、CLI 用于基准测试、OpenAI 兼容服务器用于第三方 UI。
  • 经过验证的正确性:每一层均与 mlx-lm 参考实现进行比对,确保输出一致。
  • iPhone 支持:可在基础款 iPhone 上运行 35B 参数模型。

相关

  • Dispatch
  • 项目
  • 项目
  • Dispatch
  • 项目