CogVLM 论文解读:17B参数干翻55B,视觉专家模块才是真功夫
CogVLM: Visual Expert for Pretrained Language Models Wenyi Hong, Weihan Wang, Qingsong Lv, Jiazheng Xu, et al.(清华大学KEG实验室 + 智谱AI) 发表于 NeurIPS 2024
说实话,2023年底多模态圈子卷得飞起,大家都在想怎么把”看图”和”说话”这两件事缝合到一起。CogVLM的回答特别暴力——别缝合了,我直接在语言模型的每一层里塞一个”视觉专家”进去。结果呢?17B参数,14项评测拿了10个SOTA,把谷歌55B的PaLI-X按在地上摩擦。这篇论文,值得每个做多模态的人反复读三遍。
一、背景:多模态模型的”缝合焦虑”
2023年那会儿,多模态大模型的设计思路基本就两条路:
第一条,浅层融合(Shallow Fusion)。把图像编码器输出的特征往语言模型前面一丢,加个适配器(Adapter)对齐一下维度,完事。代表选手:LLaVA、MiniGPT-4。优点是简单,缺点是视觉信息到了深层就被语言特征”稀释”了——你想想,一张图的信息就靠前面几层处理,后面几十层全是语言模型在”自说自话”,这能好吗?
第二条,交叉注意力(Cross-Attention)。在语言模型里插入额外的交叉注意力层,让文本token去”查询”视觉特征。代表选手:Flamingo。这条路理论上更优雅,但问题是——你得改架构、加参数、重新训练,工程代价巨大,而且交叉注意力的计算开销不是闹着玩的。
CogVLM说:我两条路都不走。我要走第三条路。
二、核心创新:Visual Expert,每层楼都住一个”眼科医生”
CogVLM最核心的贡献,就是提出了视觉专家模块(Visual Expert)。
这个设计思路特别直觉:既然视觉信息和语言信息在”思维方式”上根本不同,那为什么非要让它们共享同一套参数?
具体做法是这样的:在预训练语言模型(Vicuna-7B-v1.5)的每一个Transformer层里,额外插入一套独立的参数:
- Attention部分:给视觉token单独配一组Q、K、V投影矩阵。也就是说,视觉token在做自注意力的时候,用的是自己专属的”眼镜”去看世界,而不是跟语言token挤同一副眼镜。
- FFN部分:同样,给视觉token配一个独立的前馈网络(MLP)。语言token走原来的FFN,视觉token走自己的FFN。
打个比方:一栋32层的办公楼(32层Transformer),以前所有人(视觉token和语言token)挤在同一个工位上干活。现在CogVLM说,每一层我都隔出一间独立办公室,专门给”视觉部门”用,配独立的电脑(QKV矩阵)和独立的文件柜(FFN)。两个部门在走廊里能交流(共享注意力计算),但干活工具是各用各的。
这个设计有几个妙处:
第一,深层对齐。 视觉信息不再只在前几层被处理,而是在每一层都有专门的参数来”消化”它。这就像你学英语,不是背完单词就完了,而是每一篇课文、每一次对话都在强化语感。
第二,不破坏语言能力。 语言模型的原始参数完全不动,视觉专家是”增量式”插入的。这意味着CogVLM的纯文本能力不会退化——你让它写诗、做数学,它照样行。
第三,参数效率。 听起来每层都加参数很奢侈?实际上视觉专家只占总参数的一小部分。整个模型17B参数里,视觉编码器占11B,语言模型7B,视觉专家模块的增量参数相对可控。
三、整体架构:三大件的精密配合
CogVLM的完整架构由三个核心组件构成:
1. 视觉编码器(Visual Encoder):EVA2-CLIP-E
这是一个基于ViT(Vision Transformer)的巨型视觉编码器,参数量约11B。它负责把输入图像切成patch,编码成一系列视觉token。EVA2-CLIP-E在CLIP框架上做了大规模掩码图像建模(MIM)预训练,视觉表征能力极强。
2. 视觉语言适配器(Vision-Language Adapter)
视觉编码器输出的特征维度跟语言模型不匹配,需要一个适配器做”翻译”。CogVLM用的是一个相对轻量的线性投影层,把视觉特征映射到语言模型的嵌入空间。
3. 带视觉专家的语言模型(LLM with Visual Expert)
基座是Vicuna-7B-v1.5(LLaMA的微调版本),然后在每一层插入Visual Expert模块。最终语言模型部分约7B参数。
三者加起来,总参数量约17B(视觉编码器11B + 语言侧约6-7B)。
四、训练策略:两阶段,先对齐再融合
CogVLM的训练分两个阶段,思路非常清晰:
阶段一:视觉-语言对齐预训练(Alignment Pretraining)
- 数据:约15亿图文对(1.5 billion image-text pairs),规模相当恐怖
- 目标:让视觉编码器的输出和语言模型的输入空间对齐
- 训练方式:主要训练适配器和视觉专家模块,视觉编码器和语言模型大部分参数冻结
- 任务:图文匹配、图像描述生成等
这一步的本质是”让两个说不同语言的人先学会对方的基本词汇”。
阶段二:端到端微调(End-to-End Fine-tuning)
- 数据:高质量的多模态指令数据
- 目标:让模型学会按照指令完成各种视觉理解任务
- 训练方式:解冻更多参数,端到端优化
- 任务:VQA、图像描述、视觉推理、视觉定位等
这一步是”让两个人不仅能对话,还能一起完成复杂项目”。
五、性能:14项评测,10项第一,这不是运气
CogVLM在14个主流多模态基准测试上的表现:
- 10项SOTA(State-of-the-Art):包括VQAv2、GQA、VizWiz、SQA、TextVQA、POPE、MME、MM-Bench等
- 4项次席:仅次于当时最强的闭源模型
最震撼的对比:CogVLM(17B)在多个任务上超越或持平PaLI-X(55B)。参数量只有人家的三分之一,性能反而更强。
这说明什么?说明架构设计比暴力堆参数重要得多。你谷歌用55B参数硬怼出来的性能,我清华用一个精巧的Visual Expert模块就追平甚至超越了。
特别是在需要深层视觉理解的任务上(比如TextVQA需要识别图中文字、VizWiz需要理解复杂场景),CogVLM的优势更加明显。这恰恰验证了Visual Expert”每层都做视觉处理”的设计哲学。
六、为什么Visual Expert能work?一点技术分析
我觉得Visual Expert成功的原因有三个层面:
信息论层面:视觉信息和语言信息的分布差异巨大。图像patch的语义密度、空间关系、纹理特征,跟文本token的序列依赖、语法结构完全是两码事。强行共享参数,等于逼一套参数同时拟合两种截然不同的分布,必然有损。
梯度层面:如果视觉和语言共享参数,反向传播时两种梯度会”打架”。视觉任务需要的参数更新方向,可能恰好损害语言能力。独立参数避免了这种梯度冲突。
表达力层面:每层都有独立的视觉处理通道,等于给模型增加了一条”视觉高速公路”。视觉信息可以从第一层一直”专线”处理到最后一层,不用在中间被语言特征淹没。
七、局限性与后续影响
当然,CogVLM也不是完美的:
- 视觉编码器11B参数太大了,推理成本高
- 图像分辨率受限于EVA2-CLIP-E的输入尺寸(224×224),对细粒度理解有瓶颈
- 不支持视频理解
- 中文能力相对英文偏弱(毕竟基座是Vicuna)
但它的影响是深远的。Visual Expert这个架构思想被后续CogVLM2、CogAgent等模型直接继承,成了智谱AI多模态技术栈的”祖传架构”。更重要的是,它给整个社区指了一个方向:多模态融合的关键不在于”在哪里接”,而在于”融合多深”。
收尾:我的一点看法
第一,CogVLM是我心目中2023年最优雅的开源多模态工作。不是因为它性能最强(那个位置属于闭源模型),而是因为它用一个极其简洁的设计思想——“每层加个专家”——就解决了一个困扰社区很久的问题。这种”四两拨千斤”的工作,比堆100B参数的暴力美学高级太多了。
第二,15亿图文对的预训练数据量说明一个残酷事实:好的架构设计能降低参数需求,但降不了数据需求。你设计再精巧,没有海量高质量数据喂着,也白搭。这也是为什么大厂做这个有天然优势。
第三,Visual Expert的思想其实跟MoE(Mixture of Experts)有异曲同工之妙——都是”不同的输入走不同的参数”。只不过MoE是动态路由,Visual Expert是静态路由(看你是视觉token还是语言token)。我甚至觉得,未来可以把这两者结合起来:视觉token内部也做MoE,不同类型的视觉信息走不同的专家。
第四,从工程角度看,CogVLM的”增量式”设计对产业界特别友好。你有一个训好的语言模型,不用推倒重来,只要”插”进去视觉专家模块就行。这大大降低了多模态化的门槛。
第五,回头看,CogVLM是智谱AI”Cog系列”多模态帝国的奠基之作。没有它,就没有后来的CogVLM2、CogAgent、CogVideo。一个好的架构选择,真的能吃好几代红利。
附:核心数据速查
| 指标 | 数值 |
|---|---|
| 总参数量 | ~17B |
| 视觉编码器参数 | ~11B(EVA2-CLIP-E) |
| 语言模型参数 | ~7B(Vicuna-7B-v1.5) |
| 预训练图文对 | ~15亿(1.5B) |
| 训练阶段 | 2阶段(对齐 + 端到端微调) |
| 评测基准数 | 14项 |
| SOTA数量 | 10项 |
| 次席数量 | 4项 |
| 对比标杆 | PaLI-X 55B(超越/持平) |
| 发表会议 | NeurIPS 2024 |
| 输入分辨率 | 224×224 |
| 开源协议 | 可商用 |
关键概念清单
| 术语 | 英文 | 解释 |
|---|---|---|
| 视觉专家模块 | Visual Expert | 在Transformer每层为视觉token插入的独立QKV矩阵和FFN,实现深层视觉处理 |
| 视觉编码器 | Visual Encoder | 将图像编码为token序列的模型,CogVLM使用EVA2-CLIP-E |
| 适配器 | Adapter | 连接视觉编码器和语言模型的投影层,对齐特征空间 |
| 浅层融合 | Shallow Fusion | 仅在输入层拼接视觉和语言特征的做法 |
| 交叉注意力 | Cross-Attention | 让一种模态的token查询另一种模态特征的注意力机制 |
| 掩码图像建模 | Masked Image Modeling (MIM) | 遮住图像部分区域让模型预测的自监督预训练方法 |
| 视觉问答 | Visual Question Answering (VQA) | 给定图像和问题,模型生成答案的任务 |
| 端到端微调 | End-to-End Fine-tuning | 解冻所有参数联合优化的训练方式 |
| 图文对齐 | Image-Text Alignment | 让视觉特征和语言特征在统一空间中可比较 |
| 前馈网络 | Feed-Forward Network (FFN) | Transformer中注意力层之后的全连接层 |
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时





