ds4:Redis 作者用 C 语言写了一个 DeepSeek 专用推理引擎

阅读时长:10分钟

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 写这首诗的方式,是从头学一门新语言,然后亲手构建一切。


相关链接:

© 2026 softon.top

本站已稳定运行 263 天 9 小时 · 122 篇文章

使用 Hugo 构建 主题 Stack 由 Jimmy 设计 由 softon 魔改

最近构建时间:2026-09-21 17:06:46 CST