跳转至

ds4c deepseek v4 antirez

Ch01.419 ds4c deepseek v4 antirez

📊 Level ⭐⭐ | 8.5KB | entities/ds4c-deepseek-v4-antirez.md

-> 原文存档

ds4.c — antirez 的 DeepSeek V4 专属本地推理引擎

核心定位

ds4.c 是 Redis 作者 antirez(Salvatore Sanfilippo)专为 DeepSeek V4 Flash 打造的本地推理引擎,以 C + Metal 从头实现,无框架依赖,无抽象层,Metal-only。

技术规格

维度 参数
作者 Salvatore Sanfilippo(antirez)
语言 C 55.4% + Objective-C 30.2% + Metal 13.8%
目标模型 DeepSeek V4 Flash(284B 总参/13B 激活/1M token 上下文)
硬件平台 Apple Silicon(Metal)
依赖 零(无运行时、无框架、无抽象层)

性能实测

硬件 量化 上下文 预填充速度 生成速度
MacBook Pro M3 Max 128GB 2-bit 32K 58.52 token/s 26.68 token/s
Mac Studio M3 Ultra 512GB 2-bit 11709 token 468.03 token/s 27.39 token/s

三大核心机制

  1. 非对称 MoE 量化

  2. 专家层(up/gate)→ IQ2_XXS,down 层 → Q2_K(约 2-bit)

  3. 共享专家层、投影层、路由层 → Q8 全精度
  4. "在 coding agent 下表现良好,能可靠调用工具"
  5. KV Cache 磁盘化

  6. 传统:无状态,每次请求重新 prefill

  7. ds4:KV 状态 → 磁盘,token 前缀匹配 → 直接从磁盘加载跳过 prefill
  8. Cache key:token ID 序列 SHA1 哈希
  9. 特别适合 Claude Code 类场景(每次启动 25K token 初始 prompt)
  10. 双协议兼容层

  11. /v1/chat/completions(OpenAI)+ /v1/messages(Anthropic)

  12. Tool calling 已适配
  13. 提供 opencode、Pi、Claude Code 配置示例

设计哲学

"一次只赌一个模型,用官方 logits 做验证,做长上下文测试,做足够的 agent 集成来确认它真的能用。" 本地推理三件套
1. 带 HTTP API 的推理引擎
2. 针对该引擎特别打造的量化版本
3. 和 coding agent 对接的测试验证套件

行业意义

  • "一个模型,一个推理框架"趋势:专用引擎 vs 通用框架的权衡浮现
  • 全栈本地推理:不是组件拼凑,而是链路作为产品设计
  • AI 辅助开发:README 坦承 GPT 5.5 辅助开发,两周完成

相关人物

  • Salvatore Sanfilippo(antirez):1977 年生,Redis 创建者(2009),主导 11 年后 2020 年离开,2024 年底以 evangelist 身份回归。著有 Kilo、dump1090、linenoise。2022 年出版科幻小说《WOHPE》。

深度分析

1. "专用引擎"路线的战略判断

ds4 选择不基于 llama.cpp 重写,而是从零开始用 C + Metal 实现,这反映了一种战略判断:通用推理框架的抽象层成本,在某些场景下是不可接受的
llama.cpp 的价值在于它的通用性——几乎支持所有模型、所有量化方式、所有硬件平台。但这种通用性带来了:

  • 额外的抽象层开销
  • 针对特定模型的优化空间受限
  • 对 Metal 的使用不如原生实现高效 antirez 的赌注是:当你的场景是"DeepSeek V4 Flash + Apple Silicon + 本地推理"时,专用引擎的性能优势会超过通用框架的便利性优势。

2. 非对称 MoE 量化:理解模型权重差异

ds4 的非对称 MoE 量化策略基于一个关键洞察:MoE 模型中不同层的参数重要性不同

  • Expert 层(up/gate):使用 IQ2_XXS(极低 bit)
  • Down 层:使用 Q2_K(约 2-bit)
  • 共享专家、投影层、路由层:使用 Q8 全精度 这种量化的依据是:共享层和路由层的错误会产生全局性影响(影响所有 expert 的输入/输出),而 expert 内部的错误只会影响该 expert 的局部输出。从信息量角度,共享层的 quantization error 代价更高,所以给更高精度。

3. KV Cache 磁盘化:解决本地推理的冷启动问题

KV Cache 的核心价值在于消除重复计算:当你有一个 25K token 的系统 prompt 时,传统做法是每次请求都重新 prefill 这 25K token。
ds4 的 KV Cache 磁盘化机制:

  • Cache key = token ID 序列的 SHA1 哈希
  • 当新请求的 prefix 匹配磁盘中的 cache 时,直接从磁盘加载 KV 状态,跳过 prefill
  • 这对于 Claude Code 类场景特别有价值:每次启动都有大量重复的系统级 prompt 这本质上是一个以磁盘换计算的策略——用 SSD 带宽换 GPU 计算。

4. antirez 的工程方法论

"一次只赌一个模型"——这不是技术限制声明,这是工程哲学宣言。
在 AI 模型快速迭代的当下,很多团队的选择是"等模型稳定了再做优化"。antirez 的选择是反过来的:选择一个模型,把它的推理做到极致。
两个星期的开发时间完成(用 GPT 5.5 辅助),说明:

  • 有经验的工程师知道在哪里花时间优化
  • AI 辅助可以显著加速工程实现
  • 本地推理的工程挑战更多在系统设计而非编码

实践启示

1. 通用框架 vs 专用引擎的决策框架

不是所有场景都需要专用引擎,但以下情况值得考虑:

  • 模型相对稳定,不会频繁切换
  • 对性能/延迟有明确要求
  • 目标硬件平台固定
  • 有足够的工程资源投入 通用框架(llama.cpp、MLX)的价值在于它们的维护成本由社区分担——当新模型出现时,你不需要重新实现量化逻辑。

2. KV Cache 磁盘化的适用场景

KV Cache 磁盘化的本质是用 I/O 换计算。它适用的场景:

  • 重复 prefix 比例高的请求模式
  • 有足够大的 SSD 存储 KV 状态
  • SSD 带宽明显高于 GPU 计算成本 它不适用的场景:

  • 每次请求都是完全不同的内容

  • SSD 性能不足(会成为瓶颈)
  • 内存足够大(内存优先,比磁盘更快)

3. Apple Silicon 本地推理的当前状态

ds4 的 benchmark 显示了 Apple Silicon 本地推理的能力边界:

  • M3 Max 128GB:适合轻量级推理(32K 上下文)
  • M3 Ultra 512GB:可以达到 468 token/s 的预填充速度 这是一个值得关注的方向:Apple Silicon 的统一内存架构在高 batch size 场景下有独特优势,因为 GPU 和 CPU 共享同一块内存,避免了跨总线传输。

4. "一个模型 + 一个专用框架 + 一套测试"是产品化思路

ds4 的 README 提到需要针对该引擎"做足够的 agent 集成来确认它真的能用"。这不是随便说说——本地推理引擎的最终价值在于它是否能够可靠地集成到实际工作流中。
当你构建本地推理系统时,应该同时构建:

  • 推理引擎本身
  • 针对该引擎的量化版本
  • 和目标 agent 的集成测试套件

5. AI 辅助开发工程化的参考

ds4 的 README 坦承使用 GPT 5.5 辅助开发,两个星期完成。这是一个有价值的参考点——有经验的工程师可以有效地使用 AI 辅助来加速实现,但 AI 辅助本身不能替代对系统设计的深度理解。

相关实体