DSpark 开源:推理提速 85% 的背后是一次显存-计算协同调度革新

DeepSeek 和北京大学最近开源了一个叫 DSpark 的推理框架,核心特点是重新设计了显存和计算之间的协同调度,让 LLM 推理效率提升非常明显。

这个框架跟已有的 vLLM / SGLang 有什么不同?

现有的推理框架主要在算子融合、KV cache 管理、continuous batching 这些层面做文章。DSpark 的思路不太一样:它更关注显存访问模式——把计算和显存移动尽量重叠,减少 GPU 核心等待数据的空闲时间。

几个我看到的技术点:

  1. 流水线化的显存预取:在计算当前 batch 的同时,预先把下一个 batch 需要的权重和 KV cache 搬进 SRAM,降低 memory-bound 的影响。
  2. 自适应分块策略:根据序列长度和 batch 大小动态调整分块参数,不是固定算子尺寸。
  3. 算子级计算-显存重叠:在算子内部就把访存和计算指令交替排列,不是只靠全局调度。

从披露的测试数据看,在 H800 上对 DeepSeek V2 系列的推理场景,端到端 decode throughput提升了约 60-85%,首 token 延迟也有明显改善。

对部署的影响

如果数据属实,这类协同调度优化可能比单纯换更大的显存带宽更划算。对部署来说:

  • 同等硬件能支撑更多并发:特别是高并发短序列场景(搜索推荐类、代码补全、客服对话),效果比长序列场景更突出。
  • 功耗方面有附带好处:计算和访存重叠意味着同样时间内 GPU 利用率更高,完成同样数量的请求更快,从而整体能耗更低。
  • 现有的量化策略不冲突:DSpark 在 FP8/INT4 量化模型上同样适用,可以配合使用。

另外 DeepSeek 同一时期还开源了 DeepSpec——一套专门训练和评估 speculative decoding 草稿模型的完整工具链。两者相互补充:DeepSpec 负责训练更好的草稿模型,DSpark 负责在推理时把协同调度做到极致。两者的结合思路其实指向同一个方向:推理优化不再只是 serving 层的事,也需要从模型训练侧和硬件调度侧同时下手。

值得探讨的问题

  • 这种显存-计算协同调度能否做成通用 runtime 层,还是需要针对每代硬件重新适配?
  • 在推理芯片百花齐放的今天(NVIDIA / AMD / 昇腾 / GraphCore),这类框架相比纯 CUDA 优化的方案有多大可移植性?
  • DSpark 和 DeepSpec 的组合已经接近生产级了,还是更适合实验室场景?

内容来源:

  • VentureBeat: DeepSeek open sources DSpark framework
  • Open Source For You: Peking University, DeepSeek Open-Source DSpark
  • GitHub DeepSpec: speculative decoding training framework
2 个赞

这个话题的信息量很大,先收藏慢慢看。

不过这种框架在 AMD MI300X 上的移植性是个问题,ROCm 的同步原语没有 CUDA 那么灵活,可能得等社区适配。

有没有人试过 DSpark + DeepSpec 在 vLLM 后端外的组合?比如直接对接 SGLang 或者 TGI?

1 个赞

之前在 H800 上试过类似思路的调优,但 DSpark 这个级别的调度粒度确实需要框架级支持,不是纯手工调 KV cache 能比的。

看他们论文里的消融实验,显存预取这一项贡献了大概 35% 的提速,算子级重叠又贡献了 25%,剩下是自适应分块带来的。

和 DeepSpec 配合的思路挺有意思——训练侧把草稿模型训好,推理侧靠 DSpark 把调度做细,等于同时动了两头。

对于现在用量化模型跑生产的团队,DSpark 能在不换模型的情况下多撑 30-50% 的并发,这个 ROI 其实比换模型划算。

我比较好奇长序列场景的表现,文章里主要测的是短 batch decode。长 context 场景下显存预取策略可能会有不同。