vLLM 编码器解耦 (EPD) 扩展与多模态服务
EPD 解耦概述
多模态推理需要在语言模型执行之前进行编码阶段,将媒体(图像、视频、音频)转换为嵌入(embeddings)。由于编码需求可能与预填充(prefill)和解码(decode)需求独立变化,vLLM 支持编码器/预填充/解码 (EPD) 解耦。这种架构将这些阶段分离为独立部署的 vLLM 实例,使运营商能够根据特定的工作负载需求优化资源分配。
仅元数据请求
为了提高效率,vLLM 现在支持仅元数据请求。在此工作流中,编码器在生成嵌入的同时产生结构化元数据(例如图像网格或特征长度)。下游消费者使用这些元数据来重建输入布局,而无需重新处理或重新获取原始媒体。这减少了冗余计算和网络开销。对于音频工作负载,仅元数据转发已被证明可将吞吐量从 62.21 提高到 73.13 请求/秒,同时将平均延迟从 980 毫秒降低至 853 毫秒。
专用编码器执行
vLLM 中的纯编码器实例现在通过专用的 MMEncoderModelRunner 进行了优化。主要改进包括:
- 减少启动 I/O: 纯编码器实例跳过加载语言模型检查点分片,大幅缩短了初始化时间。
- CUDA Graph 支持: 纯编码器运行器支持可选的 ViT 图捕获,以提高执行速度。
- 异步执行: 编码器步骤与令牌采样隔离,防止缓冲区争用并确保性能一致。
- GPU 预处理: 集成基于 GPU 的预处理和 NVDEC 硬件解码,在视频密集型工作负载中展现了显著的吞吐量提升。
远程嵌入传输与重用
在解耦组件之间高效传输嵌入对于性能至关重要。vLLM 支持两条主要的远程传输路径:
- NIXL: 通过注册的 CPU mmap 区域在实例之间共享 CPU 卸载的编码器输出。
- Mooncake: 使用 Mooncake TransferEngine 交付编码器输出,支持 TCP 和 RDMA 配置。
此外,Mooncake Store 支持跨编码器输出重用。如果图像由一个实例编码,生成的嵌入可以被缓存并由其他编码器重用,从而消除冗余的前向传递。对 InternVL3_5-38B-HF 的实验表明,共享重用在重新分配场景中将重复图像编码减少为零,显著改善了首字延迟 (TTFT)。
编排与部署
vLLM 为 EPD 编排提供了多种集成路径:
- vLLM Router: 支持 E+PD 和 E/P/D 部署的原生 CLI 配置,包括多图像分发。
- SMG: 提供基于 gRPC 的 EPD 支持,包含 Python 和 Rust 服务端,能够将图像处理分发到多个编码器工作节点。
- llm-d: 提供 Kubernetes 原生部署路径,其中编码器和消费者角色作为独立的 Pod 层运行,允许独立扩展和硬件选择。
性能影响
在 GB200 硬件上使用 DeepSeek V4.1 Flash 进行的评估中,在高并发 (64–128) 下,EPD 部署的单 GPU 吞吐量比标准 PD 基准高出 6.6–9.5%。此外,P90 TTFT 降低了 44–47%,突显了将编码阶段分离用于计算密集型多模态任务的优势。