文章 技术

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

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

前篇文章:https://eduardoqian.com/archives/sweep-llm-gong-hao-kong-zhi-diao-du-ce-lue-yan-jiu-yi
继续书接上回。

PD分离

目前vllm PD分离广泛应用于推理系统中,考虑到prefill和decode的计算特征,采用PD分离更加符合功耗控制的场景。因此,我们继续做了PD分离的相关实验。
这里便遇到了我们的第一个问题:目前我们集群的是L4, L40s组成的多个node节点池, 节点池之间是使用1000Gbps网络连接,而不是RDMA,这就要求我们使用网络的kv connector。项目中我们测试了p2p kv connector和NIXL kv connector。其中p2p在我们实际测试环境中速度尚可,而NIXL的速度较慢。因为我们还要测试非对称的PD分离结构,所以我们后续会考虑NIXL来做kv-cache的传输。

除此之外,我们还要考虑到PD分离带来的路由选择:假设我们有一个Prefill节点池里有P0-P1-P2-P3,Decode节点池有D0-D1-D2-D3,不考虑PD连接链路的复用的情况下,我们可以自由组合P-D的拓扑结构,比如P0-D0,之后可以继续选择P0-D1。但是如果我们按照请求级别调频(即每个请求都要调频)这里会遇到调频的等待问题。
根据这篇文章,使用nvidia-smi -lgc 调频, 从执行命令到实际调整频率,对于某些组合会突然出现几百毫秒的延迟。这对我们的SLO来说实际上已经算是不合格(500ms作为TTFT的SLO限制,一个调频的延迟已经超过了),所以对于PD分离和自由路由导致的问题,还有一个很大的领域。

调频与分池

对于上面说的调频问题,我们可以有一个更简单的方法来处理,那就是提前将GPU按组分配,不同组有不同的频率,这样我们就可以不用随时调频,而是把请求放到其对应的合适GPU Group
这样的话,我们就大致解决了调频带来的不确定性,而且这种分池思维也更适配实际工程中节点池。同时,这也将问题转为路由选择+调频问题。

评论