1. VLM基础与部署概述

大家好,欢迎来到这门课。我是你们这趟旅程的向导。

视觉语言模型,简称 VLM,说白了就是让计算机同时看懂图像和文字。它不像传统 CV 模型只会输出“猫”或“狗”这样的标签,而是能理解图片里的内容,并用自然语言跟你对话。

举个例子,你给它一张厨房的照片,它不仅能认出“有个苹果”,还能告诉你“苹果放在灶台上,旁边有一把刀”。这种能力,在自动驾驶、工业质检、医疗影像分析里都特别有用。

1.1 什么是视觉语言模型

VLM 的核心,是把图像和文本映射到同一个语义空间里。这样模型就能计算“一张猫的图片”和“一只可爱的猫”这两个概念有多接近。

我个人习惯把 VLM 分成三类:

  • 双塔模型:图像和文本各自独立编码,最后算相似度。代表作是 CLIP。
  • 融合模型:图像特征和文本特征在中间层就交互了。BLIP 就是典型。
  • 生成式模型:以图像为输入,直接生成文本描述。LLaVA 走的就是这条路。

关键认知:VLM 不是简单的“图像分类 + 文本生成”,而是两种模态的对齐与交互。这个区别决定了部署时的优化方向完全不同。

1.2 典型架构速览

CLIP —— 双塔对比学习

CLIP 是 在 2021 年发布的。它用 4 亿对图文数据训练,核心思想很简单:把图片和对应的文本拉近,把不相关的推远。

部署时 CLIP 有两个独立的编码器。我在项目中遇到过一个问题:图像编码器用 ResNet 或 ViT,文本编码器用 Transformer。这两个模型大小不一样,显存分配要特别小心。

# CLIP 推理伪代码
image_features = image_encoder(image)  # [batch, 512]
text_features = text_encoder(text)      # [batch, 512]
# 归一化后算余弦相似度
similarity = cosine_similarity(image_features, text_features)

BLIP —— 多任务融合

BLIP 比 CLIP 更进一步。它不光做对比学习,还加了图文匹配和语言建模两个任务。说白了,BLIP 既能理解图文关系,也能生成描述。

部署 BLIP 时要注意,它有三个损失函数,但推理时通常只用其中一个分支。嗯,这里有个坑:很多人把训练时的完整模型直接拿来部署,白白浪费了显存。

LLaVA —— 视觉指令微调

LLaVA 是 2023 年的工作,它把 CLIP 的视觉编码器和 LLaMA 语言模型连在一起,中间加一个投影层。你想想看,这就像给大语言模型装了一双眼睛。

部署 LLaVA 最大的挑战是模型太大。7B 参数起步,13B 是常态。我曾经在边缘设备上试过,量化到 4-bit 才能勉强跑起来。

我的建议:刚接触 VLM 部署,先从 CLIP 入手。它结构简单,踩坑成本低。等把双塔模型的部署流程跑通了,再挑战 BLIP 和 LLaVA。

1.3 部署面临的三大挑战

把 VLM 从研究搬到生产环境,不是件轻松的事。我总结了三个绕不开的坎:

挑战 原因 典型表现
延迟 双编码器 + 大模型,推理链路长 单次推理 > 500ms,无法实时
显存 视觉编码器 + 语言模型参数巨大 7B 模型 FP16 占用 14GB
精度 量化、剪枝后性能下降明显 CLIP 的 Top-1 准确率掉 3-5%

延迟问题

VLM 的推理流程通常是:图像预处理 → 视觉编码 → 文本编码(或融合)→ 后处理。每一步都在消耗时间。

我记得有一次给客户做实时质检,CLIP 推理一次要 800ms。后来发现是图像预处理用了 CPU,改成 GPU 上的 torchvision 后,直接降到 200ms。

显存瓶颈

显存是部署时最现实的约束。一个 ViT-L 编码器就要 1.2GB,加上 7B 的语言模型,FP16 下总共超过 15GB。消费级显卡根本扛不住。

我曾经在 T4 显卡(16GB)上部署 LLaVA-7B,量化到 8-bit 后勉强能跑,但 batch size 只能设为 1。生产环境里,这吞吐量完全不够用。

避坑指南:不要盲目追求大模型。我曾经为了“效果更好”选了 13B 的 LLaVA,结果延迟和显存双双超标,最后不得不回退到 7B 版本。选模型时,先定好延迟和显存的硬约束,再挑效果最好的。

精度损失

为了降低延迟和显存,我们通常会做量化、剪枝或蒸馏。但这些操作会带来精度损失。

CLIP 模型对量化特别敏感。我试过把 ViT 编码器量化到 INT8,ImageNet 上的 Top-1 准确率从 76.2% 掉到了 72.8%。后来改用混合精度,只量化 attention 层,才把损失控制在 1% 以内。

1.4 VLM 部署知识体系

下面这张图,是我梳理的 VLM 部署核心知识结构。你可以把它当成这门课的地图。

VLM 部署知识体系 VLM 高效部署 模型选型 推理优化 部署框架 CLIP / BLIP / LLaVA 参数量权衡 任务适配性 量化 (INT8/FP8) 算子融合 KV-Cache 优化 TensorRT / ONNX vLLM / TGI 边缘端部署 核心目标:在延迟、显存、精度三者之间找到最佳平衡点 每类模型、每种优化手段都有 trade-off,没有银弹

这张图把 VLM 部署拆成了三个维度:模型选型、推理优化、部署框架。每个维度下面又有具体的子方向。这门课会沿着这个结构,一章一章地展开。

学习建议:别急着上手调代码。先把这张图里的每个节点搞明白是干什么的。我见过太多人一上来就量化模型,结果连模型结构都没搞清楚,出了问题根本不知道从哪排查。

好了,第一章就到这里。我们先把基础打牢,后面每一章都会围绕这张图里的一个具体方向深入。准备好了吗?