Redis 作者做了 ds4,Mac 本地跑 DeepSeek Flash

128GB 的 M5 Max 跑 2 比特 DeepSeek Flash,最高每秒 39 个 token。
摘要
ds4(项目自称 DwarfStar)是 Redis 作者 antirez 写的本地推理引擎,只专门优化 DeepSeek、GLM、Qwen 的少数几个模型,支持 Mac、DGX Spark 和 AMD Strix Halo。128GB 的 M5 Max 上跑 DeepSeek V4 Flash 的 2 比特量化版,2K 上下文时生成约 39 token/s。
是什么
大模型推理引擎大多追求"什么模型都能跑"。ds4 反过来:只做少数几个模型,把它们压到消费级硬件上跑得好。
- 作者:Salvatore Sanfilippo,网名 antirez,Redis 的原作者。
- 项目:GitHub 约 2.4 万 star,MIT 协议,C 语言写成,2026 年 5 月创建,最近一次提交在 10 月 19 日。
- 支持的模型:DeepSeek V4 Flash(含实验性视觉版)、DeepSeek V4.1 Flash、DeepSeek V4 PRO、GLM 5.2 / 5.3 / 5.3 Flash、Qwen3.8 Flash Next。
- 不是通用 GGUF 运行器:必须用项目自己提供的 GGUF 文件,别的 GGUF 可能张量布局、元数据或量化组合不兼容。
- 平台:Metal(Apple Silicon,首要目标)、NVIDIA CUDA(主要目标是 DGX Spark,也支持多卡)、ROCm(Strix Halo)。
和 DeepSeek 官方刚开源的 DeepInfer 对照着看很有意思:DeepInfer 面向数据中心,官方部署问答里说最小的高效部署单元是 64 卡 Prefill 加 64 卡 Decode;ds4 则走到另一个极端,目标是"一台你买得起的机器"。
项目有两点作者自己写得很坦白:代码是在 AI 编程助手的大量协助下写成的,人负责想法、测试和调试;状态是"变化很快,按 beta 质量对待"。它也明确感谢 llama.cpp 和 GGML,部分量化格式和内核沿用了那边的 MIT 代码。
核心优势
1. 一台 128GB 的 Mac 就能跑起来
官方记录的 DeepSeek V4 Flash 2 比特量化(约 81 GiB)在 M5 Max 128GB 上的成绩,每个测试点用 128 个生成 token:
| 上下文长度 | Prefill | 生成 |
|---|---|---|
| 2,048 | 790.18 token/s | 39.35 token/s |
| 16,384 | 572.53 token/s | 36.14 token/s |
| 32,768 | 557.04 token/s | 34.36 token/s |
| 65,536 | 398.50 token/s | 27.64 token/s |
同一份基准里,128GB 的 DGX Spark 在 2K 到 64K 上下文下 Prefill 在 823 到 872 token/s 之间,生成从 18.05 降到 13.84 token/s。官方强调这些是"记录下来的基线",不是对每次提交的新测试。
2. 内存不够,用 SSD 凑
--ssd-streaming 只在内存里留一个专家缓存,缺的专家从 GGUF 文件里按需读。代价是速度。官方在 128GB 的 M5 Max 上量过两个比内存还大的模型(自动缓存大小,生成 128 个 token):
- GLM 5.3 Flash Q4_K(177.77 GiB):初次 Prefill 121 token/s,两轮生成分别为 11.9 和 14.9 token/s;
- DeepSeek Flash 实验视觉版 MXFP4(145.26 GiB):初次 Prefill 300 token/s,两轮生成分别为 11.9 和 19.3 token/s。
官方的提醒值得抄下来:能启动,不代表能用。生成对缓存未命中更敏感,大模型要先用一小段生成试一下,再决定要不要交给长任务。
3. 多台机器、多张卡也能拼
- 两台 128GB 的 Mac 用 Thunderbolt RDMA 做张量并行,能放下更大的量化版本;
- 两台 DGX Spark 上,DeepSeek V4.1 Flash 的 Q2 版单会话约 21.8 token/s;
- 8 张 L40S 跑 Flash,16 个会话的合计生成速度约 126 token/s。多卡方案还支持 Ada Lovelace 这类其他实现要求更新显卡才能跑新模型的卡。
4. 推测解码:DSpark
DSpark 是一个额外的支持文件(约 5.6 GiB),一次提出最多 5 个候选 token,再由主模型批量验证。官方在两台 Spark 上测了 V4 Flash(0731)的 Q2 版:英文散文 44.0 token/s,C 语言哈希表代码 83.3 token/s。官方同时提醒,这是针对具体提示词的数据,不是承诺的加速倍数,不好预测的提示词上反而可能更慢。
5. 自带服务端和编码 Agent
ds4-server 提供 OpenAI 和 Anthropic 兼容接口,官方文档给了 Pi、OpenCode、Codex CLI 和 Claude Code 的配置方法;ds4-agent 则是不经过 HTTP、直接在引擎里跑的原生编码 Agent,会话和 KV 缓存存在 ~/.ds4/kvcache。
面向人群
- 手里有 96GB 或 128GB Mac 的开发者:想在本机跑一个够强的模型,又不想把代码发给云端。
- 有 DGX Spark 或 Strix Halo 的人:官方给了对应的构建目标和起步配置。
- 做推理引擎的人:一个"只服务少数模型"的专用实现,值得读,思路和通用引擎很不一样。
内存更小的机器要慎重:官方 Metal 指南里 DeepSeek Flash 的起步配置是 64GB 配 SSD 流式、96GB 起常驻(64GB 也可以直接跑 Qwen3.8 Flash Next 的 Q2 版);再小的机器官方只说可以试 SSD 流式,没给具体配置。
另外要看清一点:2 比特量化主要压的是路由专家(门控和上投影用 IQ2_XXS,下投影用 Q2_K),其余部分用更高精度,但这仍然是很激进的量化。项目自带的 ds4-eval 只是内部集成检查,官方明确说不是榜单成绩,想知道质量损失要自己跑你的任务。
如何使用
快速上手(Mac,96/128GB)
git clone https://github.com/antirez/ds4.git
cd ds4
make
./download_model.sh ds4f-q2 # DeepSeek V4 Flash Q2,约 81 GiB
./ds4 -p "用一段话解释 Redis streams。"
下载会放进 gguf/,中断后重复执行同一条命令可以续传。./ds4 不带参数就是多轮对话,里面可以用 /help、/read FILE、/ctx N 和 /quit。其他平台换对应的构建命令:DGX Spark 用 make cuda-spark,Strix Halo 用 make strix-halo,一块或多块 CUDA 卡用 make cuda-generic。
内存不够:SSD 流式
./ds4 --ssd-streaming --ctx 32768 --nothink
先用自动缓存预算,别急着调。需要给上下文或其他会话留内存时,再用 --ssd-streaming-cache-experts 32GB 这类参数。
接 Claude Code 等客户端
先启动服务端,客户端的上下文上限不要超过服务端的:
./ds4-server --ctx 100000 --kv-disk-dir /tmp/ds4-kv --kv-disk-space-mb 8192
Claude Code 走兼容 Anthropic 的接口,官方建议写一个名字不叫 claude 的包装脚本:
#!/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_SONNET_MODEL="deepseek-v4-flash"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash"
export ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-v4-flash"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4-flash"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
export CLAUDE_STREAM_IDLE_TIMEOUT_MS=600000
exec claude "$@"
这里把 sonnet、haiku、opus 和子 Agent 的模型名都指向同一个本地模型,并调大了流式空闲超时。编码 Agent 的第一次请求提示词很大,首次 Prefill 会慢一点,磁盘 KV 缓存能在之后复用相同前缀。
作者的使用建议
作者在 README 里的观点很有意思:既然有 AI 编程助手,用户应该直接让它来改这个项目,比如针对自己的硬件把速度调到最高,同时要求它做完整的正确性检查。项目因此刻意只做"几种主流场景的参考实现",不追求覆盖所有配置。
项目地址:github.com/antirez/ds4
三行速记
- 能跑什么:DeepSeek / GLM / Qwen 的指定 GGUF,DeepSeek Flash 在 Mac 上建议 96GB 起,64GB 配 SSD 流式。
- 先跑哪个:
make、./download_model.sh ds4f-q2、./ds4;不够内存就加--ssd-streaming。 - 要留心:激进的 2 比特量化和 beta 状态,生成速度随上下文变长会掉(128GB M5 Max:2K 约 39,64K 约 28 token/s)。
浙公网安备 33010602011771号