多模态ai (multimodal ai)的技术

模型与算力

给非算法读者讲清多模态 AI 的融合思路:模态怎么编码、在哪儿对齐、拼接与交叉注意的取舍,以及怎么按任务和成本做选择。

你可能遇到过这种事:模型能看图能读字,但一让它比较两张票据、或者按图里的表格算数,就开始胡说;换一个模型好像又行了,可你并不知道为什么。这篇不讲公式,只讲多模态模型内部是怎么把图像、文字、语音拼到一起的,融合发生在哪一层,各自擅长什么、什么时候会失灵。看完你能对着一个多模态模型的说明,判断它适合接哪类活、该在提示里补什么。

你大概碰到过这种事:模型能看图能读字,单独用都还行,可一让它比较两张票据、或者照着图里的表格算个数,它就开始胡说;换个模型好像又能用了,但你也说不清为什么。问题往往不在「它够不够聪明」,而在它内部到底把图像和文字放在哪一层一起算。

这篇不讲公式,只讲多模态模型是怎么把几路信号拼到一起的:在哪一步编码、在哪儿对齐、融合点靠前还是靠后,各自擅长什么、什么时候会失灵。看完你能对着一个模型的说明文档,判断它适合接哪类活、该在提示里补什么、什么时候该换思路而不是换模型。

先把「多模态」拆开:模态、编码器、融合点

先说清楚术语,不然下面没法聊。「模态」就是信号的类型,图像、文本、音频、视频各算一路。很多产品宣传的「支持多模态」,实际意思只是「能传图片进去」,这跟模型内部真的把两路信号放到同一个表示空间里做计算,是两回事,差距很大。

模态
输入输出信号的类型,图片、文字、语音、视频各算一路,能传图不等于会融合
编码器
把某一路原始信号压成一串向量的模块,图像切块、音频切帧、文本切 token 都在这步
表示空间
各路编码结果要落到同一套坐标系里,模型才有可能比较和推理不同模态
融合点
两路信号第一次在模型内部相遇的那一层,靠前还是靠后,决定了它能做什么

对非算法读者来说,有个特别好用的判断句:这个模型是在同一层里同时看两路信号,还是先各自看完再合并?前者叫早期或中期融合,后者叫晚期融合。你不需要知道每一层的名字,只要抓住这个分界,就能大致预判它在跨模态任务上的表现上限。

早期融合、晚期融合、交叉注意:三种串法的直观差别

把三种思路想成三个人合作办事,差别就很好理解了。早期融合是三个人一上来就坐同一张桌子,边看边商量;晚期融合是各干各的,干完把结论交上来投票;交叉注意是中间开几次会对齐信息。桌子的位置不同,适合的活也不同。

融合方式信息交互深度工程代价典型适用场景
早期融合最深,进来就一起算高,换任一编码器都要重训模态强相关、配对数据充足的任务
交叉注意较深,中间层互相查询中,骨干可复用图文问答、跨图比较这类推理活
晚期融合浅,各跑各的最后合并低,单路模型随时替换图文各判一次再投票的判断型任务
  • 早期融合交互最充分,但训练数据要求高,任一编码器换代都得重来,小团队慎选
  • 交叉注意是当前主流折中:文本 token 去查询图像特征,或反过来,够深又不必重训整个骨干
  • 晚期融合工程上最省事,适合「OCR 取字 + 规则判断」这种组合,但跨模态的细节关联会丢
  • 什么情况不适用:任务本身不需要跨模态推理时,比如单纯从图里取文字,上复杂融合纯属浪费
  • 判断标准:如果你的活是「先分别判断再汇总」,晚期融合足够;如果是「看图里的细节再推理」,就要往交叉注意那边靠

注意这里没有绝对优劣,只有匹配不匹配。见过不少团队在纯识别任务上死磕融合架构,折腾半天不如把 OCR 那条路走顺。先问清楚任务需不需要跨模态推理,再决定架构,顺序反了就是白费功夫。

图文怎么「对上」:对比学习与对齐数据从哪来

模型怎么知道这段文字说的就是这张图的哪个部分?常见做法是配对训练:把匹配的图文向量拉近,不匹配的推远,久而久之它学会「这段话大概对应这张图的某块区域」。这一步是粗粒度的整体匹配,不是精确定位。

