从2023年开始接触大模型多模态,到现在已经三年了。

这三年,多模态大模型发展很快,从最开始只能做简单的图文问答,到现在能理解视频、做复杂推理、生成多模态内容。我也从最开始的兴奋好奇,到中间的踩坑碰壁,再到现在的理性认识。

这篇文章我想总结一下,用了三年大模型多模态,我才明白的一些道理。这些道理,不是从书上看来的,而是在实际使用和开发中,一点点悟出来的。

道理一:多模态不是万能的,它有明确的能力边界

最开始用多模态大模型的时候,我觉得它无所不能。给它一张图片,它什么都能看懂,什么问题都能回答。

但用了一段时间之后发现,不是这样的。多模态大模型有它明确的能力边界。

它擅长的是通用的图像理解,比如描述图片内容、识别常见物体、回答简单的问题。但对于专业领域的图片,比如医学影像、工业缺陷检测、卫星遥感图像,它的表现就很一般了。

它还不擅长精确的计算和测量。比如让它数图片里有多少个人,或者测量两个物体之间的距离,它经常会数错或者量错。

它对文字的理解也有限。图片里的文字,如果比较清晰、比较少,它能识别出来。但如果文字很小、很模糊,或者排版很复杂,它就容易出错。

明白了这个道理之后,我就不再盲目地用多模态大模型了。我会先评估任务是不是在它的能力范围内,如果超出了能力范围,就用传统的计算机视觉方法,或者用专门的模型。

道理二:提示词很重要,但不是最重要的

刚接触多模态大模型的时候,我花了很多时间研究提示词。看了很多"提示词技巧",学了很多"魔法咒语",以为只要提示词写得好,就能让大模型无所不能。

但用了三年之后发现,提示词确实重要,但不是最重要的。

好的提示词,能让模型的输出更符合你的要求,能提升一定的准确率。但提示词的作用是有限的,它不能突破模型本身的能力上限。如果模型本身就理解不了这张图片,你再怎么写提示词,它也理解不了。

比提示词更重要的,是数据和模型。如果你用的是一个能力很强的模型,即使提示词写得一般,效果也不会太差。如果你用的是一个能力弱的模型,提示词写得再好,效果也有限。

还有比提示词更重要的,是对问题的理解。你要清楚地知道,你要解决什么问题,这个问题的难点在哪里,多模态大模型在这个问题上能起到什么作用。想清楚了这些,再去写提示词,效果会好很多。

所以,不要把太多时间花在研究提示词技巧上。把时间花在理解问题、选择合适的模型、准备好的数据上,收益会更大。

道理三:评估比开发更难

做多模态应用的时候,很多人觉得开发是最难的。但我用了三年之后发现,评估比开发更难。

开发一个多模态应用,其实不难。调用一下API,写个前端,就能跑起来。但怎么评估这个应用的效果好不好,就很难了。

纯文本的大模型,评估相对简单,可以用准确率、BLEU、ROUGE等指标。但多模态的评估,要复杂得多。

首先,多模态的输出往往是开放的。同样一张图片,不同的人可能有不同的描述,没有标准答案。你很难说哪个描述是对的,哪个是错的。

其次,多模态涉及到视觉和语言的对齐。模型是不是真的理解了图片,还是只是在猜,很难判断。有时候模型看起来回答得很对,但实际上它根本没看懂图片,只是根据语言模式在瞎编。

最后,多模态的评估很依赖人工。很多时候,你需要人去看图片、看模型的输出,然后判断好不好。这很费时间,也很费钱。

这三年,我在评估上花的时间,比在开发上花的时间多得多。我建了评估集,设计了评估指标,做了人工标注,还尝试了用大模型来自动评估。但直到现在,我也不敢说我们的评估体系很完善。

所以,如果你要做多模态应用,一定要在评估上多花时间。没有好的评估,你就不知道自己的产品好不好,也不知道优化有没有效果。

道理四:数据质量决定了上限

做多模态应用,数据是最重要的。

不管是微调模型,还是做RAG(检索增强生成),数据的质量都决定了效果的上限。

我见过很多团队,花了很多钱买大模型API,花了很多时间调参数,但就是不重视数据。数据乱七八糟,有很多错误和噪音,效果当然好不了。

好的数据,应该是准确的、相关的、干净的。准确,就是数据里的信息是正确的,没有错误。相关,就是数据和你的任务是相关的,不是无关的。干净,就是数据里没有噪音,格式统一。

准备数据是一件很枯燥的事情,很多人不愿意做。但它是最有价值的事情。数据准备好了,后面的事情都会顺利很多。

这三年,我最大的教训就是,不要在数据上偷懒。花时间清洗数据、标注数据、整理数据,绝对是值得的。

道理五:不要追求端到端,要学会拆解问题

刚接触多模态大模型的时候,我总想着用一个大模型端到端地解决所有问题。给它一张图片,让它直接输出最终的结果。

但后来发现,端到端的效果往往不好。因为一个复杂的任务,包含了很多子任务,大模型不可能每个子任务都做得很好。

