文章 技术

Sweep LLM 功耗控制调度策略研究(一)

Sweep LLM 功耗控制调度策略研究(一)

8月份了,趁着开学之前,抽时间整理一下暑假做的Reasearch Assistant的工作内容整理。

研究内容

现状

项目主要是基于博士后做的SWEEP-LLM runtime 调度器的进一步扩展。这个调度器尝试解决的问题是在PD分离的异构GPU混合集群上,调度传入请求,使请求能够在满足TTFT/TPOT SLO的前提下尽可能降低能耗。
调度器本身是一个model-driven scheduler,它是基于L4和L40s采集的真实测试数据benchmark,训练了一个模型。模型可以分为三类,首先预测Capacity,判断输入的request对当前系统的压力;之后是Feasibility classifier判断,分别判断Prefill阶段是否会违反TTFT,Decode阶段是否会违反TPOT;最后则是Latency/Power Regression,判断P99 TTFT和P99 TPOT,来选择最优的配置。

在实际测试调度器的时候,我们发现几个问题:

  1. 模型的训练数据,主体并不是在真实 PD(Prefill/Decode)跨池分离运行状态下采集的,而是基于单个 GPU pool 的 profiling 数据训练的。且模型没有对KV-cache传输做测试计算。

  2. 模型对于系统的压力是做了一个Capacity的预测计算,

    xcap=[log⁡(1+il),log⁡(1+ol),TP,ffmax⁡,olil+ol]\mathbf{x}_{\mathrm{cap}} = \left[ \log(1+il), \log(1+ol), TP, \frac{f}{f_{\max}}, \frac{ol}{il+ol} \right]

    log⁡C^=gcap(xcap)\log \hat{C} = g_{\mathrm{cap}}(\mathbf{x}_{\mathrm{cap}})

    C^=exp⁡(gcap(xcap))\hat{C} = \exp\left(g_{\mathrm{cap}}(\mathbf{x}_{\mathrm{cap}})\right)

    Dpf=λil,Ddc=λolD_{\mathrm{pf}} = \lambda il, \qquad D_{\mathrm{dc}} = \lambda ol

    ρpf=DpfC^eff,ρdc=DdcC^eff\rho_{\mathrm{pf}} = \frac{D_{\mathrm{pf}}}{\hat{C}_{\mathrm{eff}}}, \qquad \rho_{\mathrm{dc}} = \frac{D_{\mathrm{dc}}}{\hat{C}_{\mathrm{eff}}}

    而这种预测模型是可解释的物理先验,如果出现误差,错误就会传递到\rho,这样就会放大误差,而预测本身对系统的实时状态反应不是很灵敏,相比之下,我们可以使用vllm server自身的/metrics接口,它可以提供更准确更灵敏的实时系统压力状态。

  3. 调度器本身的策略处理,如果有时候因为RPS过高,系统请求积压,那么我们已经无法在原有的系统上通过调整频率来满足SLO,这个时候我们可以考虑预先启用几个备用的PD GPU pool,或者有需求时临时启用。当然,这也带来的额外的能耗。
    对于这些问题,考虑到我们要实现的主要目标是在满足SLO的情况下提供功耗更低的选择,而系统饱和导致的预测错误的惩罚会很大,因此,首先我尝试添加一个新的gate,通过gate来更加灵敏的反应系统的饱和状态。这个gate会更保守的估算当前系统的饱和状态,从而使用更保守的策略调整GPU的频率。
    在原始模型中,Capacity使用GradientBoostingRegressor训练,TTFT和TPOT则采用HistGradientBoostingRegressor,而SLO分类器则采用GradientBoostingClassifier。预测饱和的Saturation Gate则也是采用GradientBoostingClassifier。
    总结来说:Capacity (ρ)(\rho) 是“容量回归模型+公式计算”,Saturation Gate是“以实际吞吐是否达标为标签、并把(ρ)(\rho) 作为输入之一的成本敏感梯度提升二分类器”。

实验结果

在离线GroupKFold OOF评估中,我们对比:

  • 原策略:Guard + latency;

  • 新策略:Guard + latency + Saturation Gate;

  • Gate阈值:(τsat=0.30)(\tau_{sat}=0.30)。
    得到的结果如下:

指标

无Saturation Gate

有Gate

变化

False-safe rate

34.54%

6.55%

大幅下降

False-safe数量

105

15

-90

饱和导致的False-safe

91

2

-89

Oracle存在但没有admit

26.67%

32.42%

更保守

Chosen coverage

24.48%

18.44%

下降

可行配置能耗regret中位数

6.11%

11.15%

变差

这可以看出来,加上Saturation Gate之后,对于问题的检测更加灵敏,当然这也带来了功耗提升,因为处理的机制更加保守了。

评论