关键在于对齐数据的覆盖度。图表、票据、手写、界面截图这类结构化或低质量图像,在通用配对数据里占比往往不高。所以模型对日常照片描述得挺准,一遇到表格里的小字就开始飘,这不是模型「变笨了」,而是这类图在训练里见得少。

  • 粗粒度对齐只管整体匹配,细粒度定位要靠区域级标注或更细的监督,只做整图对齐的模型问坐标就容易答偏
  • 自查动作:拿同一张图,先问整体描述,再问局部读数,前者流畅后者崩,多半是对齐粒度不够
  • 缓解做法:把目标区域裁剪出来单独问,等于手工替模型做了定位,往往立刻见效
  • 什么情况不适用:如果任务本身就要求模型自己在整图上定位,裁剪只能算权宜之计,选型时就该找支持细粒度定位的模型

这也能解释为什么同一个模型在不同人手里效果差很多。有人习惯把图直接丢进去问细节,有人会先裁剪再问。后者不是作弊,而是理解了对齐粒度这件事之后的正常操作。

图像进模型后算多少 token:成本和上下文的关系

图像被切成小块之后,每一块在模型眼里就接近一个 token。分辨率越高、切块越多,占的上下文越长,计费和延迟都跟着涨。这是理解多模态成本的第一原则:你付的不只是「一张图」,而是这张图展开后占掉的位置。

但别急着自己算。很多平台会做二次压缩或动态切块,实际消耗跟图片本身的分辨率、长宽比、平台自己的策略都有关。不同平台口径不一样,拿一张图直接跨平台对比是不靠谱的,容易得出错误结论。

  • 图多了会挤占上下文留给对话和输出的位置,长文档加多图时先算清楚图占多少,再决定要不要分轮处理
  • 同一张图,平台预处理策略不同,实际消耗可能差出不少,只能各自测,不能想当然换算
  • 单价折算口径和一张图到底算多少,到站内官方 API 价格与 Token 单价换算页面按当时的数字核对,本文不写死任何数值
  • 控制成本的可执行动作:能裁剪就裁剪、能降分辨率就降、能分轮就别一口气塞满,这三点比换平台更立竿见影

按任务反推:什么样的活该配什么样的多模态能力

选型最怕一句话:「我们要用多模态」。这句话什么信息都没有。正确的顺序是从任务反推能力,再看哪类架构能提供这种能力。下面按四种典型活拆开说。

你的任务重点看什么架构倾向容易踩的坑
只要文字结果,图只是输入源识别稳定性和结构化输出融合深度不是重点拿通用描述能力代替字段识别
跨图比较或图文推理细粒度定位和跨模态推理交叉注意类更合适整图对齐撑不起局部对比
实时语音对话语音编解码和流式输出延迟跟图文融合能力无关把两件事混在一起评
图像或视频生成扩散类模型的独立评价标准另一条技术线拿「同一个多模态」当理由横向比

这张表最有用的地方在最后一行:生成和理解是两条线,评价标准不能混用。见过有人拿理解类模型的表现去推断生成能力,或者反过来,结论基本没用。选型时先把任务归到哪条线,比堆参数重要得多。

  1. 准备三类样本纯识别、跨模态推理、长输入各准备一批来自你真实业务的例子,不要用网上通用图,通用图测不出你的问题
  2. 各跑一遍并记录记录错在哪儿:是整句不对、关键字段不对,还是编造。分数只用来排序,别当成绝对结论
  3. 按结果决定动作错在字段定位就改流程或换支持细粒度的模型;错在长输入就拆轮次;错在数值计算就外接工具,别指望调提示词解决

常见的失灵场景与排查顺序

多模态任务出错,第一反应常常是「换模型」。但按顺序排查下来,相当一部分问题根本不在模型身上。下面这个顺序是按成本从低到高排的,建议照着走。

  1. 先查输入质量图是否模糊、旋转、分辨率被压过头。先把输入这项排除掉,再怀疑模型,这一步能省掉大量无效尝试
  2. 再查粒度整体描述对但局部细节错,通常是切块太粗或对齐粒度不足。裁剪到目标区域再问一次,看是否改善
  3. 再查上下文图多、文长时后面的内容可能被挤掉,表现为答非所问。缩短输入或分步处理,往往立刻见效
  4. 最后查任务类型模型本质是做模式匹配,不是精确计算。涉及数字、表格合计、坐标定位时,串联一个确定性工具比死磕模型划算

