【大模型】多模态大模型(VLM)全景图:图像到底怎么喂给 LLM?|从 NLP 到 VLM 专栏①
多模态大模型VLM全景图图像到底怎么喂给 LLM从 NLP 到 VLM 专栏①一句话讲透 VLM把图像编码成「另一种语言的 token」再让 LLM 去对齐。这就是多模态大模型的全部魔法。写在前面具备 Transformer 与 LLM 基础的读者在阅读 LLaVA、Qwen-VL、InternVL 等论文时常有似懂非懂的困扰——能看懂每一步操作却难以串成完整的心智模型。本专栏正是面向这一群体。这里不再重复 Transformer 与注意力机制转而补齐缺失的拼图视觉侧 跨模态桥接 多模态训练 / RL / 评测。每篇遵循「原理 可复现代码」双轨理论可讲透代码可运行。本篇为专栏总纲阅读后可获得✅ 画出任何VLM 的三组件架构✅ 说清一张图片从输入到生成回答的完整数据流✅ 掌握多模态训练比纯 LLM 多出的那个阶段以及为什么✅ 拿到整个专栏的学习路线图知道每一站去哪一、VLM 的标准架构就三个组件绝大多数现代 VLMLLaVA / Qwen-VL / InternVL / MiniGPT-4都能拆成同一副骨架️ 图像H×W×3Vision Encoder 视觉编码器ViT / SigLIP输出 N 个 d_v 维 token frozen 冻结Projector 投影器MLP / Q-Formerd_v → d_h 维度翻译 trainable 可训LLMQwen / Llama⚡ frozen LoRA 文本回答逐个说组件作用常用实现Vision Encoder视觉编码器把图像H×W×3变成N个视觉 token每个是d_v维向量CLIP-ViT-L、SigLIP-SO400MProjector投影器/连接器把视觉特征从d_v维映射到 LLM 的d_h维2 层 MLPLLaVA、Q-FormerBLIP-2LLM语言理解与生成的主干网络Qwen、Llama、Vicuna一个必须刻进脑子里的洞察从 LLM 的视角视觉 token 和文本 token 没有本质区别都是序列里的元素。所谓多模态本质是把图像编码成另一种语言的 token 序列再和文本 token 在序列维度拼接到一起一起送进 LLM。LLM 这个语言大师会自己去对齐这两种语言。理解了这一点后面所有工程问题显存、位置编码、幻觉都有了共同的主线让这堆视觉 token 不爆显存、不丢位置信息、不引入幻觉。二、一张发票图的完整旅程光讲架构太抽象。我们跟着一张真实图片走完它在 VLM 里的完整一生。场景用户在 App 里上传一张发票照片问总营收是多少。以 Qwen2.5-VL-7B 为例时间线如下T0ms · 上传 invoice.jpg2480×3508A4 扫描件T5ms · 预处理缩放到 1280patch 化P14最终约 N2304 个视觉 tokenT10ms · 视觉编码器 SigLIPfrozen(3,H,W) → (2304, 1152) 视觉特征T15ms · M-RoPE 位置编码patch 拿 (h,w) 二维坐标文本退化为 1DT20ms · Projector MLP1152 → 3584维度对齐到 LLM hidden_sizeT25ms · 序列拼接 splice2304 视觉 6 文本 ≈ 2315 tokenT30ms · LLM forward在 2315 token 上跑 causal attentionT200ms · 开始生成总营收为人民币 12,345.67 元。T500ms · 完成配图说明②上图已用 mermaid 渲染为流程图。其中 T30ms 首次 forward 到 T200ms 开始生成就是首 token 延迟TTFT 视觉编码 拼接 首次 forward这是部署优化的关键指标。这趟旅程揭示了 5 件事图像不是 1 个 token是 2304 个——这就是 VLM 推理慢、显存大的根源KV cache 里存着所有视觉 token。冻结的视觉编码器是租来的眼睛——权重在训练开始前就已固定其质量直接决定模型能力上限因此 SigLIP 与 CLIP 之间的替换并非等价操作。Projector 是训练第一阶段唯一要训的部件——它学如何把 SigLIP 的语言翻译给 LLM 听。M-RoPE 不是装饰——没有它总营收三个字无法精准注意到发票上对应的数字区域。首 token 延迟TTFT的来源——这就是部署时 1024×1024 大图 TTFT 可能到 1.5s 的原因。三、训练蓝图三组件 × 三阶段VLM 的训练不是一步到位而是渐进式解冻progressive unfreezing每阶段只训最该训的部分其余冻结。这张表是 LLaVA / InternVL / Qwen-VL 共用的训练蓝图建议背下来训练阶段Vision EncoderProjectorLLM训练目标Stage 1Projector 预训练 冻结唯一可训 冻结学视觉→LLM 维度的翻译Stage 2多模态 SFT 冻结 继续训⚡LoRA学指令对齐、视觉理解Stage 3RLHF / DPO / GRPO 冻结 冻结或微调⚡ LoRA学偏好、抗幻觉读法从左到右是组件从上到下是阶段。每往下一阶段被训练的组件越来越多但 LoRA 让总训练参数始终可控。用 LLaVA-1.5-7B 举例Stage 1约几小时只训 8M 参数的 Projector数据是 558K 图文对。让 Projector 学会把 CLIP 的特征翻译给 Vicuna 听。Stage 2约 1–2 天Projector 继续训LLM 加 LoRAr64约 50M 参数数据是 150K GPT-4V 生成的指令数据。Stage 3约半天通常冻结 Projector只继续训 LLM 的 LoRA数据是 5–50K 偏好对目的就是减少幻觉。一个好记的类比把训练 VLM 想象成教小孩认字组件类比Vision Encoder字典已编好直接用Projector拼音桥梁Stage 1 学字形→发音LLM大脑Stage 2 学基于发音理解含义RL礼仪训练Stage 3 学何时该说不知道不能一开始就让大脑学礼仪——拼音都还没学会。这就是为什么不能一上来就同时训 Projector LLMProjector 还是随机的LLM 收到的是噪声视觉 token两个一起晃动很难收敛。对比纯 LLMLLM 训练是 Pretrain → SFT → RLHF 三阶段VLM多了 Stage 1Projector 预训练——多出来的就是教 LLM听懂视觉这门外语。这也是为什么 Projector 是 VLM 唯一从零训练的组件。四、多模态 vs NLP差异对照专栏导航图下表梳理了后续学习的关键差异点可视作整个专栏的导航图——每一行都对应一篇文章展开维度纯 LLM多模态 LLM对应文章输入1D token 序列文本 token 视觉 token仍 1D 拼接本篇TokenizationBPE / SentencePiece 图像 patch 切分② 视觉基础位置编码1D-RoPE→ 2D-RoPE →M-RoPE④ 对齐机制分辨率固定 ctx length动态分辨率AnyRes / Tile④ 对齐机制数据文本 pairs / 指令图文对 指令 偏好数据⑤ 训练 Pipeline训练阶段3 阶段多 1 个 Projector 预训练⑤ 训练 Pipeline评测MMLU/HumanEvalMMBench/MMMU/DocVQA⑦ 评测部署显存瓶颈KV cache视觉 token 数 × LLM 隐藏层全程幻觉有但可控严重得多会看到不存在的东西⑥ 多模态 RL记住这条因果链它贯穿整个专栏高分辨率 → 视觉 token 多 → 显存 / 位置 / 数据全要适配所有现代 VLM 的工程优化Q-Former 压缩、Tile 切分、M-RoPE、动态 patch本质上都在解决它。五、专栏路线图#主题阶段产出状态①总纲VLM 全景图本篇完整心智模型✅ 已发②视觉基础ViT / CLIP / SigLIP手写 CLIP✅ 已发③张量级端到端 walkthrough跑通零依赖 demo✅ 已发④对齐机制上Projector 与 token layoutMLP vs Q-Former✅ 已发⑤对齐机制下M-RoPE 与动态分辨率M-RoPE demo✅ 已发⑥训练 PipelineLoRA SFT 全流程文档领域 VLM✅ 已发⑦多模态 RLDPO GRPO抗幻觉 VLM✅ 已发⑧评测与部署lmms-eval SGLang可服务模型✅ 已发⑨前沿方向Early Fusion—✅ 已发硬件基准单卡 A100 80GB40GB 可降级到 QLoRA 3B 模型。实战领域文档理解。建议节奏为每周 1–2 篇按顺序推进完整跟下来即可具备独立研发垂直领域 VLM 的能力。5 条避坑提醒不要把图像当一个特殊 token。它是几十到几千个 token 组成的子序列必须严格保持顺序。图像预处理是训练的一部分。同样的权重resize 策略变了效果就崩。务必保存预处理参数。数据 算法 模型。多模态尤其如此ShareGPT4V 这类数据质量直接决定 SFT 效果。评测不能用文本 benchmark。MMMU、DocVQA 这些是地面真相跑通是基本功。先 check 显存再 check loss。视觉 token 一多OOM 比 nan 出现得早。 本专栏代码本专栏所有可运行代码托管于 GitHubmulti_large_model。code/目录按阶段组织01_vision/02_alignment/03_sft/04_rl/05_eval_deploy包含多个零依赖纯 Python demo——手写 CLIP、张量 walkthrough、M-RoPE、显存计算器、DPO/GRPO 手算等复制即可运行博客正文嵌入的运行输出均可由对应 demo 复现。后续每篇末尾会列出该篇涉及的代码文件。写在最后下一篇我们会动手从零手写 CLIP纯 Python 可复现把对比学习对齐图文这件事彻底讲透。关注专栏更新第一时间通知。专栏《从 NLP 到 VLM多模态大模型研发实战》