SharpAI/SwiftLM

⚡ Native MLX Swift LLM inference server for Apple Silicon. OpenAI-compatible API, SSD streaming for 100B+ MoE models, TurboQuant KV cache compression, MACOS + iOS iPhone app.

それは何か

SwiftLM は、Swiftで書かれた高性能推論サーバーで、Apple Silicon上でMLX(Appleの機械学習フレームワーク)モデルを実行します。標準的なOpenAI互換API(/v1/chat/completions)を提供するため、既存のクライアントやツールは変更なしで接続できます。典型的なPythonベースのスタックとは異なり、PythonランタイムやGILなしの単一のネイティブバイナリにコンパイルされます。READMEは、Apple Siliconでのベアメタルパフォーマンスを強調しています。

これは、真剣に開発が進められているプロジェクトで、詳細なエンジニアリング情報が含まれています:ベンチマークテーブル、バグ修正の説明(32GB Macで発生したメモリバグ)、スライディングウィンドウ境界バグ後のビット同一ロールバックを備えたMTP投機的デコード、過大なMoEモデル向けの--stream-experts SSDストリーミングなどのパフォーマンス機能があります。

主な機能と革新

  1. OpenAI互換API — OpenAIスタイルのエンドポイントのドロップイン代替。モデルはHugging Faceから自動ダウンロードされます(例:mlx-community/gemma-4-26b-a4b-it-4bit)。

  2. MoE(Mixture-of-Experts)最適化 — Gemma 4 26Bのようなモデル(トークンごとに26Bパラメータのうち約4Bのみアクティブ)では、SwiftLMはアクティブなエキスパートのみを読み取り、同じメモリフットプリントで高密度27Bモデルよりも5〜6倍高速なデコード速度を実現します。

  3. TurboQuant — 主要機能:KVキャッシュを4倍に圧縮します。Gemma 4-26B 4ビットの100Kコンテキストで、66.9 tok/s(ベースライン27.5 tok/s)(2.43倍高速化)を実現し、40KコンテキストでのOS RAMを48.7GBから18.2GBに削減します。8ビットでは、48.3 tok/s(バニラ14.9)を実現(3.24倍)。READMEには、TurboQuantが帯域幅制約のあるモデルでMTPよりも効果的であることが明示されています。

  4. MTP(マルチトークン予測/投機的デコード) — ステップごとに複数のトークンを予測します。8ビットモデル(帯域幅制約)では、MTPは40Kコンテキストで+20%、100Kで+51%の速度向上をもたらします。READMEは、MTPが役に立たない場合(4ビットMoEは計算制約であり、TurboQuantと組み合わせると計算がオーバーヘッドになるため損失)を注意深く説明しています。

  5. SSDストリーミング(--stream-experts) — ユニファイドメモリに収まらないモデルの場合、SwiftLMはNVMe SSDから直接エキスパートレイヤーをストリーミングできます。例:126GBのDeepSeek-V4-Flashが64GBのM5 Proで、TurboQuantを使用した40Kコンテキストで約4.2 tok/sで動作(なしでは0.32 tok/s)。

  6. 長いコンテキストのサポート — ベースのMac mini M6(32GB)で約80.7Kトークン、M5 Proで100Kまでテスト済み。KVキャッシュのサイズ設定と、--turbo-kvの長距離リコール修正(#175、#65)に細心の注意を払っています。

  7. メモリガードと正確性 — READMEは、32GBマシンが隠れたバグを露呈させたことを文書化しています(無制限のMLXバッファキャッシュ、Metal GPUタイムアウトでクラッシュする誤ったKVキャッシュ推定、preprocessor_config.jsonにimage_meanがない場合のVLMフォールバック、チャンク化されたプレフィルの修正)。また、DFlash(別の投機的デコードプロジェクト)は、グリーディデコーディングの固定化によりQwen3.6の本番環境には不適切であり、適切な修正(Leviathan/Chenによる確率的事後サンプリング)を指摘しています。

なぜ重要なのか

  • ネイティブApple Siliconパフォーマンス — Pythonオーバーヘッドなし。単一のバイナリがMetal、ユニファイドメモリ、Mシリーズチップの全帯域幅を使用します。
  • メモリ効率 — 大規模なMoEモデル(例:26B)を32GB Macで実行可能にし、SSDストリーミングにより64GBで126GBモデルも実行可能にします。
  • 長いコンテキストでの高速化 — TurboQuantとMTPは、ベンチマーク駆動の慎重な方法で組み合わされます。READMEには、いつどちらを使用すべきかのテーブルが含まれています(40K以上の8ビットには--mtp、TurboQuantで最大スループットを得るには--turbo-kv、24GB Macには--stream-experts)。

実用的なユースケース

  • Mac上でLLMをローカルに実行し、開発、テスト、またはOpenAI互換エンドポイントで本番運用。
  • GPUメモリが限られているラップトップ/デスクトップでの展開(例:--stream-expertsを使用した24GB Mac)。
  • 40K〜100KトークンをRAMを使い果たさずに必要とする長いコンテキストアプリケーション(コードファイル、ドキュメント)。
  • iOS統合(SwiftBuddy iOSデモがあります)。

技術的な注意点(公平を期すために)

  • READMEには、異なるチップ(M1 Ultra、M5 Pro、M6)とモデルタイプ(4ビット対8ビット、MoE対高密度)にわたるベンチマークテーブルが豊富にあり、明確な注意事項があります:「TTFTは除外」、「メモリガードは2GBを超えるスワップを中止」、「40.8Kでのニードルチェックは両モードで信頼できない」。
  • 制限について正直です:MoEでの--gpu-layersは非常に遅い(シングルコアCPUフォールバック)、MTP+TurboQuantは計算制約のあるモデルでTurboQuant単独よりも低下する可能性があり、DFlashは本番環境非対応とフラグされています。
  • ビルドにはHomebrewのcmakeが必要で、サブモジュール(mlx-swift-lmフォーク)からMetalカーネルをコンパイルし、リリースtarballは自己完結型です。

要するに:Apple SiliconでのLLM推論向けの、真剣に設計されたベンチマーク駆動のSwiftサーバーであり、スタンドアウトするTurboQuant KV圧縮と、慎重なMoE/SSDストリーミングサポートを備えています。

関連

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