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 應用開發者:希望透過
SwiftletCore套件將高性能本地 LLM 引擎整合至 Swift 應用程式的開發者。
主要亮點
- 極致的 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
- 專案