Salvatore Sanfilippo,网名 antirez,Redis 的作者,在数据库和键值存储领域耕耘了近 15 年。
2025 年底,他转了个方向,开始写一个 DeepSeek 专用的大模型推理引擎。
项目名叫 ds4——有人猜是 “DeepSeek for 4-bit”,有人猜是 “DeepSeek 4”,antirez 本人没解释过命名由来。
但不管叫什么,这个项目做的东西很有意思:它不是又一个 GGUF 运行工具,而是一个从零开始、专为 DeepSeek 模型设计的独立推理引擎。
用 C 语言写的。Metal 和 CUDA 后端。2-bit 量化。磁盘 KV 缓存持久化。HTTP API 服务。编程智能体。
开源的。
为什么需要一个"专用"推理引擎
在 ds4 出现之前,本地跑 DeepSeek 模型的主流方案是 llama.cpp / Ollama。它们支持 GGUF 格式,兼容几乎所有主流开源模型,是事实上的标准。
但 GGUF 是一个通用格式——它追求的是"兼容一切",而不是"在某个模型上跑得最快"。
antirez 的思路是反过来的:只服务 DeepSeek 模型,把 DeepSeek 的架构特性用到极致。
DeepSeek-V4-Flash 是 DeepSeek 在 2025 年底发布的模型,架构上有几个关键特性:
- MoE(混合专家)架构,总参数量大但每次推理只激活一部分
- MLA(Multi-head Latent Attention)注意力机制
- FP8 混合精度训练
- 支持原生 2-bit 量化
llama.cpp 对 MoE 和 MLA 的支持是"能跑就行"级别。而 ds4 从底层数据结构开始,针对这些特性做了专门优化。
这就是"专用"的价值:不做通用,所以能在特定模型上跑得更快、更省内存。
架构拆解:ds4 到底做了什么
底层:C 语言 + 自定义张量库
ds4 用纯 C 语言编写(c23 标准),没有 Python 依赖,没有 PyTorch/TensorFlow 运行时。这意味着:
- 启动时间是毫秒级的,不需要等 Python 解释器加载
- 内存占用极低,适合在资源受限的设备上运行
- 可以编译成静态二进制文件,直接分发
张量运算部分,ds4 自己实现了一套轻量级的矩阵乘法内核,针对 DeepSeek 的权重布局做了内存访问模式优化。
量化:2-bit 的极致压缩
这是 ds4 最激进的设计决策。
大多数推理引擎支持 4-bit 量化(llama.cpp 的 Q4_K_M 是主流选择),部分支持 3-bit。2-bit 量化意味着权重进一步压缩到原来的 1/4,但精度损失会更大。
antirez 在 DeepSeek 的架构基础上,设计了一套分组 2-bit 量化方案,配合校准后的缩放因子,在保持模型可用性的前提下实现了极致的压缩率。
实际效果:DeepSeek-V4-Flash 的全参数模型(约 236B)可以用 不到 40GB 内存跑起来——对于没有 A100/H100 的个人开发者来说,这意味着消费级显卡甚至能装下整个模型。
硬件加速:Metal 优先
ds4 的硬件加速策略很务实——Metal 优先,CUDA 为辅。
原因很简单:antirez 本人用 Mac。Apple Silicon 的 unified memory 架构对本地推理非常友好——GPU 和 CPU 共享同一块内存,不需要 PCIe 拷贝。
Metal 后端实现了:
- 自定义的矩阵乘法内核(针对 M 系列芯片的 NEON/AMX 指令集优化)
- KV 缓存的 GPU resident 存储
- MoE 专家路由的 GPU 并行计算
CUDA 后端在路线图上,但优先级低于 Metal——antirez 在项目文档中明确表示,如果社区贡献 CUDA 后端,他会接受。
磁盘 KV 缓存持久化
这是 ds4 区别于 llama.cpp 的一个实用特性。
llama.cpp 的 KV 缓存存在内存中,进程退出就丢失。这意味着每次启动后重新生成 KV 缓存,对于长对话场景,首 token 延迟会很长。
ds4 支持将 KV 缓存持久化到磁盘。对话中断后重新加载,直接从缓存恢复,首 token 延迟从几秒降到毫秒级。
对于需要长时间交互的场景(编程助手、持续对话),这个特性非常实用。
HTTP API 服务
ds4 内置了一个轻量级的 HTTP 服务器,兼容 OpenAI API 格式:
POST /v1/chat/completions
这意味着你可以直接把它当 OpenAI 的本地替代品,接入任何支持 OpenAI API 的工具——Claude Code、Cursor、OpenClaw,都能直接连。
不需要额外的代理层,不需要修改客户端代码。
编程智能体
ds4 的实验性特性:内置了简单的 Agent 能力,可以让模型自主调用工具、执行代码、迭代完成任务。
这是一个有趣的尝试——把推理引擎和 Agent 运行时合在一起。虽然目前还很基础,但方向是对的:推理层越靠近应用层,Agent 的能力边界越大。
和 llama.cpp / Ollama 的对比
| 维度 | ds4 | llama.cpp | Ollama |
|---|---|---|---|
| 支持模型 | 仅 DeepSeek 系列 | 几乎所有开源模型 | 几乎所有开源模型 |
| 语言 | C (c23) | C++ | Go |
| 2-bit 量化 | ✅ | ❌ | ❌ |
| MoE/MLA 优化 | 深度定制 | 基础支持 | 基础支持 |
| Metal 后端 | ✅ 优先 | ✅ | ✅ |
| CUDA 后端 | 路线图 | ✅ | ✅ |
| KV 缓存持久化 | ✅ | ❌ | ❌ |
| HTTP API | ✅ 内置 | ✅ ( llama-server ) | ✅ 内置 |
| Agent 能力 | 实验性 | ❌ | 通过工具链 |
| 成熟度 | 早期 | 高 | 高 |
| 模型切换 | 不支持 | ✅ | ✅ |
ds4 的核心优势在特定场景下的极致性能:如果你只跑 DeepSeek 模型,ds4 能用更少的内存跑更快的推理。
代价是放弃了通用性。如果你需要在不同模型之间切换,ds4 不适合你。
antirez 为什么做这件事
antirez 在 ds4 的 README 中写了一段话:
“I started this project to understand better how LLM inference works at the lowest level. There is a lot of abstraction in modern inference frameworks. I wanted to go back to the basics.”
翻译过来:他想从最底层理解 LLM 推理到底是怎么工作的。
这不是一个商业项目。antirez 2010 年创造了 Redis,2024 年把它交给了社区。他不是为了赚钱而写代码——他是为了理解。
这种"因为好奇所以动手"的动机,在开源世界里已经越来越少了。
ds4 的代码风格也反映了这一点:清晰、直接、没有过度工程化。antirez 在 commit message 里会写长段的思考过程,包括他的设计决策和遇到的困难。读 ds4 的 git log,就像在旁听一位资深工程师的思考过程。
适用场景
ds4 适合你,如果:
- 你主要使用 DeepSeek 模型,不需要频繁切换
- 你在 Apple Silicon Mac 上运行(Metal 后端最成熟)
- 内存有限,需要极致量化来压缩模型体积
- 你想从最底层理解 LLM 推理的工作原理
- 你需要长对话场景下的 KV 缓存持久化
ds4 不适合你,如果:
- 你需要支持多个不同架构的模型
- 你主要在 NVIDIA GPU 上运行(CUDA 还没完善)
- 你需要成熟的生态和大量的社区教程
- 你对稳定性要求极高(项目还在早期阶段)
技术亮点总结
ds4 最值得关注的三个技术决策:
1. 单一模型深度优化 不做通用,只做 DeepSeek。这让 antirez 可以把所有精力集中在理解一个模型的架构上,实现 llama.cpp 不可能做到的深度优化。
2. 2-bit 量化的工程突破 2-bit 量化不是"把 4-bit 再砍一半"那么简单。antirez 设计了分组量化 + 动态缩放因子的方案,在 DeepSeek 的 MoE 架构上找到了精度和压缩率的平衡点。
3. 从第一性原理出发 没有依赖 PyTorch、没有用 Triton、没有抄 llama.cpp 的内核。每一行矩阵乘法都是 antirez 自己写的,基于他对 DeepSeek 架构的理解。
写在最后
antirez 用 Redis 告诉我们:一个专注于解决特定问题的工具,可以改变整个行业。
ds4 可能不会成为主流。大多数用户还是会选择 llama.cpp 或 Ollama,因为它们的通用性更好。但 ds4 做了一件事很有价值——它证明了"专用推理引擎"这条路是走得通的。
如果未来每个主流模型都有对应的"专用推理引擎",模型的能力会被压榨到极致,本地推理的性价比会越来越高。
而 ds4,是这条路上的第一个脚印。
代码是逻辑的诗。antirez 写这首诗的方式,是从头学一门新语言,然后亲手构建一切。
相关链接: