拆解 DeepInfer:基于 vLLM 的推理优化栈
据文章介绍,DeepSeek 开源的 DeepInfer 基于 vLLM 演进,采用 Apache 2.0 许可,首批仅支持 DeepSeek-V4.1-Flash,面向 NVIDIA SM100 与昇腾 950。文章梳理了其注意力内核、专家并行、负载均衡及推测解码等优化。
完整中文译文
DeepSeek 开源了 DeepInfer,也就是为其生产环境模型提供服务的推理引擎。它以 2,000 多个赞登上 Hacker News 榜首,GitHub 仓库的 star 数也几乎立刻突破了 1.6 万。
抛开热度,他们究竟发布了什么?我读了一遍仓库,帮你省下这份工夫。
这是一个采用 Apache 2.0 许可证的推理框架,用于在多种加速器上运行 DeepSeek 模型。首批支持的模型只有一个:DeepSeek-V4.1-Flash。目标硬件包括:
- Huawei Ascend 950 NPU
README 对技术渊源的交代坦率得让人耳目一新:它“最初主要基于 vLLM 构建”,同时借鉴了 SGLang 和 TensorRT-LLM 的思路。所以,这不是一个从零开发的引擎,而是一个接入了 DeepSeek 自家 kernel 技术栈的 vLLM 衍生项目。
kernel 清单读起来,像是 DeepSeek 历次开源成果的精选集:
- FlashMLA:用于多头潜在注意力的 attention kernel
- DeepEP:用于 expert parallel 的通信
- TileKernels 和 DeepSelect,以及定制的 TileLang kernel
- Attention DP / balanced CP,以及带负载均衡的 MoE expert parallelism(EP + EPLB)
- DSpark speculative decoding,按置信度调度验证
- 异步 batch 调度,宣称实现了“零开销”
- Decoder SWA bounded replay,用于减少 prefill 计算量
我真正关心的功能:确定性
有两个开关,比任何吞吐量图表都重要:
# Same output regardless of what else is in the batch
DEEPINFER_BATCH_INVARIANT=1
# Deterministic sampling with a fixed seed
DEEPINFER_BATCH_INVARIANT=1 DEEPINFER_ENABLE_MTP_VARLEN=0
Batch-invariant inference 意味着,你的输出不会因为另一个用户的请求恰好进入同一个 batch 而改变。如果你曾经调试过 temperature 为 0、结果却时好时坏的 eval,就知道这有多宝贵。大多数引擎只能做到“基本确定”。而这个引擎声称,有一种模式可以保证确定性。在真正依赖这项能力之前,先用自己的工作负载验证这个说法。
它还内置了 structured output 支持,包括 regex、JSON schema 和 EBNF。
环境要求可不低:Linux、GCC 13+、Python 3.12、CUDA 13;如果使用 Ascend,则需要 CANN 9.2。
export DEEPINFER_ACCELERATOR=nvidia
./build.sh
python examples/offline_inference.py
通过 DEEPINFER_HF_MODEL_DIR=/path/to/DeepSeek-V4.1-Flash-1017,可以让它加载本地权重。
还缺什么:先看完,再激动
这还不是一个拿来就能替换现有系统的 serving 技术栈。README 表示,这次发布提供的是离线推理,以及大规模 serving 所需的核心功能,并明确指出不包含以下部分:
- Prefill/decode disaggregation
- 数据并行副本之间的负载均衡
而这些恰恰是决定生产环境 serving 成败的关键组件。DeepSeek 还提供了配套的“deepseek-recipe”,用于复现其 API 的 token 处理流程,但其余部分仍然需要你自己组装。
仓库的 images 文件夹里提供了 Pareto 图形式的 benchmark:prefill 使用 4 块 SM100,decode 使用 64 块。我目前没有找到与 vLLM 或 SGLang 直接对比的独立测试。在有人复现之前,任何宣称“快了 X 倍”的推文,都应视为未经验证。这两个引擎在过去两年里轮流领先,所以单凭一张图说明不了多少问题。
如果你正在 SM100 或 Ascend 上大规模运行 DeepSeek V4.1 Flash,现在就可以试试。这是模型厂商自己的技术栈。
如果你在 H100 上运行 Llama 或 Qwen,目前这里还没有适合你的东西。只支持一个模型、一个硬件家族。
如果你在构建推理基础设施,值得读读源码。一份采用 Apache 2.0 许可证、达到生产级别的 MoE expert parallelism 和 speculative decoding 参考实现,就是一堂免费的好课。
它的价值不在于成为 vLLM 杀手,而在于一家前沿模型实验室发布了 serving 层,而不只是权重。只有权重、没有引擎,只能算完成了一半的发布,因为每个 token 的成本就藏在引擎里。项目宣称的目标是帮助社区降低计算成本和能耗,而随之而来的 API 定价压力,才是所有为 token 付费的人真正该关注的事。
接下来关注两件事:有人开展独立 benchmark,以及缺失的 disaggregation 组件补齐。在那之前,它是一份相当出色的参考实现,还不是开箱即用的替代方案。
来源:DeepInfer GitHub 仓库、The Decoder 的报道,以及 Hacker News 讨论帖。
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。