有一类情况不该继续调:任务需要严格可复现的数值结果时,多模态模型本来就不适合独立承担。这不是调参能解决的,硬调只会浪费时间和预算。早点把这类活拆给规则引擎或计算工具,反而是更专业的选择。

自己动手的三步小评测:不靠榜单也能判断

榜单能当参考,但口径和你的任务往往对不上。更靠得住的做法是自己搭一个小评测,样本来自你的真实业务,规模不用大,十来条一组就够看出差异。

  • 准备三组样本:单图识别、跨图比较、图加表推理,每组十来个真实业务例子,别用网上通用图
  • 记录四件事:整句对不对、关键字段对不对、有没有编造、耗时是否可接受,分数只用来排序
  • 同一批样本换模型跑,重点看错法是否相同:都错在字段定位,说明任务本身难;只有一家错,才是能力差异
  • 周期性复跑,模型和接口策略都会变,把结果留在本地做纵向对比,比看一次榜单有用
  • 需要横向参考时,到站内多模态模型与 AI 测评榜单看当时的对照数据,注意榜单口径和你自己的任务是否一致

这套评测最大的价值不是给你一个数字,而是让你在出问题时能快速定位到是哪一类任务出了岔子。有了本地记录,下次换模型时你是有依据的,不是凭感觉。

接入之前要确认的几件事

前面讲的是理解,这一节是上线前的清单。这几条看着琐碎,但事后救火的成本远高于提前确认,尤其是多模态这块,接口能力名义和实际开放往往有差距。

  • 确认接口支持你要的输入组合:多图、图加音、图加长文,不少模型名义上多模态,实际只开放一两种组合
  • 确认输出格式能不能强制结构化字段,这直接决定你后处理的工作量
  • 确认单次请求的大小上限和图片张数限制,重活拆成多轮,失败可重试,不要一口气塞满
  • 确认版本变更节奏,多模态模型的输入预处理策略调整得比纯文本模型频繁,上线后要留回归测试
  • 把这四条整理成 checklist,接入前逐条勾掉,比出问题后再回头查接口文档省事得多

最后提醒一句:如果你的场景里,任务会随业务不断变化,那评测样本也要跟着更新。一次性的评测结论很快会过期,保持周期复跑的习惯,比选一个「最好的模型」更实际。

下一步带着你自己的三类样本去跑一轮,再用站内的价格与测评页面核对当时的数字,模型的账要和你的任务对得上才算数。

常见问题

多模态模型和「能上传图片的聊天框」是一回事吗?

不完全是。能传图只说明接口收了图片,关键看模型内部有没有把图像和文本放到同一层做交互。有的产品是先用 OCR 抽文字再交给纯文本模型,看起来也能读图,但涉及位置、图表关系、跨图比较时就会露馅。

为什么同一个模型,整体描述很准,问具体数字就错?

多数多模态模型是整图级别的对齐,擅长说「这是一张账单」,不擅长定位「第三行金额」。想拿准确数值,先把图裁到目标区域再问,或者干脆走 OCR 加规则校验,别指望它一次到位。

多图输入是不是越多越好?

不是。每张图都要占上下文,图多了留给对话和输出的空间就少,模型可能开始忽略靠前的内容。常见做法是先让模型列出每张图的要点,再基于摘要做比较,分两步比一次塞十张稳。

我要判断某个模型算不算真正的多模态,看什么?

看三件事:它支持哪些输入组合、这些组合是同时进模型还是分开处理、有没有公开的跨模态任务评测。站内 多模态模型(/multimodal) 这类页面会把输入输出规格列出来,比看宣传语可靠。

自己搭一套多模态流程,最容易踩的坑是什么?

把图像预处理当成无关紧要的一步。分辨率压缩、旋转、多图拼接方式都会直接影响结果,而且不同平台策略不同。上线前用固定样本做回归,改一次预处理就跑一遍,能省掉大量排查时间。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。