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は、Qwen3-NextやQwen3.5/3.6シリーズ(最大80B、あるいは397Bパラメータ)など、大規模なMixture-of-Experts(MoE)モデルを、消費者向けのAppleハードウェア(iPhoneを含む)で実行可能にします。メモリのボトルネックを解消するために、モデルの重みをSSDからGPUにオンデマンドでストリーミングする仕組みを採用しており、モデル全体をRAMに常駐させる必要がありません。

動作方法

Swiftletはメモリ管理にハイブリッドアプローチを採用しています:

  • 密度型コアの常駐:アテンション、埋め込み、ルーターなど、必須の密度型重みのみをメモリに常駐させます。
  • エキスパートのストリーミング:ルーティングされたエキスパートは固定ステップ幅で.qpackコンテナにパックされます。トークンが処理される際、ランタイムはpreadを使用してストレージから必要なエキスパートのみをバウンデッドキャッシュプールにフェッチします。
  • Metal統合:前方伝搬全体をランタイムコンパイルされたMetalシェーダーでGPU上で実行します。
  • 線形アテンション:レイヤーの75%でGated DeltaNet線形アテンションを活用し、コンテキスト長が増加してもKVキャッシュが成長しないようにします。

対象ユーザー

  • Apple Siliconユーザー:M1からM5までのMac、またはiOS 17以降のiPhoneをお使いで、高パラメータモデルをローカルで実行したい開発者やエンジニア。
  • iOSアプリ開発者:Swiftベースのアプリケーションに高性能なローカルLLMエンジンを統合したい方。SwiftletCoreパッケージを通じて実現可能。

主な特徴

  • 極めて効率的なRAM使用:4ビットで80Bモデルを約4.3GBのRAM、35Bモデルを約2.6GBのRAMで実行可能。
  • クロスプラットフォーム:macOS 14+およびiOS 17+で動作。
  • 複数のインターフェース:アプリ統合用のSwiftパッケージ、ベンチマーク用CLI、サードパーティUI用のOpenAI互換サーバーを提供。
  • 検証済みの正しさ:各レイヤーはmlx-lmの参照実装と比較され、出力の同一性を保証しています。
  • iPhone対応:ベースモデルのiPhoneで35Bパラメータのモデルを実行可能。

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト