编码-预填充-解码(EPD)分离是一种针对多模态模型的推理优化技术,它将视觉编码器阶段与预填充和解码阶段分离开来。该技术在处理图像密集型提示词、中短长度输出以及量化混合专家(MoE)模型时效果最佳。
本文介绍了何时以及如何使用NVIDIA Dynamo实现EPD分离,从而将首Token时间(TTFT)提升最多5倍,端到端响应时间提升最多7倍。文章同时也说明了不建议使用EPD分离的场景。
Dynamo是一个用于在分布式环境中提供AI模型服务的开源推理框架。它支持EPD分离,将这些阶段拆分为可独立扩展的模块,而不是采用紧密耦合的调度和扩展模式将它们统一运行。专用的编码器工作节点能够提升批处理效率、内存利用率和整体吞吐量。
为什么EPD分离很重要
多模态请求在大语言模型预填充开始之前会增加额外的工作量。服务架构必须先预处理媒体内容并运行视觉Transformer(ViT)以生成嵌入向量。在聚合式服务中,视觉编码、大语言模型预填充和解码共用一个工作节点和一个调度域。当媒体处理只占工作负载的一小部分时,这种简单设计运行良好。
但当请求中包含更多图像或视频时,这种平衡就会被打破。视觉编码可能需要数百毫秒甚至更长时间。由于编码器和大语言模型的工作共享同一块GPU,媒体密集型请求可能会延迟自身的预填充过程,并与并发的预填充和解码工作产生资源争抢。相反,在混合流量场景下,纯文本请求也可能因排在多模态请求之后而被延迟,即便它们根本不需要视觉编码。
Dynamo通过将编码器和PD(预填充-解码)工作节点角色分离来实现EPD服务,且不固定它们的硬件部署位置。编码器工作节点负责生成视觉嵌入向量,而PD工作节点则消费这些嵌入向量并运行大语言模型。这种分离方式使各阶段能够独立进行批处理、调度和扩展。图2对比了聚合式服务与EPD服务,展示了编码工作节点通过NVIDIA推理传输库(NIXL)将嵌入向量传递给PD工作节点的过程。
编码分离只有在特定场景下才能降低TTFT并提升相同服务等级目标(SLO)下的有效吞吐量。被隔离出来的编码工作量必须足够大,才能抵消工作节点协调和嵌入向量传输带来的额外开销。编码器工作节点可以与PD工作节点共享GPU,也可以运行在独立的GPU层级上,由此产生不同的部署方案。下面我们将探讨编码器工作节点的不同部署方案及其在各种场景下带来的收益。
三种编码器部署拓扑结构
图3对比了聚合式服务与两种编码器分离拓扑结构(协同部署式和完全分离式):
聚合式:每块GPU运行一个聚合式工作节点,其调度器将视觉编码、大语言模型预填充和解码作为同一请求生命周期的一部分进行管理。
协同部署编码器:每块GPU运行一个或多个编码器工作节点,并与一个PD工作节点共存。这样工作节点可以共享GPU算力,同时保持独立的请求队列和批处理机制。在同构集群中,协同部署编码器通常是更优的方案。视觉编码器相对于大语言模型而言较为轻量,如果为编码器工作单独预留一整块同级别GPU,会导致该GPU大部分算力被闲置。协同部署方式在不将整块GPU专门分配给编码器的前提下,实现了工作节点的分离。
完全分离式编码器:当集群中包含成本更低、更适合编码器工作的GPU层级,而主GPU层级用于承载PD工作节点时,完全分离式编码器方案就变得具有吸引力。Dynamo通过NIXL将生成的视觉嵌入向量传输至PD层级。在我们的测试环境中,两块NVIDIA RTX 6000D GPU负责运行编码器工作节点,四块NVIDIA GB200 GPU负责运行PD工作节点。这种部署方式将较轻的编码器工作负载保留在RTX GPU上,同时将GB200 GPU留给计算和内存需求更高的大语言模型工作负载。需要说明的是,本分析未考虑在同构GPU环境下采用完全分离式部署的情况,因为这种方式的表现始终不如协同部署编码器方案。
硬件可用性决定了编码器可以运行在哪里,而工作负载特征则决定了分离是否值得。
哪些因素决定EPD分离的收益
EPD的收益取决于工作量在视觉编码、大语言模型预填充和解码之间的分配方式。当视觉编码占据请求处理时间的显著比例或成为吞吐量瓶颈时,EPD最为有用。媒体密集型请求通常会产生这种情况,但媒体负载本身并不是决定结果的唯一因素。输出长度、模型规模与精度以及流量组合同样会改变这种平衡。
测试环境
除精度消融实验外,所有基准测试均使用Qwen3.5 122B A10B NVFP4模型进行。我们使用了四块GB200 GPU(在分离式部署中额外使用了RTX 6000D GPU):
聚合式:每块GB200运行一个TP1聚合式工作节点
协同部署EPD:每块GB200运行两个编码器工作节点加一个PD工作节点
完全分离式EPD:RTX节点作为编码器层,GB200作为PD层
我们使用基于UCX RC/TCP以太网的NIXL进行视觉嵌入向量传输,实测峰值带宽为20Gbps。我们使用了启用前端并行媒体解码功能的Dynamo前端。有效吞吐量的SLO标准为Token间延迟(ITL)低于100毫秒。
图像密集型工作负载示例
我们对比了聚合式服务与编码器分离式服务在以下请求场景下的表现:每个请求包含十张图像(每张图像限制256个Token),输出序列长度(OSL)为1024,以模拟中等偏重的视觉工作负载和较长的输出序列。图4展示了测试结果。
协同部署编码器方案使TTFT降低了58%,异构方案降低了50%。由于OSL为1024意味着模型需要生成1024个Token,而编码器分离并不能减少解码时间,因此端到端的改善相对温和。更大的收益体现在有效吞吐量上:在相同延迟SLO条件下,异构层级能够多处理70%的流量,因为增加的编码器容量并未占用GB200的资源预算。
图像负载和输出序列长度如何影响性能提升
我们分析了在5至50张图像范围内(每张图像使用128/256 Token预算,OSL保持不变)对TTFT和端到端延迟的影响。在聚合式编码器场景下,TTFT和端到端延迟性能均出现下降,而两种分离式拓扑结构的性能则相对保持稳定。
接下来,我们在保持图像负载固定为5张图像的情况下,将OSL从128变化至2048。随着OSL的增加,TTFT基本保持不变,但解码时间在端到端延迟中的占比日益增大。因此,异构EPD相对于聚合式服务的端到端收益从20.3%收窄至5.2%。协同部署编码器方案则从11.8%的收益转变为2.5%的性能倒退,这是因为其额外的编码器工作节点与PD工作节点共享同一块GPU。随着OSL增加、解码压力增大,GPU资源争抢逐渐抵消乃至超过编码器分离带来的收益。
图7和图8展示了在不同OSL和图像负载范围内,TTFT和端到端延迟相对于聚合式基准的改善百分比。在几乎所有场景中,编码器分离在输入媒体负载较高时能够带来最大价值。而在OSL较高、图像负载较低的场景中,分离编码器反而会影响性能。
模型规模和精度如何改变EPD收益
随着模型规模的增长,大语言模型在整体服务工作负载中所占的比重上升,而视觉编码器的规模基本保持不变。为量化这一影响,我们在Qwen3.5 4B、Qwen3.5 9B和Qwen3.5 27B模型上进行了模型规模消融实验。ViT参数占比从4B模型的7.2%下降到9B模型的4.7%,再到27B模型的1.7%。协同部署EPD呈现出相同的趋势,其有效吞吐量分别为聚合式服务的2.62倍、1.50倍和0.65倍。
参数占比只是一个间接指标,更直接的决定因素是ViT前向传播、大语言模型预填充和解码三者之间的运行时平衡。当ViT前向传播在请求处理时间中占据可观比例时,EPD能够提供更大收益。随着预填充和解码逐渐占据主导地位,可优化的编码器工作量就会减少。在我们的27B模型配置中,在协同部署场景下,大语言模型的成本已经超过了分离编码器所带来的收益。
我们还测量了大语言模型精度对EPD收益的影响。当视觉编码器和大语言模型都使用BF16精度时,协同部署EPD的有效吞吐量达到聚合式服务的1.78倍。仅将激活的大语言模型权重量化为NVFP4后,这一收益提升至2.64倍。
NVFP4能够加速大语言模型的预填充和解码过程,而ViT前向传播仍保持BF16精度,这使得请求处理时间中更大比例转移到编码器工作上,从而为EPD提供了更多独立于PD工作节点调度编码器工作负载的空间。
EPD如何助力混合模态请求处理
生产环境中的工作负载通常混合了纯文本请求和多模态请求,这两类请求可能会被安排在一起进行预填充。在聚合式服务中,一个工作节点同时处理视觉编码和大语言模型预填充。如果某批次中包含多模态请求,该工作节点会先完成媒体预处理和ViT前向传播,然后才开始预填充。纯文本请求并不需要这部分工作,但仍然可能因此被延迟,从而增加其TTFT。
EPD通过将视觉编码运行在独立的编码器工作节点上消除了这种依赖关系。前端会将两类请求都路由至预填充工作节点,但只有缺少嵌入向量的多模态请求才会调用编码器池。纯文本请求可以直接进入预填充阶段,而编码器则独立处理多模态请求,从而减少了两类请求之间的队首阻塞问题。
为验证这一点,我们在持续的文本与图像混合流量下,对比了聚合式服务与协同部署编码器方案的表现。
编码器分离将文本请求的平均TTFT从92.3毫秒降低至53.3毫秒,降幅达42.2%。图像请求的TTFT则从289.9毫秒降至200.6毫秒,降幅为30.8%。图像请求仍然需要经历编码器延迟,而文本请求则可以在无需等待视觉编码完成的情况下开始大语言模型预填充。这解释了为何文本请求的TTFT相对改善幅度更大。
如何选择最佳编码器拓扑结构
最佳的编码器部署方式取决于请求时间的具体分布。当视觉编码在请求处理中占据显著比例时,例如面对媒体密集型输入、中短输出、较小或量化模型以及混合流量场景,EPD能够提供最大价值。而当媒体处理负载较轻或长解码序列主导延迟时,聚合式服务仍然是更合适的选择。
硬件条件同样会影响部署决策。在同构集群中,协同部署编码器能够在不为相对轻量的视觉模型单独预留整块GPU的情况下,实现编码器调度和批处理的分离。而在异构硬件环境下,独立的编码器层级则更为有用,可以让低层级GPU运行编码器,同时保留高端GPU专门用于PD工作。
需要说明的是,vLLM和SGLang都有关于进一步开发各自EPD技术栈的路线图规划。
开始使用EPD分离技术
如需复现本文中的实验,请参考ai-dynamo/dynamo GitHub指南进行操作。
如图1所示,43%的TTFT发生在ViT尚未启动之前。EPD并不能帮助优化流水线中的这些阶段。可以尝试在Dynamo中使用以下其他手段来处理技术栈中的不同阶段。
并行媒体解码将下载和解码工作从工作节点转移至Dynamo前端,由前端将解码后的像素数据传输给后端。在单块GB200上配备两个编码工作节点、以30×256规格进行的纯编码器基准测试中,该功能在保持相同吞吐量的情况下,将平均编码器请求延迟降低了26%(从281.3毫秒降至207.0毫秒),P99延迟降低了23%(从752.1毫秒降至581.7毫秒)。可通过--frontend-decoding参数启用该功能。
嵌入缓存功能将计算好的嵌入向量存储并卸载至CPU内存中,避免重复媒体内容被再次编码。当同一多模态内容(如图像或视频)出现在多个请求中时,系统会复用缓存的嵌入向量,而不必再次运行视觉编码器。
多模态KV路由功能会在Dynamo的KV感知路由器中将媒体内容与文本内容一起进行哈希处理,使共享相同媒体内容的请求被路由至已经持有相关KV数据块的工作节点上。如果没有该功能,路由器会将每张图像都视为相同的占位符Token。
致谢
我们要感谢Inferact联合创始人Roger Wang对本文提出的反馈意见,以及NVIDIA团队成员Alexandre Milesi、Ayush Agarwal、Guan Luo、Indrajit Bhosale、J Wyman、Kris Hung、Krishnan Prashanth、Qi Wang和Zhongdao Ren在Dynamo多模态支持核心工作方面的贡献。
Q&A
Q1:EPD分离技术能带来多大的性能提升?
A:使用NVIDIA Dynamo实现EPD分离后,首Token时间(TTFT)最多可提升5倍,端到端响应时间最多可提升7倍。具体收益取决于图像负载、输出长度、模型规模精度等多种因素。
Q2:EPD分离技术适合什么样的应用场景?
A:EPD分离在处理图像密集型提示词、中短长度输出以及量化混合专家模型时效果最佳。当媒体处理负载较轻或长解码序列主导延迟时,则不建议使用该技术,聚合式服务反而更合适。
Q3:协同部署编码器和完全分离式编码器该如何选择?
A:在同构GPU集群中,协同部署编码器通常是更好的选择,因为视觉编码器相对轻量,不必单独占用整块GPU。而在异构硬件环境下,完全分离式编码器更具优势,可以让低成本GPU处理编码工作,高端GPU专注于预填充和解码。
