在多模态大模型(如 LLaVA、Qwen‑VL)中,通常的做法是冻结预训练好的视觉编码器和语言模型(LLM),只训练一个轻量的投影层(Projector)来对齐两个模态。这样做既能完整保留原有模型的强大能力,又能极大降低训练成本。本文通过一个核心代码不足 200 行的极简示例,完整演示了“冻结编码器与 LLM、只训练投影层”的训练框架。虽然网络规模极小(视觉维度仅 32,LLM 维度仅 64),但它清晰展示了:如何将视觉特征转换为 LLM 能理解的嵌入序列;如何拼接多模态输入,并正确处理位置编码与注意力掩码;如何在损失计算中屏蔽非文本 token;如何实现推理生成。示例具体配置如下,手把手带你搭建一个多模态语言模型:视觉编码器:CLIPVisionModel(输入 32×32 图像,patch=8,输出 17 个视觉 token,维度=32)语言模型:Qwen2ForCausalLM(隐藏维 64,2 层,词表大小 1000)投影层:MLP(32 → 64)1 视觉编码器:CLIPVisionModelvcfg=CLIPVisionCo