专栏名称: 新智元
智能+中国主平台,致力于推动中国从互联网+迈向智能+新纪元。重点关注人工智能、机器人等前沿领域发展,关注人机融合、人工智能和机器人革命对人类社会与文明进化的影响,领航中国新智能时代。
51好读  ›  专栏  ›  新智元

揭秘老黄演讲中关键技术:PD分离!UCSD华人团队力作,LLM吞吐量跃升4倍

新智元  · 公众号  · AI  · 2025-03-19 14:54

正文



新智元报道

编辑:静音 定慧
【新智元导读】 老黄GTC重点展示的PD分离技术为何成兵家必争之地?UCSD全华人团队力作,创新性地提出预填充-解码分离技术。在严格的延迟约束下,相比现有最先进的服务系统,可实现高达4.48倍的有效产出率或10.2倍更严格的SLO达成率。

现在,PD分离已经成为兵家必争之地。

前有Mooncake/DeepSeek等公司采用这种技术来优化大模型的推理服务,后有Nvidia/PyTorch基于该技术孵化下一代LLM服务系统。

甚至最近,黄仁勋也在2025 GTC的舞台上提到了PD分离(Prefill-Decode Disaggregation)技术,进一步证明了这一技术获得的广泛关注。

去年,来自UCSD的一个华人团队发布的一篇博客,就深入剖析了这一技术的原理和它的应用场景。

博客地址:https://hao-ai-lab.github.io/blogs/distserve/

如今,大语言模型应用有着不同的延迟需求。

例如,聊天机器人需要快速响应(比如低于0.2秒),而解码速度可以较为适中,仅需与人类阅读速度相匹配;代码补全则要求快速生成,以便实时提供代码建议。

文章中展示了现有的优化吞吐量的服务系统,在延迟标准下并不理想。

作者提议使用「有效吞吐量」(goodput)作为大模型服务性能的改进衡量标准,它不仅关注每秒完成请求的数量,而且符合服务级目标(SLO),更好地平衡成本和用户体验。

为了提升有效吞吐量,文章提出了「预填充-解码分离」(prefill-decode disaggregation),即将预填充和解码分配到不同的GPU上。

通过这个方法,作者搭建了一个系统原型DistServe,在保持严格的延迟约束下,达到了比现有系统高出4.48倍的有效吞吐量,或者10.2倍更严格的SLO。

一个请求通过一个具有分离预填充和解码的LLM服务引擎

吞吐量与有效吞吐量

LLM正在改变行业对AI的应用,但LLM服务成本仍然很高。

为了降低成本,很多公司专注于提升LLM系统的吞吐量,即每秒处理的请求数(rps),作为每个请求成本($/req)的替代指标。

大多数流行的LLM服务引擎,如vLLM和TensorRT-LLM,都用吞吐量来衡量性能。

然而,实际应用对延迟的要求各不相同,因此服务级目标(SLO)也不同。常见的SLO包括:

  • 首次token延迟(TTFT): 测量LLM生成第一个token的时间

  • 每个输出token的时间(TPOT): 测量两个连续生成的token之间的平均延迟

应用程序有着多样的SLO要求

吞吐量只关注处理的请求或token数,却忽视了这些延迟需求。作者引入了有效吞吐量(goodput),它衡量每秒完成的符合SLO的请求数(同时满足TTFT和TPOT要求)。这比吞吐量更能反映服务质量,因为它考虑了成本和用户体验。

那么,到底什么是有效吞吐量?假设一个应用要求90%的请求TTFT小于200毫秒,TPOT小于50毫秒,那么有效吞吐量就是每秒能完成的最大请求数,且至少90%的请求同时满足这两个条件。

一个高吞吐量的应用可能有低的有效吞吐量。虽然吞吐量是10个请求每秒,但因为延迟约束,只有3个请求符合SLO,最终的有效吞吐量只有每秒3个请求。可以想象,尽管这种系统的吞吐量很高,但它的用户服务将很差。

高吞吐量≠高有效吞吐量

以下是在本小节中引入的术语:

  • 有效 吞吐量 衡量LLM服务系统效能的指标,考虑了成本和用户满意度。它定义为每秒系统可以完成的请求数量,同时满足指定的服务级目标(SLO)。
  • 吞吐量 LLM服务系统每秒处理的已完成请求数量。
  • 服务级目标(SLO): LLM服务系统必须满足的目标,以提供令人满意的用户体验。常见的SLO包括首次token延迟(TTFT)、每个输出token时间(TPOT)、端到端延迟(E2E)和指数加权平均(EMA)延迟。
  • 预填充: LLM推理的第一阶段,处理所有输入token,填充KV缓存,并生成第一个输出token。
  • 解码: 随后的阶段,通过自回归方式生成token,直到完成。
  • 首次token延迟(TTFT): LLM服务系统响应用户请求时,生成第一个token所需的时间。
  • 每个输出token的时间(TPOT): LLM服务系统响应用户请求时,生成后续token所需的平均时间。

为什么现有系统无法实现高有效吞吐量?

在深入分析之前,需要回顾一下LLM服务请求的流程。

下图展示了这个过程: 请求进入LLM推理引擎,系统首先处理用户输入生成的第一个token(预填充),然后通过自回归生成后续token(解码)。 一个请求通常包括一个预填充步骤和多个解码步骤,直到生成完成。

传统LLM服务系统中请求的处理过程

LLM服务系统通常将预填充和解码一起批处理,使用迭代调度或连续批处理技术,使GPU能尽量大批量处理,从而提高吞吐量(每秒token数),vLLM和TensorRT-LLM等系统都广泛采用这一方法。

然而,预填充和解码在计算上有非常不同的特点。

预填充非常依赖计算,意味着即使是一个小批量的预填充,或者仅仅是一个足够长的预填充,也会迅速饱和GPU计算资源。

另一方面,解码需要更大的批量来达到计算瓶颈,且更容易受到GPU内存带宽限制的影响。

不过,预填充和解码在计算上差异很大:预填充计算密集型,容易迅速饱和GPU;而解码则需要更大批量才能达到计算瓶颈,同时也更受GPU内存带宽的限制。

由于它们的计算模式和SLO目标差异巨大,将这两者一起处理并不有利于优化有效吞吐量,原因有二:







请到「今天看啥」查看全文