編碼-預填充-解碼(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專注於預填充和解碼。






