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
- 项目