Swiftlet: 在 Mac 和 iPhone 上运行 80B 和 35B Qwen 模型
Swiftlet 使能够在消费级 Apple 硬件上执行大规模混合专家 (MoE) 模型,特别是 Qwen3-Next 和 Qwen3.5/3.6 系列。通过按需从存储中流式传输路由权重,而不是将整个模型加载到内存中,Swiftlet 允许 80B 参数模型在 Mac 上仅占用 4.3 GB RAM 运行,而 35B 参数模型在 iPhone 上仅占用 2.5 GB RAM 运行。
专家流式传输架构
Swiftlet 通过利用 MoE 模型的稀疏性来实现低内存占用,在任何给定 token 时,只有一小部分参数是活跃的。在 Qwen 混合模型中,每个 token 仅约有 3B 参数处于活跃状态。
内存管理与权重流式传输
为了最大限度地减少 RAM 使用量,Swiftlet 采用了特定的内存策略:
- 常驻密集权重: 运行时保留必要的密集权重——包括 attention、DeltaNet 投影、routers、共享专家和 embeddings——在内存中。在 4-bit 量化下,这对于 35B 模型大约需要 1.3 GB,对于 80B 模型大约需要 2.5 GB。
- 固定步长 Blob: 路由专家被重新打包进一个使用固定步长 blob 的
.qpack容器中。这允许系统使用单个pread操作从 SSD 获取特定的专家,从而避免了mmap和页面缓存抖动的开销。 - LFU 缓存: 一个有界池使用最不经常使用 (LFU) 策略结合近期淘汰机制来缓存“热”专家。由于 Apple SSD 提供高吞吐量,即使在缓存命中率在 43% 到 70% 之间时,系统仍能保持性能。
硬件加速
Swiftlet 使用 Swift 和 Metal 编写,利用运行时编译的 shader 来在 GPU 上执行前向传播。这种方法无需在构建时使用 Metal 工具链,并确保了在 macOS 和 iOS 上的兼容性。
性能与模型支持
Swiftlet 支持 Qwen MoE 混合系列的 4-bit 量化版本。性能因设备和模型大小而异:
| Model | Disk Space | Peak RAM | Decode Speed (M5 Mac) |
|---|---|---|---|
| Qwen3.6-35B-A3B | 18 GB | 2.6 GB | 7 to 11 tok/s |
| Qwen3-Next-80B-A3B | 42 GB | 4.3 GB | 4.5 to 5 tok/s |
在 iPhone 17 上,35B 模型在约 2.5 GB RAM 下运行,速度约为每秒 1 个 token。
架构权衡
虽然这些模型保持了大模型的聊天和写作能力,但作者指出,由于每个 token 仅有 3B 参数处于活跃状态,它们“召回事实的能力就像小模型一样”。
实现与工具
Swiftlet 首先被设计为一个库,提供了四种主要的交互方式:
- Swift Package:
SwiftletCore可以通过SwiftletSession集成到 macOS 或 iOS 应用中,用于聊天、流式传输 deltas 和处理内存压力。 - CLI Tools:
swiftlet chat和swiftlet generate用于本地使用,以及swiftlet-repack用于将 MLX checkpoint 转换为.qpack容器。 - OpenAI-Compatible Server:
swiftlet-server提供了一个 loopback API,允许任何 OpenAI 兼容的 UI 连接到本地模型。 - iOS App: App Store 上的 Priv AI 应用集成了 SwiftletCore,以提供原生的设备端聊天体验。
技术传承与正确性
Swiftlet 基于 TurboFieldfare 为 Gemma 模型证明的“专家流式传输论题”构建。它采用了 TurboFieldfare 的多个设计经验,包括使用 pread 进行流式传输、LFU 淘汰机制以及运行时 shader 编译。
为了确保正确性,前向传播的每一层——包括 Gated DeltaNet 递归和稀疏 MoE 路由——都使用 f32 和 int4 量化形式的每层 fixture 进行验证,并与 mlx-lm 参考实现进行对比。
社区观点
用户之间的讨论突出了这种方法的潜力与实际限制:
- 硬件损耗: 一些用户担心持续的磁盘交换可能会导致 SSD 提前磨损(“NAND burners”)。
- 预填充瓶颈: 批评者指出,虽然解码速度可以接受,专家流式传输在处理长上下文时,预填充阶段(处理初始 prompt)可能会成为显著的瓶颈。
- 可扩展性: 一些用户建议 RAM 缓存应该是可调的,允许拥有更多 RAM(例如 32 GB)的用户通过增加缓存大小来进一步提升速度。
- 未来设备端 AI: 支持者认为,这是迈向未来的一步,即大规模模型在消费级硬件上运行,可能用负担得起的基于 SSD 的存储来取代昂贵的 GPU 集群。