DeepInfer 的限制:KV cache、PD 分离与硬件门槛
发布标题说 DeepSeek 开源了它的推理引擎。而 DeepInfer README 里真正关键的一句是:一个完整的 V4.1-Flash 推理服务还需要三样东西,本次发布并不包含。下面说清它们是什么、为什么重要,以及自建要付出多少。
DeepInfer 是离线推理引擎,不是托管 API,也不是模型;本次发布不包含完整在线服务所需的 KV cache 系统、prefill/decode 分离和数据并行负载均衡。它服务的是 DeepSeek-V4.1-Flash,而这道缺口正是 README 自己列出来的。
三块缺失的组件
1. KV cache 系统
每个请求都会构建 KV cache:模型已经为 prompt 算好的 key 和 value。如果同样的前缀再次出现——一段很长的系统提示、一段多轮 agent 历史、一份共享文档——复用缓存就能省掉重算。在规模化场景下,prefix 缓存命中率是影响成本和 time-to-first-token 最大的杠杆之一。
真正的 KV cache 系统不是显存里的一个字典。它需要:
- 带淘汰和 TTL 的存储层级(HBM、主机内存、SSD);
- 能跨机器查找前缀,而不只在本地;
- 能与计算重叠的传输路径;
- 容错能力,因为计算节点比存储节点更容易出故障;
- 一套不与负载均衡器互相打架的路由策略。
DeepSeek 的生产设计可以让人感受一下规模:一套专用 3FS 集群,约 100 PiB 的 SSD,10+2 纠删码,agent 流量 3 天 TTL、chatbot 流量 7 天 TTL,每块 GPU 约 14.4 TB 逻辑 KV,每 8 块 GPU 约有 400 Gbps 互联带宽。这些都不在发布中。
2. VE / Prefill / Decode 分离
发布说明称“大部分所需的引擎功能已经实现”,但完整的分离方案并未包含。在生产环境中,视觉编码器、prefill 池和 decode 池分别跑在不同机器上,各自有不同的扩缩容策略。难的是交接:在池之间搬运 KV cache、把请求路由到正确的 prefill 引擎,以及让 decode 的占用保持均衡。
没有这套东西,你仍然可以跑离线批处理。但你无法复现 DeepSeek 在线服务的形态。
3. 跨数据并行副本的负载均衡
DeepSeek 为 prefill、decode、视觉编码器和专家并行分别使用独立的均衡器。prefill 均衡器按上下文长度给请求分桶,再按剩余算力配额路由;decode 均衡器同时考虑请求数量和 KV 总长度;专家均衡器则在 GPU 之间搬移热点专家。Q&A 称,这套机制能达到理想均衡离线基准约 80% 的水平。
最后这个数字是个有用的现实提醒:即便是 DeepSeek 的生产系统,也只达到离线基准吞吐的约 80%。一个简单的轮询路由器,不太可能做得更好。
如果你下载 DeepInfer 并运行 examples/offline_inference.py,你跑的是一个带 DeepSeek 算子和调度的批处理引擎,而不是 DeepSeek 的服务。差别就在于上面这三块——再加上任何服务都需要的 API 层、鉴权、配额、计费和可观测性。
边界为什么划在这里
2025 年 4 月,DeepSeek 解释过为什么没有开源完整推理引擎:代码是基于旧版 vLLM 深度修改的分支,与内部集群管理耦合,团队也没有足够人力维护一个大型开源项目。当时的计划是抽出独立库,并把优化回馈上游。
DeepInfer 是这条路的下一步,而不是转向。它开放了计算与调度路径——算子、并行、投机、缓存恢复、结构化输出——同时保留了与内部基础设施耦合最紧的部分:存储系统、跨机器分离,以及生产环境的负载均衡器。
这是一条自洽的边界。但它也意味着“开源的生产引擎”这个说法需要一个限定语:引擎是开放的,围绕它的服务不是。
到底谁能运行它
DeepInfer 支持 NVIDIA SM100 GPU 和 Huawei Ascend 950 NPU,但 DeepSeek 公布的性能图表只覆盖 NVIDIA 硬件。这并不代表 Ascend 不受支持,只是说 Ascend 在公开层面没有被测量过。
| 你的情况… | 能用吗? | 需要什么 |
|---|---|---|
| 有 SM100 GPU 的云厂商或实验室 | 可以,用于离线推理和自建服务 | SM100 集群、Linux/CUDA 13/Python 3.12 构建,另需自建 KV cache 与负载均衡层 |
| 有 Ascend 950 NPU 的运维方 | 原则上可以 | CANN 9.2 构建;性能与稳定性需自行验证——DeepSeek 没有公布 Ascend 吞吐数据 |
| 能接触到上述任一硬件的性能工程师 | 可以,作为参考实现 | 阅读算子与调度器;跑一些小规模离线实验 |
| 现在就需要 OpenAI 兼容 API 的团队 | 不能直接用 | 使用已提供 API 层的服务框架,或者在 DeepInfer 之上自建一层 |
| 要服务其它模型的团队 | 不能 | 只支持 V4.1-Flash |
| 只有消费级显卡的爱好者 | 不能 | 官方目标是 SM100 / Ascend 950;本地跑 V4.1 要用另外的量化项目 |
你需要自建什么
如果想把 DeepInfer 变成一个服务,这些都得纳入预算:
- KV cache 服务:prefix 匹配、分层存储、跨机器传输、TTL/淘汰、容错。
- Prefill/decode 路由:独立的池、KV 交接、容量规划、自动扩缩容。
- 负载均衡:prefill 按算力配额和上下文长度;decode 按请求数和 KV 长度;专家重平衡。
- API 层:Chat Completions / Responses / Messages、流式输出、工具调用、结构化输出、错误处理。
- 多租户与运维:鉴权、配额、计费、限流、链路追踪、指标、日志、灰度发布。
- 评测:针对真实负载的质量、延迟与成本回归测试。
DeepSeek 的 deepseek-recipe 能帮忙处理 API 层里的协议/分词部分。它不提供服务器、鉴权、计费,也不提供 KV cache。
替代方案,不设赢家
如果你的目标是服务 V4.1-Flash,DeepInfer 并不是唯一的路。合适的选择取决于你已经在运维什么,以及你需要控制什么。
| 方案 | 它能给你什么 | 需要确认什么 |
|---|---|---|
| vLLM | 成熟的服务栈,模型支持广,提供 OpenAI 兼容 API;其博客描述了 V4.1-Flash 优化 | 公布的优化是否匹配你的硬件和负载 |
| SGLang | 高性能运行时,自己做了 V4.1-Flash 算子优化;项目称在 4×GB300 上、BS=1、启用 DSpark 时达到 873.63 tokens/s | 基准测试的条件;这不是与 DeepInfer 的对比 |
| TensorRT-LLM | NVIDIA 的服务栈,在 NVIDIA 硬件上表现强劲 | 模型支持范围与引擎构建复杂度 |
| LMDeploy | InternLM 的服务工具包;文档覆盖 DeepSeek V3/R1 与 PD 分离;通过 PyTorch 引擎提供 OpenAI API 和 Ascend 支持 | V4.1-Flash 支持情况、引擎选择(TurboMind 还是 PyTorch),以及硬件 |
| TGI | Hugging Face 的服务工具包,提供 OpenAI 兼容的 Messages API | 它已进入维护模式;不要假定它会支持 V4.1-Flash |
| Xinference | 多模型平台,提供 OpenAI API、函数调用、分布式 worker 和多种后端 | 哪个后端能服务 V4.1-Flash,以及它是否支持该架构 |
| NVIDIA Dynamo | 位于 vLLM/SGLang/TensorRT-LLM 之上的编排层:PD 服务、KV 感知路由、KVBM | 它不是引擎;V4.1 支持取决于后端 |
| llama.cpp / Ollama | 面向量化模型的本地与边缘运行时;适合桌面和原型验证 | 不是 V4.1-Flash 的数据中心引擎;模型支持和内存是另一个问题 |
| MLC-LLM | 基于编译器的运行时,覆盖 NVIDIA、AMD、Apple、Intel 和移动端 | 要支持 V4.1 需要一份兼容的编译后模型 |
| DeepInfer | DeepSeek 源自生产的算子与调度,专为 V4.1-Flash | 缺失的服务层;SM100/Ascend 950 硬件 |
我们不对这些方案排名。vLLM 和 SGLang 已有 API 层并被广泛采用;DeepInfer 有 DeepSeek 的生产调优和更窄的适用范围。下周就要上线 API 的团队,不该从自建 KV cache 服务开始。
选型指南
- 用 DeepInfer,如果你有 SM100 或 Ascend 950 硬件,想研究或复现 DeepSeek 的服务优化,并且准备好自建服务层。
- 用 vLLM/SGLang,如果你现在就要一个可用的 API、需要广泛的模型支持,或者不想自己维护 KV cache 与路由栈。
- 再等等,如果你需要 Ascend 性能数据、生产环境一致性,或者 DeepSeek 官方支持的在线服务路径。
- 不要用它,如果你只有消费级显卡、需要其它模型,或者期待一个开箱即用的 OpenAI 兼容端点。
DeepInfer 是一次边界交代得很清楚的强力引擎发布。价值在代码和生产笔记里;风险在于把引擎当成服务。看基准图之前,先读 README 的“未包含”清单。
下一篇:更详细的生产缺口分析,或者简短问答。