更好的方法是,把复杂的任务拆解成多个子任务,每个子任务用最合适的方法来解决。

比如,做一个商品图片审核的任务。不要直接让大模型判断这张图片合不合规。可以先把任务拆解成:先检测图片里有没有人脸,再检测有没有文字,再识别文字内容,最后综合判断。每个子任务,可以用专门的模型来做,效果会比端到端好很多。

拆解问题还有一个好处,就是可解释性强。端到端的模型,你不知道它为什么这么判断。但拆解之后,每个步骤的结果都是可见的,出了问题也容易排查。

所以,不要迷信端到端。学会拆解问题,把复杂的任务变成简单的子任务,然后逐个解决,这才是工程上靠谱的做法。

道理六:传统的计算机视觉没有过时

大模型多模态火了之后,很多人觉得传统的计算机视觉过时了,什么都想用大模型来做。

但我用了三年之后发现,传统的计算机视觉不仅没有过时,在很多场景下,它比大模型更好用。

比如,目标检测、图像分割、OCR这些任务,传统的模型已经做得很成熟了,准确率高,速度快,成本低。用大模型来做这些任务,不仅效果不一定更好,而且速度慢,成本高。

大模型的优势,是在理解和推理层面。它能理解图片的语义,能回答复杂的问题,能做一些需要常识和推理的任务。但在底层的视觉任务上,传统模型依然是首选。

所以,正确的做法是,把传统计算机视觉和大模型结合起来。用传统模型做底层的视觉处理,用大模型做高层的理解和推理。这样,既能保证效率和成本,又能利用大模型的理解能力。

道理七:成本和性能永远是矛盾的

做多模态应用,永远要在成本和性能之间做权衡。

能力强的模型,效果好,但贵,速度慢。能力弱的模型,便宜,速度快,但效果差。你不可能既要效果最好,又要成本最低、速度最快。

这三年,我一直在做这种权衡。有些场景,对效果要求高,对成本不敏感,就用好的模型。有些场景,对成本敏感,对效果要求不高,就用便宜的模型。

还有一个方法是,用级联的方式。先用便宜的模型处理大部分简单的情况,只有遇到复杂的情况,才用好的模型。这样,大部分请求都用便宜的模型,只有少部分用贵的模型,整体成本就降下来了。

成本控制是一个长期的工作。随着用户量的增长,成本会越来越重要。要从一开始就关注成本,不要等成本失控了才想办法。

道理八:用户体验比模型能力更重要

做产品的时候,很多技术人会陷入一个误区,就是只关注模型能力,觉得模型越强,产品就越好。

但实际上,用户体验比模型能力更重要。

用户不关心你用的是什么模型,有多少参数。他们关心的是,这个产品好不好用,能不能解决他们的问题,用起来顺不顺手。

一个模型能力一般,但用户体验很好的产品,往往比一个模型能力很强,但用户体验很差的产品,更受欢迎。

比如,模型的响应速度很重要。如果用户问一个问题,要等十几秒才出结果,即使结果很准确,用户也会觉得不好用。反过来,如果一秒钟就能出结果,即使结果稍微差一点,用户也会觉得好用。

还有错误处理也很重要。模型总会出错,关键是出错的时候,产品怎么处理。是给用户一个友好的提示,让用户知道出了什么问题,还是直接崩溃或者给出莫名其妙的结果。这两种体验,天差地别。

所以,做产品的时候,不要只盯着模型能力。要多花时间在用户体验上,让产品用起来更顺畅、更友好。

道理九:多模态的未来是多模态,但现在还在早期

用了三年多模态,我对它的未来很看好,但也清楚地知道,它现在还在早期阶段。

现在的多模态大模型,还有很多不足。比如,理解能力还不够强,经常会犯一些低级错误;推理能力还不够,复杂的问题解决不了;效率还不够高,速度慢,成本高;可靠性还不够,输出不稳定。

但它的发展速度很快。三年前,多模态大模型还只能做简单的图文问答。现在,已经能理解视频、生成多模态内容、做复杂的推理了。按照这个速度发展,再过三年,一定会有更大的进步。

我相信,未来多模态大模型会越来越强,会渗透到更多的领域,会改变我们和计算机交互的方式。但在那之前,我们还要经历很长的发展过程。

所以,既要对未来有信心,也要对现状有清醒的认识。不要盲目乐观,也不要轻易否定。踏踏实实地做好当下的事情,等待技术的成熟。

写在最后

三年时间,说长不长,说短不短。在这三年里,多模态大模型从一个新鲜事物,变成了很多产品的基础能力。我也从一个初学者,变成了一个有一些经验的从业者。

这些道理,都是我在实践中一点点悟出来的。它们可能不是什么高深的理论,但都是真实的经验。希望能给正在做多模态的朋友一些参考。

技术在发展,我们的认知也要跟着发展。保持学习,保持实践,保持思考,才能在这个快速变化的领域里,不被淘汰。

最后用一句话来结束这篇文章:"技术的发展是螺旋上升的,我们能做的,就是在每一个阶段,做对的事情。"

愿每一个做AI的人,都能在技术的浪潮中,找到自己的方向。