👁 140 次阅读
引言:当大模型开始”吃”SSD而不是RAM
2026年8月4日,一个名为 Swiftlet 的开源项目登上了 HackerNews 首页,以268个点赞和118条评论引发社区热议。它的口号极具冲击力——“在 Mac 上以 4.3GB 运行 80B Qwen 模型,在 iPhone 上运行 35B Qwen 模型”。这不是一句营销话术,而是一个已经验证可运行的工程奇迹。
长期以来,本地大模型推理有一个看似不可逾越的瓶颈:显存/内存。跑一个 70B 模型需要 32GB+ 显存,跑 500B 模型需要 256GB+。普通消费者手中的 MacBook 和 iPhone 只能望而却步,被迫使用云端 API。但 Swiftlet 开辟了一条全新的路径——它利用 MoE(混合专家)模型的稀疏特性,把大多数参数留在 SSD 上,只把活跃的”小核心”加载到内存中。其结果呢?一台普通的 MacBook Air M5 就能流畅运行 80B 参数的 Qwen3-Next 模型,而 iPhone 17 也能跑 35B 的 Qwen3.6。
本文将从技术原理、实际性能、使用方式和适用场景四个维度,深度评测这个可能改变本地 AI 推理格局的开源项目。
一、Swiftlet 是什么?—— 一场”流式推理”的实验
Swiftlet 是一个纯 Swift + Metal 编写的大模型推理运行时,由开发者 Leonickson 在 2026 年 8 月初发布,总代码量约 10,000 行。它不是又一个”用 Python 包装 llama.cpp 的工具”,而是从零开始、用 Apple 原生生态的语言(Swift 5.9+)和图形 API(Metal)编写的推理引擎。
它的核心创新在于专家流式加载(Expert Streaming)。Swiftlet 专门针对 Qwen 家族的 MoE(Mixture of Experts)混合架构模型设计,特别是 Qwen3-Next 和 Qwen3.6 系列。这些模型虽然总参数高达 35B 甚至 80B,但每次推理只激活约 3B 的参数——其余参数以”专家”的形式分布在数百个独立的小网络中。Swiftlet 的巧妙之处在于:
- 把模型的”密集核心”(Attention、路由、Embedding 等)常驻内存,仅需 1.3-2.5GB
- 把数千个”专家”权重打包成固定步长的 .qpack 容器文件存在 SSD 上
- 每次推理时,按需从 SSD 读取当前 token 需要的 8-10 个专家,用 pread 系统调用精确读取一个专家,不浪费任何 IO
- 用 LFU + 最近使用双策略缓存热门专家,命中率 43-70%
- 整个前向传播通过 Metal 运行时编译的着色器在 GPU 上执行,无需预编译 Metal 工具链
这种设计让 Swiftlet 的 80B 模型推理仅需 4.3GB 峰值内存(42GB 磁盘占用),而传统的密集模型推理需要 160GB+ 的显存。这是一个数量级的效率提升。
二、真实性能数据:Mac 和 iPhone 上表现如何?
Swiftlet 官方提供了详细的性能基准数据,我们逐一验证分析:
Mac(Apple Silicon M5)
| 模型 | 磁盘占用 | 峰值内存 | 生成速度 |
|---|---|---|---|
| Qwen3.6-35B-A3B (4-bit) | 18 GB | 2.6 GB | 7-11 tok/s |
| Qwen3-Next-80B-A3B (4-bit) | 42 GB | 4.3 GB | 4.5-5 tok/s |
35B 模型在 Mac 上达到 7-11 tok/s 的速度,已经可以流畅对话。80B 模型 4.5-5 tok/s 的速度虽然略慢,但仍处于可接受的交互式对话范围。值得注意的是,Swiftlet 的作者坦诚:当前解码循环的瓶颈是调度(dispatch bound)而非 IO 带宽,意味着还有明确的优化空间。
iPhone 17
35B 模型在 iPhone 17 上以约 2.5GB 内存运行,生成速度约 1 tok/s。这确实很慢——聊天需要等待,但重要的是:它真的在跑。一台手机,没有网络连接,本地运行一个 35B 参数的模型。这在 2025 年之前是不可想象的。
Swiftlet 的灵感来自 ANEMLL 在 2026 年初的概念验证——他们曾在 iPhone 17 Pro 上流式运行 397B 的 MoE 模型。Swiftlet 在此基础上更进一步,让 35B 模型成为可安装的 App,任何人都可以从 App Store 下载体验。
三、四种使用方式:从开发者到普通用户全覆盖
Swiftlet 的设计非常优雅——它首先是一个 Swift 库,然后围绕它构建了三种使用形态:
1. Swift 包(SwiftletCore)
这是最底层的使用方式。任何 macOS 或 iOS 应用都可以通过 Swift Package Manager 引入 SwiftletCore,然后使用 SwiftletSession 进行对话。它内置了流式传输、对话缓存、采样控制(重复惩罚、温度调节)、内存压力处理等特性。适合希望在自己的应用中集成本地大模型推理的开发者。
2. 命令行工具(CLI)
编译完成后,Swiftlet 提供两个核心命令:
swiftlet chat— 交互式对话,支持多轮对话,自动应用对话模板swiftlet generate— 一次性生成,支持 –gpu 和 –chat 参数,适合基准测试swiftlet-repack— 从 MLX 检查点或 Hugging Face 直接下载并打包成 .qpack 容器,支持断点续传
安装过程非常简单:git clone 后执行 swift build -c release,然后下载模型权重即可开始聊天。
3. OpenAI 兼容服务器
swiftlet-server 在回环地址(loopback)上启动一个 OpenAI 聊天补全 API 兼容的 HTTP 服务器。这意味着任何支持 OpenAI 兼容接口的聊天 UI(如 Open WebUI、ChatGPT 桌面客户端等)都可以无缝对接 Swiftlet 的本地模型。这是目前最实用的使用方式——开发者可以像调用云端 API 一样调用本地模型。
4. iOS App(Priv AI)
对于普通用户,Swiftlet 已经嵌入到 App Store 上的 Priv AI 应用中。在设置中打开”Experimental Models”,下载模型后即可在手机上本地聊天,无需服务器,无需网络,数据完全在设备上。App 本身也是开源的(leonickson1/localLLM),你可以自己编译部署。
四、技术深度:Swiftlet 的架构创新
Swiftlet 并非简单的”llama.cpp 的 Swift 移植版”。它的架构设计有几个值得深入的技术亮点:
Gated DeltaNet 线性注意力
Qwen3-Next 模型的 75% 层使用 Gated DeltaNet 线性注意力机制。这意味着这些层没有传统 Transformer 中不断增长的 KV 缓存,而是一个固定大小的循环状态。无论上下文多长,这些层的计算开销不变。这是 Swiftlet 能在低内存设备上运行长上下文的关键原因之一。
Metal 运行时编译着色器
Swiftlet 的 Metal 着色器是在运行时编译的,而不是预先编译成 .metallib。这带来了两个好处:一是构建时不需要 Metal 工具链,同一个代码可以同时部署到 macOS 和 iOS;二是可以针对具体的硬件(如 M5 的 GPU 架构)生成优化代码。
MLX 兼容的 INT4/INT8 量化
Swiftlet 在 Metal 中实现了 MLX 风格的仿射 INT4/INT8 分组量化计算。它使用字节寻址内核和 64 位偏移量来处理多 GB 的大权重分片,并通过协作式 simdgroup GEMV 快速路径和显式 hazard 管理来优化 GPU 利用率。
.qpack 容器格式
Swiftlet 定义了自己的 .qpack 容器格式,用于存储打包后的专家权重。每个专家在容器中占据固定步长的位置,因此读取一个专家就是一次 pread 系统调用——没有 mmap、没有页缓存抖动。容器还支持从 Hugging Face 流式安装(带断点续传和宕机恢复),下载的字节直接写入最终位置,无需二次拷贝。
五、与现有方案的对比
| 方案 | 最大模型 | 最低内存 | iPhone 支持 | 平台 |
|---|---|---|---|---|
| Swiftlet | 80B | 4.3 GB | ✅ iPhone 17 | Apple Silicon |
| llama.cpp | 70B | ~40 GB | ❌ | 跨平台 |
| MLX | 70B | ~40 GB | ❌ | Apple Silicon |
| TurboFieldfare | Gemma MoE | 流式 | ❌ | Mac 仅 |
| ANEMLL | 397B | 流式 | ✅ Pro | 概念验证 |
llama.cpp 和 MLX 是更成熟、模型支持更广的方案,但运行 70B 模型需要至少 40GB 内存,普通 MacBook 和 iPhone 完全不可用。Swiftlet 通过牺牲模型多样性(仅支持 Qwen MoE 家族)、换取了极低的内存占用,让 80B 模型在 4.3GB 内存上运行——这在本地推理领域是一个重要的 trade-off 突破。
六、局限性:诚实地说说 Swiftlet 的不足
Swiftlet 的 README 作者非常坦诚,我们也应该客观看待它的局限性:
活跃参数只有 3B
虽然总参数是 35B 或 80B,但每次推理只激活约 3B 的”小核心”。这意味着模型聊天和写作像大模型,但事实记忆能力像小模型。它可能写出一篇流畅的散文,但问它”2024年诺贝尔物理学奖得主是谁”可能答不上来。这是 MoE 流式推理的固有特性,不是 Bug。
仅支持 Qwen MoE 模型
Swiftlet 当前只支持 Qwen3-Next 和 Qwen3.6 系列模型。如果你需要跑 Llama、Mistral、DeepSeek 等其他模型,Swiftlet 不适用。相比之下,llama.cpp 支持数百种模型架构。
iPhone 速度慢
在 iPhone 17 上,35B 模型只有 1 tok/s 的生成速度。这意味着每次对话需要等待 10-30 秒才能得到回复,交互体验远不如云端 API。不过对于离线场景和隐私敏感应用,这个速度已经是一个可接受的起点。
Apple Silicon 独占
Swiftlet 使用 Swift + Metal,完全绑定在 Apple 生态中。没有 Linux 版本,没有 Windows 版本,没有 NVIDIA GPU 支持。如果你不是 Apple 用户,Swiftlet 目前与你无关。
七、总结与展望
Swiftlet 是一个令人兴奋的工程创新。它证明了:
- 利用 MoE 模型的稀疏特性,可以打破”大模型 = 大显存”的铁律
- Swift + Metal 的组合可以获得与 C++ 接近的性能,同时享受更好的开发体验
- 商业级 AI 推理可以在 iPhone 上真实运行,不再只是概念验证
对于 Apple Silicon 用户(MacBook Air/Pro、iMac、Mac Studio、iPhone 17),如果你对本地 AI 推理感兴趣,Swiftlet 是一个值得立即尝试的项目。它开源、免费(Apache 2.0 许可)、经过验证,安装流程也相当简单。
从更长远的视角看,Swiftlet 所代表的”专家流式推理”方向,可能会改变 AI 推理的部署范式。如果这种技术可以扩展到更多模型架构(Llama、DeepSeek、Mistral 等),我们或许很快就能在普通笔记本电脑上运行 100B+ 级别的模型,而不再需要昂贵的 GPU 集群。
Swiftlet 的 GitHub 仓库已有 296 颗星,HackerNews 讨论 118 条评论,社区反响热烈。对于关注本地 AI 推理的技术爱好者,这绝对是 2026 年 8 月最值得了解的开源项目之一。
项目链接:github.com/leonickson1/Swiftlet
iOS App:Priv AI on App Store
模型权重:Qwen3.6-35B-A3B (Hugging Face) | Qwen3-Next-80B-A3B (Hugging Face)