要約
antirez が公開した ds4 (DwarfStar 4) を手元の MacBook Pro M4 Max / 128GB で実際にビルドして動かし、ベンチを取った記録。汎用 GGUF ランナーではなく DeepSeek V4 Flash 1モデル専用に振り切った推論エンジンで、設計の核は「KV キャッシュは RAM ではなくディスクの一級市民である」という賭けにある。所感としては、ローカルでフロンティア級に近い体験をしつつ、長コンテキストでも生成速度がほとんど落ちないのが効いている。
- 2-bit でも実用になる理由は 非対称量子化: routed MoE エキスパートだけを
IQ2_XXS/Q2_Kに落とし、shared experts・projection・routing は触らない - 128GB マシンで q2-imatrix (約81GB) が動く。コンテキストは 100〜300k あたりが現実的
- M4 Max 実測で生成 約 23〜27 t/s、64k コンテキストまで伸ばしても 22.9 t/s と ほぼ落ちない
- ディスク KV キャッシュにより、Claude Code が投げる 25k トークン級の初期プロンプトを 再プリフィルなしで再利用できる
- OpenAI / Anthropic / Responses 互換サーバを内蔵し、Claude Code・Codex・opencode・Pi からそのまま使える
ds4 とは何か、なぜ「専用」なのか
ds4 は DeepSeek V4 Flash だけを正しく速く動かすことに特化したネイティブ推論エンジンだ。GGML にリンクせず自己完結していて、ロード・プロンプト整形・ツールコール・KV 状態管理(RAM とディスク)・サーバ API までを「このモデル前提」で作り込んでいる。汎用ランナーが新モデルのたびに対応に追われるのに対し、1モデルに賭けて公式 logits で検証し、長コンテキストとエージェント連携まで仕上げるという逆張りの方針が面白い。
そもそも DeepSeek V4 Flash がローカル向けに特殊なのは、active パラメータが少なく速いこと、thinking セクションが問題の複雑さに比例して短く済むこと、1M トークンのコンテキスト、そして極端に圧縮された KV キャッシュを持つことにある。最後の点が ds4 の設計思想に直結している。
環境
- マシン: MacBook Pro M4 Max / 128GB (macOS 26.5)
- バックエンド: Metal (macOS の primary target)
- モデル:
q2-imatrix=DeepSeek-V4-Flash-IQ2XXS-w2Q2K-...-chat-v2-imatrix.gguf(約81GB) - 用途: ローカルのコーディングエージェント (Claude Code / opencode) のバックエンド検証
ビルドと実行
モデルを落として make するだけ。macOS なら Metal がデフォルトで選ばれる。
./download_model.sh q2-imatrix # 96/128GB 機向け、imatrix 調整済み q2
make # macOS Metal
./ds4 -p "Explain Redis streams in one paragraph."
./ds4 # 引数なしで対話モード (/think /nothink /ctx N ...)
注意: macOS では現状 CPU パスを走らせるとカーネルごとクラッシュする VM バグがあるので、素直に Metal を使う。CPU ビルド (make cpu) は正しさ確認用と割り切る。
2-bit でも実用になる理由 — 非対称量子化
「2-bit 量子化」と聞くと壊れた出力を想像するが、ds4 提供の q2 は素直な一律量子化ではない。モデル空間の大半を占める routed MoE エキスパートだけを強く量子化し(up/gate を IQ2_XXS、down を Q2_K)、shared experts・各種 projection・routing は量子化せず品質を担保する、という非対称な配分になっている。さらに imatrix(重要度行列)版を使うことで素の q2 XXS より品質が上がる。実際、ツールコールも安定して通り、エージェントのバックエンドとして成立した。
設計の核 — 「KV キャッシュはディスクの一級市民」
ds4 の最大の主張はここだ。DeepSeek V4 の KV キャッシュは強く圧縮されており、加えて現代の Mac の SSD は速い。だから「KV キャッシュは RAM のものだ」という常識を捨て、ディスクに永続化してセッションをまたいで・サーバ再起動を越えて再利用しよう、という発想になっている。
仕組みとしては、チャット/補完 API はステートレスで毎回会話全体を送ってくる。サーバはまず安い「トークン接頭辞の一致」を見て、ダメなら整形済みプロンプトのバイト列とチェックポイントのバイト列を比較する。キャッシュキーは整形済みバイト接頭辞の SHA1で、ファイル名は <sha1>.kv。中身にはトークン ID・次トークンの logits・各レイヤの生 KV / 圧縮 KV / indexer 状態に加え、ツールコールの正確な DSML バイト列をリプレイするためのマップまで入っている。これにより、クライアントが JSON 引数の順序を変えて送り返してきても、モデルが実際にサンプルした通りのバイト列で再構成できる。
手元でサーバを動かすと、実際に ~/kvcache/ に 33MB ほどの .kv ファイルが溜まっていった。エージェントの初期プロンプトを一度プリフィルすれば、次回以降はその接頭辞をまるごとスキップできる。
./ds4-server --ctx 100000 --kv-disk-dir /tmp/ds4-kv --kv-disk-space-mb 8192
M4 Max での実測ベンチ
ds4-bench はモデルを1回ロードして、固定トークン列をフロンティア(2048, 4096, …)まで歩きながら、各区間で新規追加分だけの prefill/generation スループットを測る。q2-imatrix を M4 Max / 128GB で 64k まで回した結果が以下。注目は、64k トークンまで伸ばしても生成が 26.8 → 22.9 t/s 程度しか落ちないこと。長コンテキストで実用に耐える。
| コンテキスト | Prefill (t/s) | Generation (t/s) | KV キャッシュ |
|---|---|---|---|
| 2,048 | 343.8 | 26.8 | 52 MB |
| 8,192 | 294.6 | 26.1 | 137 MB |
| 16,384 | 277.0 | 25.6 | 250 MB |
| 32,768 | 247.9 | 24.5 | 475 MB |
| 49,152 | 224.3 | 23.8 | 701 MB |
| 65,536 | 205.0 | 22.9 | 926 MB |
KV キャッシュはおよそ 1k トークンあたり 14MB 前後で伸びる。フル 1M コンテキストだと 26GB 程度(圧縮 indexer だけで 22GB ほど)に達するので、128GB 機では 100〜300k あたりに絞るのが現実的だ。
エージェントから使う
ds4-server は /v1/chat/completions / /v1/responses / /v1/messages を喋るので、OpenAI・Anthropic・Responses いずれの形でも繋がる。Claude Code なら Anthropic 互換エンドポイントに向けるラッパを噛ませるだけ。
#!/bin/sh
unset ANTHROPIC_API_KEY
export ANTHROPIC_BASE_URL="http://127.0.0.1:8000"
export ANTHROPIC_AUTH_TOKEN="dsv4-local"
export ANTHROPIC_MODEL="deepseek-v4-flash"
export ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-v4-flash"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-v4-flash"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash"
exec "$HOME/.local/bin/claude" "$@"
Claude Code は作業開始前に 25k トークン級の初期プロンプトを送ってくることが多い。--kv-disk-dir を有効にしておけば、その高コストな初回 prefill を一度済ませた後は、続きのセッションや再起動でも接頭辞を再利用できる。ツールコールまわりは、サーバが「正確な DSML リプレイ」を一級の防御線、「正規化レンダリング」をバックアップ経路として持っているので、ステートレスな API トランスクリプトとモデルの継続がズレにくい設計になっている。
所感
「1モデルに賭け、ローカルで端から端まで仕上げる」という方針は、汎用性を捨てる代わりに、量子化・KV 永続化・ツールコール整合・エージェント連携までを一貫して詰められる強みになっている。まだ alpha 品質だが、128GB の Mac で長コンテキストのコーディングエージェントをローカル完結で回す体験は十分に魅力的だった。なお ds4 は GPT-5.5 の強い支援を受けつつ人間が主導して開発されたこと、そして llama.cpp / GGML なしには存在し得なかったことを作者自身が明記している。詳細とライセンスは 公式リポジトリ を参照。

コメントを残す