你可能遇到过这种情况:模型能看图,但一让它数图里有几个人、读小字就出错,或者同一张图问两遍答案不一样。这篇不讲玄学,从多模态的编码、对齐、融合讲到训练与推理各环节,把每个环节容易出问题的点摊开,并给你一套自己就能跑的验证动作,帮你判断问题出在模型本身还是你的用法上。
你可能遇到过这种情况:模型能看图,但一让它数图里有几个人、读小字就出错,或者同一张图问两遍答案不一样。这篇不讲玄学,从多模态的编码、对齐、融合讲到训练与推理各环节,把每个环节容易出问题的点摊开,并给你一套自己就能跑的验证动作,帮你判断问题出在模型本身还是你的用法上。
先说明这篇的定位:它是给技术入门者看的实现向梳理,不是产品选型指南。每个环节只讲两件事——它在做什么、坏了会表现成什么样。凡是涉及具体价格、跑分、模型版本这些东西,本文一律不给数字,你到站内对应页面看当时的数字即可。
先分清「多模态」到底指什么
很多人的理解是「接口能传图片就算多模态」,这不对。真正的多模态,是模型内部存在图像、文本各自独立的编码通道,最后汇到同一个表示空间里做联合推理。如果只是先把图转成一段描述文字、再当纯文本喂进去,那本质还是文本模型,图的细节在一次转述里就丢光了。
- 图文理解
- 输入图加文字,输出文字,比如问答、描述、定位,难点在空间关系和细节保留
- 图文生成
- 输入文字出图,难点在可控性和一致性,和上面那条是两条技术路线
- 语音+文本
- 时序对齐是关键,和图像切块的思路完全不同,别套用同一套调参经验
- 视频+文本
- 多了时间维度,帧采样策略直接决定模型能不能看懂先后顺序
判断一个模型是不是真多模态,最省事的办法是让它做需要图和字联合推理的题:比如「左边那个红色物体和右边第三个物体相比,哪个更大」。如果它只会泛泛描述整张图,说明联合推理这一层很弱。什么情况下不适用这个判断:如果你只做单轮图片分类或固定模板描述,普通视觉模型加规则反而更省成本和更稳定,不需要上大模型。
编码器与「图怎么变成 token」
图像进入模型的第一步是切块:把图切成若干小片,每片编码成一个向量,再投影成语言模型能吃的 token。这一步是整个链路里最影响细节的地方。切块粒度粗,小字和细线条直接糊掉;粒度细,token 数量暴涨,成本和延迟跟着涨。
- 分辨率越高,产生的视觉 token 越多,这就是同一张图在不同平台消耗差异巨大的主要原因
- 文字部分走原本的分词流程,两类 token 在序列里混排,模型靠位置信息区分谁是谁
- 有些实现会把相邻块做合并压缩,能省 token,代价是空间精度下降
- 多图输入时,每张图各自编码,上下文里塞的是拼接后的长序列,很容易顶到上限
验证动作很简单:把同一张图缩到几档不同尺寸,分别问同一道细节题,看从哪一档开始答错。这个临界点就是你的任务在这个模型上的有效分辨率下限,低于它的图别指望能读准。注意这个下限因任务而异,读大字和读小票号完全不是一回事,不要拿一个任务的结果去推另一个。
对齐训练:让图和字说同一种话
对齐的核心目标,是让「猫」这个文本向量和猫的图片向量在表示空间里靠近。常用做法是用成对的图文数据做对比学习,让匹配的图文对距离近、不匹配的距离远。但光有对比学习不够,模型只知道图和字相关,不知道你问它的时候该怎么答。
所以还要有指令微调阶段,用「描述这张图」「指出图中的某个物体」「比较这两张图」这类带指令的样本,教模型按提问方式去组织回答。这两个阶段缺一个都会出问题:只有对比学习,模型答非所问;只有指令微调,模型容易看着图说瞎话。
| 现象 | 大概率原因 | 先做什么 |
|---|---|---|
| 描述得笼统但没错 | 指令数据偏泛化描述 | 换成需要定位或比较的问法再试 |
| 细节全错、像在编 | 图文对质量差或对不齐 | 换更清晰的图,确认问题是否跟图走 |
| 对图完全无视 | 图没真正进上下文 | 先排查传输格式和位置指定 |
| 同一图两次不一致 | 采样温度偏高 | 降低温度后重复跑几轮看稳定率 |
什么情况下不适用这套思路:如果你的任务只是从票据里抽固定字段,专门训一个小模型或者用现成 OCR 加规则校验,往往比通用多模态更稳也更可控。通用模型的优势在开放描述和粗粒度理解,不在精确数值读取。
融合方式:早融合还是晚融合
融合方式决定视觉信息和文本信息在什么深度上开始交互。晚融合是把视觉编码的结果当成额外上下文塞进语言模型,实现简单、工程上好落地,但细粒度的空间关系和指代容易丢。早融合是在中间层就让两边交互,空间和指代理解更强,代价是训练和显存开销明显更高。
- 把视觉特征作为前缀拼在文本前面,接法简单,适合图文问答类任务
- 用交叉注意力让文本层去查视觉特征,表达能力更强,显存压力也更大
- 把视觉特征当成键值缓存的一部分,长图和多图的处理会更依赖缓存管理
- 架构名词本身不说明问题,实际表现要看它在多图比较和图上定位任务上的稳定性
选型时别被架构名词带跑,直接拿你的真实任务去测两类能力:一是多图之间的比较,二是需要在图上定位具体位置。这两项过不了,架构再漂亮也救不了你的场景。反过来,如果你的任务只是整图级别的粗判断,晚融合往往够用,没必要为用不上的能力付开销。
推理时算力和显存花在哪
多模态推理的开销分两段:图像编码是一次前向计算,文本生成是逐 token 解码。很多人只看总延迟,结果压测时误判瓶颈。并发上量的时候,卡住的常常是编码阶段而不是生成阶段,因为编码是一次性的大计算,生成是细水长流。
另外视觉 token 会挤占上下文窗口。同样长度的问题,带图比纯文本消耗更多显存和算力,多图或高分辨率图会让编码开销成倍增长。具体到你的卡能跑多少并发、显存够不够,到站内 /compute/sizing 按模型和量化方式算一遍,别凭感觉估。那里给的是当时的参数口径,算的时候注意你的输入分辨率和图数量要对得上。
| 变量 | 调大之后 | 你要盯的指标 |
|---|---|---|
| 输入分辨率 | 视觉 token 变多,编码变重 | 首字延迟、显存峰值 |
| 图片张数 | 上下文被挤占,序列变长 | 单请求总耗时、并发上限 |
| 输出长度 | 解码阶段变长,编码不变 | 吞吐、每 token 耗时 |
| 并发数 | 编码阶段先饱和 | 排队时间、错误率 |
常见失效模式与快速定位
多模态出问题,大多数不是「模型不行」,而是链路里某个环节没走通。下面按排查顺序列一遍,从最便宜的检查开始,别一上来就换模型。
- 确认图真的进去了用一张纯色或用文字水印明显的图测试,如果模型描述不出任何图内信息,说明图根本没进上下文,先查传输格式和位置指定。
- 查分辨率是否够把同一张图放大到更高分辨率再问同一道细节题,如果答对了,问题就在有效分辨率,不在模型能力。
- 看提示结构确认问题和图片的先后顺序、以及你有没有明确要求它看哪一部分,顺序不合理时模型容易忽略图。
- 固定采样参数复跑多模态任务通常更适合低温度,先固定温度重复跑几轮,看是稳定错还是随机错,两者结论完全不同。
- 最后才换模型前面几步都排除之后,再拿同一组题去换模型对比,这样你换来的结论才站得住。
这套顺序的价值在于成本递增:前两步几乎不花钱,最后一步最贵。很多人反过来做,先换模型,结果换完还是一样,因为根因在分辨率或格式上。
自己动手验证的清单
要判断一个多模态模型适不适合你的任务,靠单次体验没意义。你需要一组固定的测试图和一组成绩记录,才能看出稳定性和边界。
- 准备一组固定测试图:含小字、含多物体、含表格、含容易混淆的相似物
- 每张图设计三类问题:描述类、计数或定位类、需要跨图比较的推理类,分开统计对错
- 固定温度和其他采样参数,同一组题重复跑几轮,看稳定率而不是单次结果
- 换模型或换参数时只改一个变量,记录分辨率、token 消耗和正确率的对照
- 注意题目和你自己的任务是否同源,别人评测里考得好不代表你的场景也好
要横向看各家表现,到站内 /multimodal 对照当时的评测口径。重点是看清评测里用的是什么题、什么分辨率、什么问法,再决定这个结论能不能迁移到你的任务上。口径不同就直接比名次,是最容易踩的坑。
什么时候不该上多模态大模型
多模态不是万能入口,下面这几种情况,用更专的工具往往更划算。
- 只需要从票据里抽固定字段,专用 OCR 加规则校验通常更便宜也更可控
- 对延迟极敏感的实时场景,视觉编码这一段开销可能直接压垮预算,要先量再决定
- 涉及敏感图像时,走本地部署还是调接口要按合规要求判断,参考站内 /safety 的现有梳理
- 需要高精度数值读取的场景,多模态擅长开放描述和粗粒度理解,不擅长精确数字
- 任务本身是单轮分类,用视觉模型加阈值规则比通用大模型更稳定也更省资源
这几种情况有个共同点:任务边界清晰、答案可枚举。边界越清晰,专用方案的优势越大;反过来,任务越开放、问法越自由,多模态大模型的价值才越明显。判断标准就是这一条,别被「支持多模态」这个标签左右。
多模态出问题,先怀疑链路,再怀疑用法,最后才怀疑模型。下一步把你手上的实际任务按上面那组测试图跑一遍,拿到自己的稳定率数据,再决定选型和调参方向;需要横向对照时,去站内评测页核对当时的数字和口径。→
常见问题
多模态大模型和普通大模型最本质的区别是什么?
普通大模型只有一套文本切词和编码流程;多模态模型额外有一套把图像(或音频、视频)切成单元再编码的通道,并且要训练这两套表示在同一空间里对齐。差别不在「能不能传图」,而在模型内部有没有真正对图做理解的那部分结构。
为什么同一个模型,我传高清图和压缩图答案差很多?
图像会被切成固定数量的块再编码,分辨率越高,保留的细节越多,但产生的视觉 token 也越多。压缩过度时小字和细纹理在切块阶段就丢了,后面再强的语言模型也补不回来。做细节任务前,先用几档尺寸试出你的有效下限。
要自己训一个多模态模型,最小的起步路径是什么?
通常是拿一个已经对齐好的开源多模态基座,冻结视觉编码部分,只用自己的图文数据做轻量微调,重点在数据配比和标注质量。完整从零训练两套编码器加对齐,算力门槛很高,入门阶段不建议。算力和显存估算可以用 /compute/sizing 先粗算一遍。
怎么判断模型答错是能力问题还是我用法有问题?
按顺序排除:先确认图片确实被接口读进去了,再看分辨率够不够,再看提示里图和问题的顺序与措辞,最后固定采样参数重复跑。四步里任何一步没排除就换模型,很容易白花钱——新模型可能栽在同一个坑里。
多模态模型能不能替代 OCR 做文字提取?
看场景。开放版式、字迹潦草、需要结合上下文判断的,多模态往往更省事;版式固定、要求逐字准确的票据和证件,专用 OCR 加校验规则更稳,成本也更低。两者可以串起来用,让多模态做兜底和纠错。