下载
中文
注册

概述

PD分离介绍

Prefill & Decode分离部署(简称:PD分离部署)是将Prefill(预填充)和Decode(解码)这两个推理阶段分开处理的技术,通常适用于对时延有严格要求的场景。PD分离部署可以提高NPU的利用率,尤其是大语言模型时,通过将Prefill实例和Decode实例分开部署,减少Prefill阶段和Decode阶段分时复用在时延上造成的互相干扰,实现同时延下吞吐提升。PD分离工作原理如图1所示。

图1 PD分离工作原理

大语言模型推理的阶段可以分为Prefill与Decode阶段:

  • Prefill阶段:在生成式语言模型中,Prefill阶段涉及到模型对初始提示(Prompt)的处理,生成初始的隐藏状态(Hidden States)。这个阶段通常涉及对整个模型的一次前向传播,因此计算密集度较高。对于每个新的输入序列,都需要进行一次Prefill。
  • Decode阶段:在Prefill阶段之后,模型基于初始隐藏状态逐步生成后续的文本。这一阶段的特点是计算相对较少,但需要反复进行计算,直到生成足够的文本或达到某个终止条件。在生成过程中,只计算最新的token激活值,并进行attention计算,计算最终的预测token。

部署方案

PD分离部署在线下K8s集群的参考部署方案:

通过创建3个K8s的Deployment分别部署MindIE MS Controller(单Pod副本)、MindIE MS Coordinator(单Pod副本)以及MindIE Server(多Pod副本)。

通过K8s的Service为Coordinator Pod开放PD集群的推理入口。

图2 PD分离的部署形态

PD分离优势

PD分离主要包括以下优势:

  • 资源利用优化:由于Prefill阶段计算密集,而Decode阶段计算较为稀疏,将这两个阶段分离可以更好的利用NPU的计算资源。
  • 提高吞吐量:分离后的Prefill和Decode可以同时处理不同的请求,这意味着在Prefill阶段处理新请求的同时,Decode阶段可以继续处理之前请求的解码任务,从而提高了整体的处理能力。
  • 降低延迟:由于Prefill和Decode分别在不同的阶段进行,可以减少等待时间,特别是当有多个请求并发到达时。

限制与约束

  • Atlas 800I A2 推理产品 支持此特性。
  • P节点与D节点仅支持相同型号的机型。
  • 不同P、D节点使用的NPU卡数量必须相同。
  • NPU网口互联(带宽:200Gbps)。

特性兼容性:MindIE RC3版本PD分离场景不支持停止词特性下不返回stop string功能,即不支持include_stop_str_in_output=false。