一个叫 Swiftlet 的 Swift Metal 运行时正在重新定义大模型能跑在哪。它专门伺候 Qwen3Next 和 Qwen3536这一族 MoE 混合模型,核心思路很狡猾:只让模型的小型稠密核心常驻内存,真正的大头那些路由专家权重平时躺在 SSD 里,用到时才按需求流式取出来。效果直接体现在数字上。
在 M5Mac 上,Qwen3635BA3B 的4bit 版本磁盘占18GB,但峰值内存只有26GB,解码速度7到11toks;更夸张的是 Qwen3Next80BA3B 的4bit 版,磁盘要42GB,可峰值内存竟压到43GB,速度45到5toks。35B 版本如今还能在 iPhone17上跑起来,内存约25GB,速度大约1toks据开发者所知,这是该量级模型第一次在手机上原生运行,全程不碰服务
器。项目已经端到端可用,两个模型都能吐出经过验证的正确输出。开发者也坦白了一个代价:每个 token 实际只激活约3B 参数,所以
这些模型在对话和写作时像个大模型,事实记忆上却还是个小模型。拆开它的工作原理,门道在于调度的精细度。每一层会把每个 token 路由到512个专家里的10个80B 版或256个专家里的8个35B 版。
Swiftlet 把稠密权重注意力、DeltaNet 投影、路由器、共享专家、嵌入向量牢牢钉在内存里,4bit 下约13GB35B或25GB80B。成千上万个路由专家则被重新打包成固定步长的数据块,装进 qpack 容器,取一个专家只需对 SSD 做一次 pread,不用 mmap,也不会搅动页缓存。热门专家缓存在一个有限大小的池子里,用 LFU 加近期性策略淘汰;实测命中率43 到70,而缓存大
小对速度几乎没影响,因为 Apple 的 SSD 足以消化未命中带来的开销。整个前向传播跑在 Metal 上,用的是运行时编译的着色器,所以
构建时根本不需要 Metal 工具链,同一套代码能直接部署到 iOS。更有意思的是,75 的层用 Gated DeltaNet 线性注意力,带着固定大小的循环状态,这意味着无论上下文多长,都不会长出不断膨胀的 KV 缓存长文本对话的隐藏负担被悄悄卸掉了。Swiftlet 不只一个命令行玩具,它给自己设计了四种身份。
作为库,SwiftletCore 能塞进任意 macOS 或 iOS 应用,提供带流式增量输出和对话缓存的聊天能力;作为命令行工具,swiftlet chat 和 swiftlet generate 负责本地跑和基准测试,swiftletrepack 能从 MLX 检查点直接构建容器,还支持从 Hugging Face 断点续传下载;作为服务器,swiftletserver 在回环地址上提供 Op
enAI 兼容的 chatcompletions 接口,任何兼容 OpenAI 的聊天界面都能接上本地模型;作为应用,iOS 端的 Priv AI 把 SwiftletCore 嵌成了流式模型引擎,普通用户点一下下载就能聊。正确性上,每一层前向传播都和 mlxlm 参考实现逐层对拍,覆盖 f32和 int4量化形式,增量解码也与整序列结果比对,Metal 内核更是针对精确 CPU 参考反复验证,容
器还能和源检查点做字节级校验专家从缓存还是磁盘读,给出的回答完全一致。它的灵感脉络也讲得很清楚:TurboFieldfare 先在 Mac 上验证了给 Gemma 做专家流式的可行性,Swiftlet 借鉴了其中若干公开设计经验,比如用 pread 把专家流式读进有界槽位池、用 LFU 加近期性淘汰、固定步长打包让一次读取即一次 fetch。但其余部分基本从零写起,约一万行 Swift 和 Met
al 代码,硬啃下了架构完全不同的 Qwen 混合体系:Gated DeltaNet 线性注意力、门控 GQA,以及带共享专家的高稀疏 MoE。它甚至在 Metal 里实现了 MLX 风格的 int4int8分组量化计算,用字节寻址内核和64位偏移撑起数 GB 的分片。想上手机,要求并不苛刻:Apple Silicon、macOS14 或 iOS17,再加上足够的 SSD 空间35B 要18GB,
80B 要42GB。iPhone 端目前可在 App Store 的 Priv AI 应用里开启 Experimental Models 下载,该功能随新版本发布,尚在审核通道中,想立刻体验也可从源码自构建。整个项目以 Apache20释出,模型权重单独下载并遵循各自条款。
。