新上8卡RTX 5090 限时特惠 Read more

多模态推理的显存暗坑:视觉编码器吃多少、什么时候该拆出去 - 云数方舟

多模态推理的显存暗坑:视觉编码器吃多少、什么时候该拆出去

纯文本推理 7B 模型 14G 显存跑得好好的,换成 Qwen2-VL-7B 直接 OOM——多出来的 8-12G 被视觉编码器吃了。

显存拆解

  • LLM 主体(7B):~14G(FP16)
  • ViT 视觉编码器(SigLIP 级):~6-8G
  • 投影层 + 多模态融合:~2-4G
  • 合计:22-26G,24G 卡刚好卡线

什么时候该拆

纯文本请求占比 >30%:拆。视觉编码器只在有图片时才需要,但默认和 LLM 绑一起,纯文本请求也占着那 8G 显存。

拆法:ViT 单独起一个进程/容器,输出 embedding 向量传给 LLM:

# ViT 服务(卡1)
CUDA_VISIBLE_DEVICES=1 python vit_server.py --model SigLIP \
  --port 9000 --batch-size 4

# LLM 服务(卡0)
CUDA_VISIBLE_DEVICES=0 vllm serve Qwen2-7B \
  --port 8000

# 网关层:有图片先调 ViT 拿 embedding,再塞进 LLM prompt

什么时候不拆

  • 图片请求占比 >70%:ViT 常驻划算,拆了反而多一跳网络延迟
  • 并发低:单卡 32G(5090)能塞下整套,不折腾
  • 延迟敏感:多一跳 ViT 推理 + 网络传输,首字延迟多 200-500ms

实测对比(Qwen2-VL-7B,4090 24G)

  • 不拆:单卡能跑,但 KV Cache 只剩 2-4G,长文本直接 OOM
  • 拆 ViT 到第二张卡:LLM 独占 24G,KV Cache 充裕,并发翻倍
  • 拆到 CPU(ONNX):延迟 +800ms,只适合离线批处理

多模态推理部署:云数方舟 GPU 多卡节点

云数方舟
  • contact@globaldc.cn