vLLM 语义路由器多模态路由和视觉编码器加固
vLLM 语义路由器多模态路由和视觉编码器加固
vLLM 已将语义路由器(VSR)扩展以支持多模态路由,使得来自图像、截图和文档的视觉证据能够作为类型化信号在与文本相同的决策结构中发挥作用。这一转变将 VSR 从提示级路由移动到请求级策略,使得能够基于多模态请求的实际内容进行更精确的路由。
多模态路由作为请求级策略
VSR 中的多模态路由不仅仅是简单的图像分类;它是将视觉信号集成到信号-决策架构中。在此模型中,信号是独立的观察值,通过优先级和布尔逻辑组合来确定路由路径。
- PII 风险: 一个说 "Summarize this" 的请求与护照图像配对时,将被路由为受限处理的标识文档。
- 域专化: 类似 "What does this show?" 的模糊问题与胸部 X 光片配对时,会触发医学领域策略并路由到能够处理的视觉语言模型(VLM)。
- 安全审查: 一个 "Find the bug" 提示与代码截图配对时,被识别为代码制品,触发安全审查路径和秘密泄漏检查。
- 域外拒绝: 一个医学提示与无关的汽车图像配对时,会被标记为域外视觉证据,导致澄清或拒绝路径。
解决视觉信号反转
在使用 multi-modal-embed-small (mmes) 编码器实现多模态路由期间,vLLM 发现了一个关键故障,其中部署的路径被“自信地错误”。在三个垂直领域和 21 个候选标签上的 11 图像探测显示出 82% 的反转率,其中信号是反相关的而不仅仅是噪声(例如,医学 X 光被排名得比医学候选更接近半导体候选)。
误诊:编码器强度
最初的假设认为紧凑型的 multi-modal-embed-small 编码器对于此任务不足。然而,测试显示其他模型——包括 SigLIP2-base、SigLIP-base(通过 Hugging Face)以及更大的 multi-modal-embed-large (mmEL)——在同一探测上均得分 10/10。关键的是,通过 PyTorch 参考路径加载的 mmes 模型也得了 10/10 分,证明编码器本身不是问题。
根本原因:实现漂移
调查发现 PyTorch 参考路径与 Rust/Candle 绑定路径之间存在显著差距。护照夹具测试显示,在 PyTorch 中的余弦相似度为 0.7204,而在 Candle 绑定路径中为 0.1576。
在 Candle 路径中发现并纠正了三个特定的实现错误:
- 汇合头不匹配:
SigLIPVisionEncoder::forward的实现使用了 BERT 风格的均值 + Linear + tanh 池化,而不是所需的注意探测池化头。这在 PR #1927 中得到解决。 - 归一化错误: Go 图像加载器提供的像素值在
[0, 1]范围内,但 SigLIP 需要每通道归一化(x - 0.5) / 0.5。这在 PR #1928 中得到修复。 - 预处理漂移: Go 端的调整大小路径使用了 4-tap 双线性实现,这与 PyTorch 参考中的 PIL 风格预处理不同。PR #1943 将图像解码、调整大小和转换移至 Rust,使用
imagecrate 和 Catmull-Rom 过滤来近似 PIL 双三线 + 抗锯齿行为。
验证与性能
在这些修复之后,生产路径相对于 PyTorch 参考进行了验证。在护照夹具上的三向量隔离实验表明,完整的分支堆栈管道相对于参考实现了 0.999902 的余弦相似度。
在 20 张图像的语料库中,系统达到的最小余弦值为 0.999557,平均值为 0.999919,且 20/20 张图像在相对于 PyTorch 参考的得分上均 $\ge 0.999$。
至于性能,VSR 中的分类器信号通过 runSignalDispatchers 并发运行,这意味着墙钟延迟受最慢的启用分类器限制。在代表性追踪中,完整的分类决策大约在 CPU 上完成需要 1.3 秒。
VSR 的未来路线图
拥有可靠的视觉信号路径后,vLLM 计划将 VSR 发展为全面的请求级控制平面。未来的架构目标包括:
- 将图像派生的信号直接集成到与文本信号相同的决策层中。
- 确保多模态决策在回放、指标和调试工具中可见。
- 使模型选择同时考虑政策适配性和模态能力。
- 为如 PII 和越狱等安全关键信号保持高保真检查。
- 将路由结构扩展到代理工作流,包括工具调用和内存写入。
SUMMARY: vLLM 为语义路由器(VSR)引入了多模态路由,使得系统能够将视觉证据作为请求级策略决策的一等信号使用,同时解决了 Rust/Candle 与 PyTorch 路径之间的关键实现漂移。
TITLE: vLLM 语义路由器多模态路由和视觉编码器加固