slotstream: 48GBのMacで104GBのQwen3.8-Flash-Nextを実行する
slotstreamは、Apple Silicon Macユーザーが、モデルの総サイズよりも大幅に少ないRAMを備えたハードウェア上で104GBのQwen3.8-Flash-Next (125B MoE, 4-bit) モデルを実行できるようにするツールです。SSDから管理されたメモリプールへルーティングされたエキスパートをストリーミングすることで、このツールは、利用可能なメモリがわずか8.1 GBであっても推論を可能にしますが、パフォーマンスは利用可能なRAMによってスケールします。
パフォーマンスとハードウェア要件
48 GBのMac (M5 Pro) では、slotstreamは、ウォームデコード速度が約12 tokens per second、コールドスタートから最初のトークンまでの時間は約3秒を達成します。システムは弾力的に設計されており、メモリターゲットを、33 GB、全RAMの70%、またはMetal working-set limitのいずれかの中で最も低い値に自動的に設定します。
RAMティア別の推定パフォーマンス
| Memory | Estimated Speed |
|---|---|
| 16 GB | ~5 tok/s |
| 24 GB | ~8 tok/s |
| 32 GB | ~10 tok/s |
| 48 GB+ | ~12 tok/s |
ディスク容量が主な制約となります。 ユーザーはモデルの重みを保存するために、約110 GBの空きディスク容量を必要とします。重みはSSDからストリーミングされるため、ストレージ媒体の速度がパフォーマンスに直接影響します。外部USBディスクからモデルを実行しているユーザーからは、速度が0.5 tokens per secondまで低下したとの報告があります。
技術アーキテクチャ: SSDストリーミング
slotstreamは、大規模なMoE (Mixture-of-Experts) モデルをロードする際に通常発生するメモリ不足を回避します。標準的な mlx_lm.load() はモデル全体をメモリにロードしようとしますが、slotstreamはカスタムのストリーミング手法を利用します:
- Resident Components: 密なトランク (3.8 GB) と32 GBのn-gramテーブルはメモリ内に保持されます。
- Expert Streaming: 68 GBのルーティングされたエキスパート (各レイヤーに512個) は、
preadを使用して、全48レイヤーで共有される固定のキャッシュスロットのプールに読み込まれます。 - Memory Elasticity: システムは15秒ごとに利用可能なメモリを再確認し、リクエスト間でエキスパートキャッシュのサイズをリサイズして、負荷がかかると縮小し、リソースが利用可能になると拡大します。
このアーキテクチャにより、キャッシュサイズに関係なく、貪欲なデコーディング (greedy decoding) がバイト単位で同一であることが保証されます。割り当てられたRAMの量を変更することは、推論の速度にのみ影響し、出力の品質には影響しません。
インストールとAPI互換性
slotstreamは、単一のSwiftバイナリとして配布されます。macOS 14+およびApple Siliconが必要です。
デプロイメント
ユーザーは、curlスクリプトを介してツールをインストールでき、バイナリは ~/.slotstream/bin に配置されます。ツールには、104 GBの重みをダウンロードする前にメモリプランとディスクの空き容量をプレビューするための doctor コマンドが含まれています。
APIと統合
serve コマンドは、ポート11434上でOllamaとOpenAIのチャット/生成エンドポイントのサブセットを実装しています。これにより、slotstreamは既存のOllamaクライアント、OpenAI SDK、およびOpen WebUIで使用することができます。サポートされているサンプリングオプションには、temperature, top_p, top_k, min_p, presence_penalty, seed, num_predict, および stop が含まれます。
現在の制限事項
- Prefill Latency: 長いプロンプトは、最初のトークンが生成される前にプロンプト全体を処理する必要があるため、開始が遅くなります。Prefill速度は、~50 tok/s (16 GB Mac) から ~125 tok/s (48 GB Mac) の範囲です。しかし、会話のフォローアップターンでは、前の状態を再利用するため、チャットが進むにつれて最初のトークンまでの時間は一定に保たれます。
- Hardware Validation: 48 GB M5 Proから派生していますが、パフォーマンスの推定値は、より小さなRAMティアのハードウェア上での実測値ではなく、測定された曲線に基づいています。
- OS Compatibility: インストーラーはmacOS 14および15でテスト済みですが、ランタイムはこれらのバージョンで完全に検証されていません。
コミュニティの洞察と反論
コミュニティのディスカッションでは、LLMのローカルアクセスを民主化したいという願いと、断片化された実装の冗長性との間の緊張関係が浮き彫りにされています。
"There are already a handful of repos doing essentially exactly this... I'd much rather see people collaborate on one of these implementations... instead of producing yet another near-identical repo."
他のユーザーは、12 tokens per secondは実用的な速度ですが、エキスパートのストリーミングに必要とされる高いディスクI/Oは、時間の経過とともにSSDの摩耗に関する懸念を引き起こす可能性があること、および、8.1 GBのメモリフットプリントは、エントリーレベルのハードウェアを持つユーザーにとって重要な指標であると指摘しています。
Sources
関連
- Dispatch
- プロジェクト
- Dispatch
- Dispatch
- Dispatch