更新时间:2025-07-29 GMT+08:00
分享

PD分离部署性能调优理论基础

PD分离部署场景下,一般实例都加载相同模型。如何分配实例的初始属性,并根据实际需求动态调整实例属性。不合理的实例配比将造成Prefill实例等待空闲或Decode实例等待空闲,造成资源浪费,最终在MFU和端到端吞吐性能上产生劣化,无法发挥PD分离调度架构的优势。

性能评测度量方式

度量标准

传统的度量方式未引入SLO的要求,造成吞吐好看,但是客户的感知不好。

goodput的引入:满足的SLO要求的吞吐,即TTFT与TPOT均满足要求。

TTFT:Time To First Token(首token生成时间)

TPOT:Time Per Output Token(平均每个token的生成时间) = (finished_time - first_token_time) / output_len)

图片源自于:Throughput is Not All You Need: Maximizing Goodput in LLM Serving using Prefill-Decode Disaggregation | Hao AI Lab @ UCSD (hao-ai-lab.github.io)

目前业内普遍用的度量分离部署收益的方案都是SLO,或者说同构场景只有在有SLO要求时,分离部署的收益才是经过验证的。作为maas来说,SLO的要求是更为合理的。

理论配比计算方法

配比模型

将整个PD分离系统看做生产消费模型,P实例生产KV,PD之间传输KV,D实例消费KV,三者组成Pipeline完成大模型推理。当三者中任一速率低并成为瓶颈,就会产生请求堆积,进而影响整体的吞吐量和时延。请求增加输入长度降低Prefill生产速率(计算量增加),同时也降低Decode消费速率(KV Cache访存增加),增加P和D实例可以提高生产和消费速率。

因此,PD分离系统良好运行的关键在于满足时延SLO约束下,那么面对不同的请求分布,尽可能提高这三种速率。PD配比寻优保持一个原则:使Prefill速率、Decode速率、传输速率三者互不为短板

理论配比计算步骤

当前计算公式默认以下情况:

  1. KVCache传输不是瓶颈
  2. 只考虑Prefill速率与Decode速率,生产者及时被消费者消耗KV。

计算步骤:

  1. 确定当前模型SLO要求,使用混推模式跑出满足SLO的最大batch值的全量与增量数据。(以下使用qwen2 72B,输入256输出256为例, SLO要求为TTFT 1s与TPOT 50ms)
    表1 数据

    输入句长

    prefill首token时延(ms)

    prefill batch size

    输出句长

    decode平均时延(ms)

    decode batch size

    256

    877.61

    16

    256

    51.43

    64

  2. 计算全量推理与增量推理的QPS。

    全量QPS = 1s / ((prefill_time / 1000) / batch_size) = 1 / ((877.61 / 1000) / 16) = 18.23 qps

    增量QPS = 1s / (((output_len - 1) * (decode_time / 1000)) / batch_size) = 1 / (((256 - 1) * (51.43 / 1000)) / 64) = 4.88 qps

  3. 配比归一化,计算得出理论最优配比。

    最优理论配比 = 增量QPS / 全量QPS = 0.26769 约等于 1 : 4

由公式可得最优配比大约为1p:4d。

例外场景说明

本次建模配比计算理论只适用于定长输入场景, 对于泊松分布输入场景并不准确。 不定长场景调优可参考手动配比调优方案。

相关文档