WASTE 推論エンジン:消費者向けハードウェアで Kimi K3 2.78T を実行する
WASTE(Weight-Aware Streaming Tensor Engine)は、NVMe ストレージからアクティブ化された重みを直接ストリーミングすることで、最先端規模のモデル、特に 2.78 兆パラメータの Kimi K3 を消費者向けハードウェア上で実行できるようにします。Kimi K3 は最小で 29.05 GB の RAM しか搭載していないマシンでも動作し、64 GB の MacBook Pro で約 0.5 トークン/秒のデコード速度を実現します。
アーキテクチャ:NVMe ストリーミングと重み管理
WASTE はディスクをモデルの Mixture of Experts(MoE)重みの主要ストレージとして扱い、RAM にはモデル本体(トランク)だけを常駐させることで、消費者向けハードウェアのメモリ制限を克服します。
重み認識ストリーミング
Mixture of Experts モデルはトークンごとにパラメータのごく一部(K3 では約 4%)しか活性化しないため、WASTE は各トークンに必要なエキスパートだけをディスクからストリーミングします。I/O オーバーヘッドを最小化するため、モデルは .waste コンテナに変換され、各エキスパートレコードは 4 KiB アラインメントになります。このレイアウトにより、エキスパートへのルーティングは正確に 1 回の pread 操作で済み、F_NOCACHE(macOS)、O_DIRECT(Linux)、FILE_FLAG_NO_BUFFERING(Windows)を使用して OS ページキャッシュをバイパスし、カーネルがテラバイト規模のモデルをキャッシュしようとするのを防ぎます。
残差ベクトル量子化(RVQ)
ディスク容量と I/O 帯域幅の要件を削減するため、エキスパートは 3 段階の残差ベクトル量子化で 1 重みあたり 3.00 ビットで保存されます。エンジンはこれらの量子化された重み上で直接演算を行い、完全な行列を実体化せずに、各エキスパート行の操作を 3 回のテーブル読み取りと 2 回の加算に削減します。
メモリ予算管理と「キャッシュフロア」
WASTE は残りの RAM を制限付きエキスパートキャッシュとして利用します。エンジンは「キャッシュフロア」―1 トークンの作業セットを保持するために必要な最小 RAM(K3 では 17.0 GB)を特定します。
- フロア以下: キャッシュヒット率は 0% で、次のトークンが要求する前にエキスパートが追い出されます。
- フロア以上: ヒット率が急激に上昇し、スループットが向上します。
- ページング上限: RAM 予算が高すぎると(例:64 GB マシンで 58 GB)、OS がエキスパートキャッシュをディスクにページングし始め、パフォーマンスが大幅に低下します(0.32 tok/s から 0.04 tok/s へ)。
これを回避するため、WASTE は物理 RAM の 7/8 未満に収まる予算を自動的に算出し、OS のページングを引き起こさないように作業セット単位で下げて効率を最大化します。
パフォーマンスベンチマーク
ベンチマークは 64 GB RAM と内部 NVMe SSD を搭載した MacBook Pro M5 Pro で実施しました。
Kimi K3(2.78T パラメータ)
| 指標 | 値 |
|---|---|
| 最小 RAM | 29.05 GB (at 4K context) |
| コンテナサイズ | 982 GiB |
| デコード速度 | 0.49–0.54 tok/s |
| 常駐トランク | 27.28 GB |
| トークンあたりの読み取り | 17.0 GB |
| ビジョンタワー | 15.7 s for 1024-patch image |
Kimi-Linear(48B パラメータ)
| 指標 | 値 |
|---|---|
| 最小 RAM | 1.87 GB |
| コンテナサイズ | 19 GB |
| デコード速度 | 10.7 tok/s |
技術実装の詳細
線形注意と KV キャッシュ最適化
K3 はハイブリッド注意機構(Kimi Delta Attention とゲート付きマルチヘッド潜在注意)を使用します。WASTE は kv_b_proj をクエリと出力に吸収し、KV キャッシュサイズを 53 倍削減します。4K コンテキストではキャッシュ要件が 11.25 GB から 0.21 GB に減少し、限られたハードウェアでもはるかに長いコンテキストウィンドウが可能になります。
エンジン仕様
- 言語: C11 で記述され、サードパーティのランタイム依存はありません(
libcとpthreadsのみ)。 - 埋め込み性: エンジンはライブラリ(
libwaste.a)として提供され、26 の公開関数を持ち、他のアプリケーションに完全に埋め込むことができます。 - マルチモーダルサポート: 画像処理用に 401M ViT(27 層)を含みます。画像は埋め込みに変換され、MoE 層を通じてテキストトークンとして処理されます。
- プラットフォームサポート: macOS(ARM64)、Linux(ARM64/x86_64)、Windows(x86_64、MinGW-w64 経由)をサポートします。
コミュニティの洞察と反論
ラップトップで 2.78T モデルを実行できるという技術的成果は重要ですが、コミュニティの議論ではいくつかの実用的なトレードオフが指摘されています。
"0.5 t/s で、毎秒 SSD から何ギガバイトも読み込んでいる… 500 GiB や 250 GiB のモデルを対象にしたら、実用的ではないのではないかと考えます…"
批評家は、0.5 トークン/秒は実用的な使用には極めて遅く、特に冗長になりがちな「思考」モデルである K3 には不向きだと指摘しています。他の人は、GPU クラスタに比べてトークンあたりのエネルギーコストが高いことや、1 TB という膨大なストレージ要件が多くの消費者ユーザーにとって参入障壁になると述べています。