自定义多模态模型注册集成到vllm的问题一个问题反馈

模型是私有的多模态嵌入模型(用于OCR识别的),通过注册插件机制已完成对接集成,在vLLM最新版本0.10.0(only V1)下基本正常,但还剩一个关于Prefixe Cahce下的问题:

现象描述:

1)关闭Prefix Cache情况下:相同的请求(prompt + 图片不变、temperature=0)推理结果是相同的且内容符合预期——模型注册集成到vLLM应该没大问题

2)但开启Prefix Cache情况下:只有第一次请求时结果是正确的,第二次重复请求时输出错误:前半截内容还是对的,但后面就一直没有输出stop tokens停不下来,一直到max_tokens才停。

排查了很久,不确定是模型注册集成的问题 / 还是vllm(v1)的Prefix Cache这里有问题,有没有遇到过类似问题的朋友指点下排查方向

根据多位用户反馈,在vLLM V1下,启用Prefix Caching(前缀缓存)时,部分多模态模型(如OCR场景)会出现首次推理结果正常、但重复请求时输出异常(如内容被截断、未输出stop token、直到max_tokens才停止)的现象。关闭Prefix Caching后则一切正常。这种问题在Qwen2.5-VL、Qwen3等多模态模型高并发场景下也有类似报告,且与图片内容不同但文本prompt相同时尤为明显。官方和社区均指出,当前Prefix Caching的哈希机制可能未正确区分多模态输入(如图片embedding),导致缓存命中错误,进而输出异常。临时解决方案是通过–no-enable-prefix-caching参数关闭前缀缓存,等待后续vLLM修复多模态下Prefix Caching的支持【详见相关issue】。

此外,vLLM官方文档明确指出,Prefix Caching的哈希应包含多模态输入的唯一标识(如图片hash),否则会混淆不同图片的缓存块,导致推理错误。目前vLLM V1的EncoderCacheManager仅在单请求内缓存多模态encoder输出,尚未支持跨请求共享,因此多模态Prefix Caching仍有局限【详见官方设计说明】【API文档】。建议暂时关闭Prefix Caching,或关注后续vLLM对多模态缓存机制的修复进展。

需要更详细的排查建议或原理分析吗?

Sources: