懒猫后花园

哦,这该死的代码

速读论文-ASPLOS‘26 Swift Spec DV 分离

最近实在是很久没写博客了,但不写又不太行,尝试开一些更短平快的风格论文读后感博客,囫囵吞枣不求甚解。

今天是 ASPLOS'26 的 SwiftSpec: Disaggregated Speculative Decoding and Fused Kernels for Low-Latency LLM Inference[1]。这篇论文类似 PD,将不同特性负载拆分到不同集群上,整篇文章都在 H800 实机实现,可谓非常扎实。本篇博客相关分析已上传开源[2]。在集群层面,通过划分数量是最简单最直接的调度方式,无论是 PD 还是 DV 都属于静态划分策略,透过这一类论文主要看两个问题:

  • Motivation Setup: 集群数量变化,负载特性曲线有什么规律差异?如何 setup 实验论证?
  • 策略调度空间: 静态策略的调度空间有多大?是否存在退化现象?负载的动态特性是否需要更强的动态策略处理?

Scaling 友好的模型

核心思路类似 PD,将 draft 和 verify 拆分到不同的机器上去。

Extra/Images/IMG_20260721105810245.png

PD 拆分的原因在于访存和计算倾向不一致。固定模型做计算 scaling 属于 strong scaling,本篇 DV 拆分的动机来自不同模型尺寸,其 strong scaling 曲线规律不一致。Llama3 + vLLM + H800 测量数据如下:

Extra/Images/IMG_20260721105810412.png

数据点来自原始论文,曲线是我自己拟合的。从数据点规律可以看见,在大参数量 Llama3 70B 下,scaling 趋势良好,而在小模型上随着节点数量增加甚至出现了反弹现象(非单调说明 vLLM 并行策略比较静态,因为大不了就 disable 一些节点延时不变,从本篇论文方法来说,确实就像 disable 了一些节点用 verify 填满)。在这个静态的策略下,scaling 的计算资源优势被互联抹平了。换句话说,在以上的环境下,小模型是 scaling 不友好的,而大模型是 scaling 友好的。那么将小模型放在多卡上就是浪费资源

理论分析

以下是根据大概 motivation 和数据做的简单实验分析,不来自论文原始数据。 对于 draft 和 verify 模型的 strong scaling 曲线定义为,\(T\) 是延时,\(x\) 是并行机器数量, \(n\) 是 verify prefill / draft decode 的 token 数量:

\[\begin{align} T_{draft}(x,n)\\ T_{verify}(x,n) \end{align} \]

为了快速实验利用前文的数据,简化为:

\[\begin{align} T_{draft}(x)\\ T_{verify}(x) \end{align} \]

那么假设总共 \(X\) 个节点,拆分要优于原始串行策略,不等式为

\[\exists x,\quad \max(T_{draft}(x),T_{verify}(X-x))<T_{draft}(X)+T_{verify}(X) \]

给出不同 verify, draft 节点数量分配比例,不同策略下的延时数据可视化。
Extra/Images/IMG_20260721105810586.png

可见,因为 draft scaling 效果很差,基本上都倾向将更多节点分配给 verify,所有参数组合都是在 1 draft + 7 verify 下效果最好。不过理想建模简化了 token 数量和同步开销,仅供参考。

思考:静态分离策略 和 动态差异性

这篇论文和 PD 分离出发点一致,根据负载的异构特性在集群层面通过数量重构,昨天发到pyq 评论主要对其 strong scaling 曲线可信度和 静态分离-动态负载两点进行了讨论:

  • Verify/Draft Strong Scaling 曲线可信度: PD 分离初衷 compute bound 和 memory bound 出发点是很鲜明的,而本论文 strong scaling 曲线差异主要来自实测,是否有可能通过 simulator 给出更白盒的成因分析? EAGLE-3[3] 论文给出 verify-draft model 的参数量比例大致在 2-5% 比较合适,这篇论文的几组实验配置是否 draft model 参数量相比 verify model 参数量过大,如果采用 2-5% ,是否节点分配比例会退化到 draft 只给一个节点?
  • 静态的分离策略和动态负载: 本身 vLLM strong scaling 曲线出发点来自并行策略过于静态,因此论文使用了 spatial-only mapping 的策略进行修正;对于 verify tree / draft 变长 token 等动态性,是否可以在集群层面引进更加动态的 spatial-temporal mapping 策略呢?PD 分离也存在 prefill/decode 动态性问题,该问题可以调研 PD 分离相关动态性思路

  1. https://arxiv.org/abs/2506.11309 ↩︎

  2. https://github.com/Devil-SX/swiftspec ↩︎

  3. https://arxiv.org/abs/2503.01840 ↩︎

posted @ 2026-07-20 16:38  DevilXXL  阅读(59)  评论(0)    收藏  举报